SELinux(Security-Enhanced Linux) はlinux セキュリティモジュール(LSM)を使用して 2.6.x カーネルに組み込まれたセキュリティアーキテクチャです。これは、米国 National Security Agency (NSA) と SELinux コミュニティのプロジェクトです。NSA と Red Hat の共同努力で SELinux を Red Hat Enterprise Linux に組み込むことが出来ました。
SELinux は Linux カーネルに組込まれた柔軟な mandatory access control (MAC)システムを提供します。標準の Linux では、discretionary access control (DAC)であり、ユーザー(UID 又は SUID)として動作しているアプリケーションあるいはプロセスは、ファイル、ソケット及び他のプロセス等のオブジェクトに対しユーザーの権限を持ちます。SELinux を実行している場合には、MAC カーネルがシステムを故障あるいは破損させるような悪意をもったり、欠陥のあるアプリケーションからシステムを保護します。SELinux はシステム上の全てのユーザー、アプリケーション、プロセス、及びファイルのアクセス権と移動権を定義します。そして、稼働中の Red Hat Enterprise Linux インストールがどの程度厳格か容認かを指定するセキュリティポリシーを使用して、これらのサブジェクト と オブジェクト間の交流を監視します。
多くの部分で、SELinux はシステムユーザーにとってはほとんど完全に見えません。システム管理者のみがそのサーバー環境の為に実施するポリシーの厳格度に注意するだけです。このポリシーは必要に応じて厳格であったり、容認であったりし、非常に細かく区分されます。この詳細区分は SELinux カーネルに対して完全で大規模な制御を全システムに与えます。
アプリケーションなどのサブジェクトがファイルなどのオブジェクトにアクセスを試みようとした場合、カーネル内のポリシー執行サーバーがaccess vector cache (AVC)をチェックします。ここで、サブジェクトとオブジェクトの権限がキャッシュされます。AVC のデータで決定が出来ない場合は、要求がセキュリティーサーバーへ継続し、そのサーバーはアプリケーションとマトリックス内のファイルのセキュリティ条項を調べます。権限は、そこで/var/log/messagesに詳細のあるavc: deniedメッセージと共に認可又は否定されます。ポリシーがセキュリティサーバーのマトリックスを充填する情報を提供します。サブジェクトとオブジェクトはインストールされたこのポリシーからセキュリティ条項を取得します。
執行モードで稼働することに加えて、SELinux は容認モードでも稼働することができます。このモードでは AVC がチェックされ、詳細がログされますが、SELinux はポリシーを執行しません。
SELinux の動作についての詳細は 項21.3を参照して下さい。