第8章 カスタム SELinux ポリシーの作成
カスタム SELinux ポリシーを作成して使用して、アプリケーションの動作範囲を制限し、ホストシステムのセキュリティーを向上させることができます。カスタムポリシーは、アプリケーションの要件に合わせてカスタマイズされた、正確なアクセスルールを定義します。
8.1. カスタム SELinux ポリシーおよび関連ツール リンクのコピーリンクがクリップボードにコピーされました!
カスタム SELinux セキュリティーポリシーには、プロセスとシステムリソース間の相互作用を制御するルールが含まれています。カーネルはこのポリシーを強制するため、定義されたルールで明示的に許可されていないすべてのアクセス要求を拒否します。
SELinux セキュリティーポリシーは、SELinux ルールのコレクションです。ポリシーは、SELinux の中核となるコンポーネントで、SELinux ユーザー空間ツールによりカーネルに読み込まれます。カーネルは、SELinux ポリシーを使用して、システム上のアクセス要求を評価します。デフォルトでは、SELinux はロードされたポリシーで指定されたルールに一致するリクエストを除き、すべてのリクエストを拒否します。
各 SELinux ポリシールールは、プロセスとシステムリソースとの対話を説明します。
ALLOW apache_process apache_log:FILE READ;
このルールの例は、Apache プロセスは ログファイル を 読み取る ことができる と解釈できます。このルールでは、apache_process と apache_log が labels になります。SELinux セキュリティーポリシーは、プロセスにラベルを割り当て、システムリソースに関係を定義します。これにより、ポリシーはオペレーティングシステムエンティティーを SELinux レイヤーにマッピングします。
SELinux ラベルは、ext2 などのファイルシステムの拡張属性として保存されます。getfattr ユーティリティーまたは ls -Z コマンドを使用すると、これをリスト表示できます。以下に例を示します。
$ ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd
ここでの system_u は SELinux ユーザーで、object_r は SELinux ロールの例になります。passwd_file_t は SELinux ドメインです。
selinux-policy パッケージが提供するデフォルトの SELinux ポリシーには、Red Hat Enterprise Linux の一部であるアプリケーションおよびデーモンのルールが含まれ、リポジトリーのパッケージにより提供されます。このディストリビューションポリシーに記載されていないアプリケーションは、SELinux によって制限されません。これを変更するには、追加の定義とルールを含むポリシーモジュールを使用してポリシーを変更する必要があります。
Red Hat Enterprise Linux では、sepolicy ツールを使用して、インストールされている SELinux ポリシーを照会したり、新しいポリシーモジュールを生成したりできます。sepolicy がポリシーモジュールとともに生成するスクリプトには、必ず restorecon ユーティリティーを使用したコマンドが含まれています。このユーティリティーは、ファイルシステムの選択した部分で問題のラベル付けを行う基本的なツールです。
詳細は、お使いのシステムの sepolicy(8) および getfattr(1) の man ページを参照してください。