Fedora CoreでのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。最終回は,2007年初頭の本原稿執筆時点で開発進行中の機能を紹介する。

 SELinuxは現在も活発に開発が進められている。今回は,連載の締め括りとして,現在開発中の最新機能の概要を表1に沿って紹介していく。

表1●開発進行中のSElinuxの機能
表1●開発進行中のSElinuxの機能
[画像のクリックで拡大表示]

Fedora Coreに取り込まれた機能

 連載第2回で紹介したように,SELinuxの開発は,Fedora Coreと密接に関係して行われている。米Red Hat社がSELinuxの開発に強く寄与しているからだ。そのため,開発中のSELinuxの新機能が完成に近づくと,Fedora Coreに取り込まれてテストされることが多い。

 最新の「Fedora Core 6」にも,新機能が取り込まれている。より簡単にSELinuxを設定したり使えたりできるように「setroubleshoot」や「system-config-selinux」というツールが取り込まれているほか,ホスト同士の通信の安全性を高める機能「secmark」(別掲記事「iptablesを利用する『secmark』」を参照)も取り込まれている。

iptablesを利用する「secmark」

 secmarkとは,SELinuxに実装されつつある新しいネットワーク・アクセス制御の仕組みである。Linuxのパケット・フィルタリング機能「iptables」を利用するのが特徴だ。通常のiptablesの主な仕事は,送信元アドレスなどを利用してパケットをフィルタリングすることである。secmark用に拡張されたiptablesは,送信先アドレスやポート番号などに基づいて,パケットにSELinuxのタイプを付与できる。その上でSELinux側では,タイプに基づいてパケットを受信するか否かといったようなアクセス制御を行う。

 これにより,ネットワーク上のホスト同士の通信の安全性を高められる。例えば,ホストAとホストBが通信するとしよう。この際,ホストAのApache(Webサーバー)からホストBにパケットを送信する場合,secmarkにより,「信頼できるパケット」を意味するようなタイプを設定できる。具体的には,「trusted_packet_t」というようなタイプを付与できる。ホストBがパケットを受信する際は,「trusted_packet_tタイプが付与されたパケットだけしか受信しない」という設定をSELinuxに施すことで,信頼できないパケットの流入を防止できる。ただし,ホストAからホストBのパケットが第三者に改ざんされると無意味であるため,IPSecなどの暗号化機構と併用する必要がある。

 2007年1月上旬時点のFedora Core 6では,は,カーネル部分のみが実装されている。iptablesコマンドに対する拡張は取り込まれていないが,今後のアップデートで取り込まれる可能性が高い。

 secmarkについての詳しい情報は,中心開発者であるJames Morris氏のブログ(http://james-morris.livejournal.com/11010.html)を参照してほしい。

問題解決ツールのsetroubleshoot

 通常,SELinuxが原因でアプリケーションが動作しない場合には,手作業でログを解析したり,設定を変更したりして問題を解決する必要がある。setroubleshoot*1は,SELinuxが原因でアプリケーションが動作しないトラブルの対応方法*2を表示するツールである。

 通常,SELinuxが原因でアプリケーションが動作しない場合,SELinuxのアクセス拒否ログが出力される。setroubleshootは,このログを解析し,どうすれば問題を解決できるかを自動表示する。

 動作例を見てみよう。SELinuxには,mvコマンドでWebページのファイルをアップロードすると,Apache HTTP Serverでそのファイルを公開できない(Webサーバーからのアクセスが拒否される)という問題がある。解決するには,restoreconコマンドを実行する必要がある。

 setroubleshootが組み込まれたシステムでは,アクセス拒否によりWebページが公開できなかった時点で,デスクトップに写真1のような星型のアイコンが表示される。このアイコンをクリックすると,写真2のように,トラブルの概要と解決策が表示される。この例では,「Allowing Access」に「restorecon -R /var/www/html」コマンドで解決できると記されている。

写真1●星型のアイコン
写真1●星型のアイコン

写真2●トラブルの概要と解決策の表示例
写真2●トラブルの概要と解決策の表示例
[画像のクリックで拡大表示]

 なお,setroubleshootは,デフォルトではインストールされない。「yum install setroubleshoot」を実行して,別途インストールする必要がある*3

GUIのsystem-config-selinux

 system-config-selinuxは,SELinuxの管理をGUIで操作できるツールだ。デフォルト(初期設定)ではインストールされないので「yum install policycoreutils-gui」を実行して別途インストールする必要がある。

 「システムv→「管理」→「SELinux Management」を選択して起動できる(写真3)。この画面より,SELinuxのモードの切り替え,booleanパラメータの切り替え,タイプ付与設定,MCSに関する設定などが行える。

写真3●system-config-selinuxの画面例
写真3●system-config-selinuxの画面例
[画像のクリックで拡大表示]