第3回 基本操作とポリシーファイルの設定SELinuxで強化するソリューション(2/3 ページ)

» 2005年03月25日 17時47分 公開
[佐々木 生弥(サイボウズ),ITmedia]
ポリシーの設定

 Turbolinux 10 serverには、Fedora Core 3と同様、strictポリシーとtargetedポリシーというセキュリティレベルが異なる2種類のポリシーが用意されている。strictポリシーが、これまでのSELinux(Fedora Core 2など)のポリシーと同等の厳密なセキュリティレベルなのに対し、targetedポリシーは、特定のデーモンのみに制限を加えていくもので、セキュリティレベルは落ちるが設定が容易で利便性を重視したポリシーとなっている。Turbolinux 10 serverはデフォルトでstrictポリシーのSELinuxが立ち上がる。これはリリースされたばかりのRed Hat Enterprise Linux 4でも同様である。

 実際の運用環境ではセキュリティレベルを重視する必要があるため、strictポリシーで運用することになるだろう。ポリシーの変更方法は、モードの変更と同様、/etc/sysconfig/selinuxファイルの「SELINUXTYPE=」ディレクティブでモード(strictまたはtargeted)を指定し、サーバを再起動する。ここではstrictモードで動作しているものとして説明する。

ポリシーファイルとは

 SELinuxのアクセス制御は、ポリシーファイル(以下ポリシー)に記載された権限をプロセスに許可することで行われる。ポリシーの設定は非常に複雑なため敬遠されがちだが、ディストリビューション側の対応も進み、現在は、ApacheやBINDをはじめ、基本的なサービスのポリシーは整備されてきており、あらかじめ用意されたポリシーに簡単な設定を追加する程度で動作する。

 また、Fedora Core 2などでは、ポリシーの設定を行うためにポリシーのソースファイルを別途インストールする必要があった。Turbolinux 10 serverでは、あらかじめポリシーのソースファイルが用意されているため、OSのインストール直後にポリシーを設定できる。すべての権限を1から設定していては膨大な労力が掛かるため、基本的にはあらかじめ用意されたポリシーのサンプルをカスタマイズして使用する。

ポリシーファイルのディレクトリ構成

 /etc/selinux/以下にはstrictとtargetedディレクトリが存在し、それぞれのポリシーファイルが格納されている。図1は、etc/selinux/strict以下のディレクトリ構成だ。このうち、ポリシーの設定で特に重要なのは、domainsディレクトリ、file_contextsディレクトリである。以下、それぞれについて説明する。

図1 図1 ポリシーのディレクトリ構成(クリックで拡大)
  • domainsディレクトリ

 TE、ドメイン遷移の設定ファイル(「.te」という拡張子のファイル)が格納されているディレクトリ。admin.te、user.teファイルに、各ユーザーのロールに付与されるドメインの設定が記述されている。programディレクトリ以下には、アプリケーションごとに設定ファイルが用意されている。

  • file_contextsディレクトリ

 リソースに対するタイプ付けの設定ファイル(「.fc」という拡張子のファイル)が格納されているディレクトリ。types.fcファイルには、システムファイル関連のタイプ付けの設定が記述されている。programディレクトリ以下には、アプリケーションごとにファイルのタイプ付けが記述された設定ファイルが用意されている*

  • policy.18ファイル

 「.te」ファイルの内容がバイナリ形式に変換されたファイル。TE、ドメイン遷移、RBACの設定が記述されている。SELinuxモジュールのアクセス制御は、policy.18ファイルと後述する file_contextsファイルを参照して行われる。

アプリケーションのポリシーファイル
 domainsディレクトリおよびfile_contextsディレクトリ以下のアプリケーションに関するポリシーファイルは依存関係がある。仮にdomains/program/以下に「.te」ファイルを追加した場合、file_contexts/program/以下にも同一ファイル名で「.fc」ファイルを作成する必要がある。片方のファイルが存在しない場合、設定反映時にエラーとなるので注意が必要だ。


ポリシーの設定

 前述のように、最近のSELinuxではアプリケーションのポリシーが整備されてきた。SELinuxが有効(enforcingモード)な状態で、アプリケーションが問題なく動作する場合は、適切なポリシーが設定されている。この場合、あえてポリシーをカスタマイズする必要はないだろう。主に、Apache、sendmail、BINDなどがこれに該当する。

 しかし、すべてのアプリケーションのポリシーがあらかじめ用意されているわけではない。また、用意されているポリシーにはそのままでは設定が不十分なものも多いので手を加えていく必要がある。主に、Postfix、vsftpd、PHPなどがこれに該当する。

 では、実際にアクセス拒否されたログの内容をもとに、アクセス許可の設定を追加してみよう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ