本講座では,Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて,分かりやすく解説する。今回は,ポリシーを変更せずにトラブルを解決したり,セキュリティ・レベルを調整したりするのに役立つbooleanパラメータを説明する。

 今号から,SELinux上でサーバー・アプリケーションを安全かつ確実に動作させるための実践的なノウハウを紹介していく。

 今回と次回は,ポリシー・ファイルを編集せずにSELinuxの設定を調整することで,トラブルを解決したりセキュリティ・レベルを変更したりする方法を説明する。前回に紹介した「SELinuxを学ぶステップ」のレベル2に相当する内容である。

 なお,本記事の内容はFedora Core 5(2006年5月初旬にアップデート済み)で動作を確認している。

システム運用時の留意点

 SELinuxを有効にしたシステムを運用するときに重要なのは,次の2点である。

(1)プロセスに適切なドメインが割り当てられることを確認する。

(2)トラブル発生時に,SELinuxが原因か否かを切り分けて解決する。

 (1)については,前回に紹介した「ps -eZ」コマンドを用いてドメインを確認し,プロセスに適切なドメインが割り当てられていることを確認する。参考までに,主要なサーバー・アプリケーションの動作ドメインを表1に示す。特に,PHPとCGIには注意してほしい。

表1●主要なサーバー・アプリケーションに付与されるドメイン
表1●主要なサーバー・アプリケーションに付与されるドメイン
[画像のクリックで拡大表示]

 今回は,(2)で掲げたトラブルの解決方法を中心に紹介する。

permissiveモードでの原因究明法

 Fedora Core 5では,公開直後から,SELinuxに関連したさまざまなトラブルが報告されている。こうしたトラブルに対処するための第一歩は,トラブルが直接SELinuxに起因するものなのか,そのほかに起因するものなのかをはっきりさせることである。

 何かしらのトラブルが発生した場合は,SELinuxをpermissiveモードに切り替えて,同じトラブルが再現するかを確認する。もし,permissiveモードにして正常に動作するなら,トラブルがSELinuxに起因する可能性が極めて高い。permissiveモードでも動作しなければ,アプリケーション側に問題がある可能性が高い。

 理解を深めるために,Sambaのトラブル事例を見てみよう。Fedora Core 5において,Sambaを用いてユーザーのホーム・ディレクトリを共有させてWindowsマシンからアクセスする*1。すると,共有したホーム・ディレクトリを開くときに「パーミッションが足りない」という趣旨のエラーが出る。

 この原因を追求するために,次のようにして,permissiveモードに切り替えよう。


# setenforce 0 
# getenforce
Permissive

 permissiveモードに切り替えてから,もう一度,Windowsマシンからユーザーの共有ディレクトリにアクセスしてみよう。今度は問題なくアクセスできる。このことからトラブルの原因がSELinuxにあると判断できる。もしpermissiveモードでもアクセスできなければ,SELinux以外,つまりSamba自体かファイアウオール(iptables)の設定に問題があることになる。