話題のさくらのVPSを借りた。すでにレビューや初期設定に関する情報は他にたくさんあるので、ここでは少々マニアック(?)な話題を。 KVMならディスクやNICは virtio だとおもったら、ここは完全仮想化(ゲストの汎用性を考えて?)。
さて、せっかくCentOS5で完全仮想化なのに、SELinuxが無効化されているのはもったいない。 SSHのアクセス制限等の基本的な設定が終わってから、すぐにSELinuxを有効にすることにした。
まず、初期状態でもラベルはある程度ついているが、怪しいのでこれは再ラベル必要か。
# ls -lZ / drwxr-xr-x root root system_u:object_r:bin_t:s0 bin drwxr-xr-x root root system_u:object_r:boot_t:s0 boot drwxr-xr-x root root dev drwxr-xr-x root root system_u:object_r:etc_t:s0 etc drwxr-xr-x root root system_u:object_r:home_root_t:s0 home drwxr-xr-x root root system_u:object_r:lib_t:s0 lib drwxr-xr-x root root system_u:object_r:lib_t:s0 lib64 drwx------ root root lost+found drwxr-xr-x root root system_u:object_r:mnt_t:s0 media drwxr-xr-x root root system_u:object_r:mnt_t:s0 misc drwxr-xr-x root root system_u:object_r:mnt_t:s0 mnt drwxr-xr-x root root system_u:object_r:usr_t:s0 opt dr-xr-xr-x root root proc drwxr-x--- root root root:object_r:user_home_dir_t:s0 root drwxr-xr-x root root system_u:object_r:sbin_t:s0 sbin drwxr-xr-x root root system_u:object_r:file_t:s0 selinux drwxr-xr-x root root system_u:object_r:var_t:s0 srv drwxr-xr-x root root sys drwxrwxrwt root root system_u:object_r:tmp_t:s0 tmp drwxr-xr-x root root system_u:object_r:usr_t:s0 usr drwxr-xr-x root root system_u:object_r:var_t:s0 var
ということで、次回起動時にラベルの再付与できるように。
# touch /.autorelabel
その際はPermissiveモードで起動できるように、/etc/selinux/config を書き換えておく。
#SELINUX=disabled SELINUX=permissive
再起動すると起動中にラベルが再付与される。コントロールパネルのリモートコンソールで次のようなメッセージを確認。
*** Warning -- SELinux targeted policy relabel is required. *** Relabeling could take a very long time, depending on file *** system size and speed of hard drives. /sbin/setfiles: labeling files under / ********************************************
ログインしてPermissiveモードになっていることを確認。
# getenforce Permissive
続いて、SSHのポートを変えてみよう。安全にSSHを使うために、接続元の制限や公開鍵認証をするのは当然として、あわせてポートも変えておきたい。このようなサービスのポートを変更するのはSELinuxのポリシに違反するので、対応が必要。例として 10022 番ポートにする(本当はもっとわかりにくいものを設定している)。これで /etc/ssh/sshd_config でポートを変更してもsshdを立ち上げることができる。
# semanage port -a -t ssh_port_t -p tcp 10022
sermanage コマンドで ssh_port_t タイプのポートで 10022 が追加されていることを確認。
# semanage port -l|grep ssh ssh_port_t tcp 10022, 22
さくらのVPSでは標準では auditd が起動していないので、SELinuxに関するログは /var/log/messages や dmesg で確認ができる。ログを確認して問題がないようであれば、Enforcingモードに切り替える。
# setenforce 1 # getenforce Enforcing
起動時にEnforcingモードとなるように、 /etc/selinux/config も書き換える。
#SELINUX=disabled #SELINUX=permissive SELINUX=enforcing
これで再起動して動作に問題がなければOK。さくらのVPSの場合、リモートコンソールがあるので、万一SELinuxの設定をミスして起動できなくなっても安心(GRUB で enforcing=0 すればよい)。
SELinuxを有効にしたからセキュリティは万全というわけでもないし、運用も面倒だったりするのだけど、何もしないよりは安心できる気がする。
自分が設定したサーバを他人へ提供する場合、SELinuxの運用は難しい。例えば、初期状態ではWebアプリケーションがDBに接続したり、ネットワークを介して外部へ接続することすらできない。かといって、httpd_t に対して何でも許可してしまうと、SELinuxを有効にしている意味が薄れるので、ユーザが何をしたいのかをすべて把握する必要がある。それに対して、自分が使うサーバであれば、好きなように設定ができる。
わからずにSELinuxを有効にしていると「ホームディレクトリから移動したファイルがApacheで表示できない」「ポートを変更したらサービスが起動しない」「DocumentRoot を変更したらApacheが起動しない」「FTPでファイルが転送できない」なんてことになるので、SELinuxが悪者扱いされることが多いのは残念。
- Posted at 2010-09-14 16:54:06
- server
このエントリへのトラックバック
spamが増えたためトラックバック機能は停止中です。
このエントリへのコメント
spamが増えたためコメント機能は停止中です。