2005年02月27日

Red Hat Enterprise Linux 4.0 SELinux編

SELinuxについて、つらつらと。。。

●各デーモンの設定具合
では、本題のSELinuxが、どのくらい設定されているか確認。
(Zオプションで、SELinuxのドメインが表示されます。
 unconfined_tというドメインは、全てOKというSELinux無効モードです。)

# ps -eZ
・unconfined_t以外のドメインが設定されている物
named,ntpd,postgres,mysql,apache,syslogd,snmpd,squid

と、基本的な物は、SELinuxで設定されているようです。

が、sendmailなどのメール系は、設定されていない模様。
それに、あまり使用しないような物も、設定されていません。

この手のセキュリティー系は、全てに対して設定しなければ、意味がない
ため、このままでは、無意味としか言いようがないでしょう。
(セキュリティーは、一カ所でも破れれば、OKですからね。
 侵入時に、全てのドアや窓の鍵を破る泥棒はいないのと同じです。)


●各アプリの設定具合
続いて、どのくらい強固な設定となっているか、設定ファイルをのぞいて
みようと思います。
今回の題材は、ネットにいっぱい情報が転がっているapacheちゃんです。

・各ディレクトリに割り振られたドメイン
/etc/selinux/targeted/src/policy/file_contexts/program/apache.fc
・各ドメインの権限
/etc/selinux/targeted/src/policy/domains/program/apache.te

二つのファイルが、連携して、各ディレクトリやファイルに対し、権限操作を行って
います。

「apache.fc」に、どのディレクトリやファイルにどのドメインを割り振るかを記述し、
「apache.te」に、どのドメインが、どんな権限(書き込み権や実行権など)を持って
いるかを記述します。

これをのぞいてみると、、、

読み込み用、スクリプト実行用、ログ用、コンフィグ用

など、いろいろロールに分かれており、良さそうに見えなくもないのですが、
実際には、「httpd_tドメイン」には、書き込み権など強力な権限が割り当て
られていますので、実環境にあわせて、もう少し権限を絞る必要があると
思います。


●まとめ
といったように、全体的に利便性重視の甘い設定がされているようです。

実は、それもそのはずでして、現在のポリシーは、「targeted」というものに
なっています。
このポリシー自体が、利便性重視なのです。

そのため、セキュリティー重視の「strictポリシー」という物があり、こちらを
利用すると、とてもがちがちな設定をしてくれるようですが、動かなくなる
アプリが続出すると思われますので、すべて、正常動作させるようにするには
かなり、根気のいる作業となります。
しかし、そうした場合、かなりのセキュリティー(TCSEC(米国のセキュリティ
評価基準。通称オレンジブック)でB1レベル相当)を、実現できるはずです。


●感想
個人的な感想としましては、「strictポリシー」で動作させる気がないのだったら
素直に、Offにしておいた方がよいように思います。

通常、サーバをたてるときには、開発したアプリをインストールしたり、メール
サーバなどを動かしたりすると思いますので、デフォルトの設定のまま使用する
可能性はほとんど無いと思われるためです。


●おまけ

ちなみに、設定法の基本は、下記のパターンで、設定していくことになります。
もう、気が遠くなりそうですよね。。。

1,「setenforce 0 」で、「permissiveモード」というSELinuxのアクセス制御を
 無効にするモードで、動作確認をする。

2,「setenforce 1 」で、SELinuxのアクセス制御を有効にして、再度、動作確認を
 する。

3,動かない場合には、SELinuxのアクセス制御(*.fc,*.te)を再度設定する。
 「ドメインがどんなファイル・リソースにアクセスできるか」ですので、
 考え方はより詳細に制御できるパーミッション管理と変わりません。
 一つずつ、潰していけば、必ず、設定できるはずですので。

Creative Commons License
This weblog is licensed under a Creative Commons License.