Fedora Core6におけるSELinuxの強化点──活発に開発が進むSELinux(2/2 ページ)

» 2006年11月24日 08時00分 公開
[中村雄一(日本SELinuxユーザー会),ITmedia]
前のページへ 1|2       

Secmark

 Fedora Core 6 SELinuxのもう1つの新機能が「secmark」である。現時点ではカーネルのみの対応で、ユーティリティもそろっておらず、実際に使えるようになっていないが、今後のアップデートで使えるようになる可能性が高い機能である。ここでは、機能の概要を紹介しよう。

 secmarkは、パケットにラベルを付与することで、きめ細かいネットワークアクセス制御を実現するための機能である。従来のSELinuxでは、IPアドレス、ポート番号を使ったアクセス制御ができたが、これらを組み合わせたアクセス制御ができなかった。例えば、「Apacheは、IPアドレス192.168.0.5にアクセスできる」、「ApacheはMySQLのポート番号(TCP3306番)にアクセスできる」といった設定は可能であったが、「Apacheは、IPアドレス192.168.0.5のMySQLポートにだけアクセスできる」という設定はできなかった。

 今回のsecmarkにより、IPアドレスとポート番号を組み合わせた設定を行えるようになる。iptablesとSELinuxが拡張されており、iptablesでタイプ・ラベルを付与し、SELinuxでそのタイプを使ってアクセス制御する。例とともに、仕組みを見てみよう。図4は、Apacheが、192.168.0.5にあるMySQLサーバ(ポート番号TCP3306)にアクセスしようとしている例だ。

図4 図4:secmarkの例。ApacheがMySQLサーバにパケットを送信している
  1. Apacheが、パケットを送信する
  2. iptablesがパケットにSELinuxのタイプ・ラベルを付与する。ラベル付与のルールは、iptablesコマンドを使って行える。今回は、「あて先が192.168.0.5、TCP3306のパケットにmysql_A_tというタイプを付与する」と設定している
  3. パケットに「mysql_A_t」タイプが付与された。これがSELinuxに渡る
  4. SELinuxは、パケットのラベルを使ったアクセス制御を行う。今回は、「allow httpd_t mysql_A_t {send}(httpd_tはmysql_A_tタイプが付与されたパケットを送信できる)」とポリシーファイルに記述されている。従って、パケットは無事ネットワークに送信される。ポリシーファイルで許可されないパケットが来た場合は、パケットはネットワークに送信されない

 現段階のFedora Core6では、iptablesコマンドでラベル付与設定できるようになっていないため、secmarkをまだ使えない状態だ。しかし、iptablesコマンドの開発版がRedhat開発者のサイトで公開されており(関連リンク参照)、これが今後のアップデートで入ってくることが予想される。

 なお、記事執筆時点ではここで公開されているパッケージはバグを含んでいるため、iptables-1.3.5-2.src.rpmに含まれるソースファイルをコンパイルする必要がある(以下はrootユーザーの手順)。


# rpm -i iptables-1.3.5-2.src.rpm
# cd /usr/src/redhat/
# rpmbuild -bi SPECS/iptables.spec

 ソースファイルのコンパイルが終了すると、BUILD/iptables-1.3.5/extensions以下にlibipt_SECMARK.so, libipt_CONNSECMARK.soが生成されているので、これを/lib/iptables以下にコピーすればよい。

今後も活発なアップデートが予想される

 Fedora Core 6でのSELinux関連パッケージは活発なアップデートが予想される。実際、Fedora Core 6のリリース後、一週間も経たないうちに、SELinux関連のパッケージのアップデートが公開されている。過去のFedora Coreの場合は、アップデートにバグフィックスだけでなく、新機能まで盛り込まれることがあり、ユーザーにも多少混乱が見られた。大きな変更があった場合は、SELinuxユーザー会のメーリングリストにもアナウンスされることが多いので、参考にしていただきたい。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ