1.4. SELinux のアーキテクチャーおよびパッケージ
SELinux カーネルサブシステムはセキュリティーポリシーを適用し、systemd デーモンはアクセス制御を強化してシステムサービスを保護します。SELinux のインストールとメンテナンスに必要なパッケージを特定し、管理に必要なユーティリティーが揃うようにします。
SELinux は、Linux カーネルに組み込まれた Linux Security Module (LSM) です。アクセスを制御するために、ユーザーが管理するセキュリティーポリシーを適用します。SELinux はアクセス要求を傍受し、ロードされたポリシーと照合してチェックします。ポリシーが要求を許可している場合、SELinux はそのアクションを許可します。そうでない場合、SELinux はその操作をブロックし、エラーを報告します。
SELinux は、アクセスを許可するか拒否するかといった決定事項を、Access Vector Cache (AVC) にキャッシュします。このキャッシュは、ポリシー規則のチェック回数を減らすことでパフォーマンスを向上させます。SELinux のポリシー規則は、任意アクセス制御 (DAC) 規則によって先にアクセスが許可された場合にのみ適用されます。SELinux は type=AVC 識別子を使用して監査メッセージを /var/log/audit/audit.log にロギングします。
RHEL 10 では、systemd デーモンがシステムサービスを管理します。systemd はすべてのサービスを開始および停止し、ユーザーとプロセスは systemctl ユーティリティーを使用して systemd と通信します。systemd デーモンは SELinux ポリシーをチェックし、呼び出し元のプロセスとユニットファイルのラベルを検証してアクセスを許可します。このアプローチにより、システムサービスの開始や停止といった重要なシステム機能へのアクセス制御が強化されます。
systemd デーモンは、SELinux Access Manager としても機能します。systemctl を実行するプロセス、または D-Bus メッセージを送信するプロセスのラベルを取得します。次に、デーモンは、プロセスが設定するユニットファイルのラベルを探します。最後に、systemd はカーネルに問い合わせて、ポリシーがプロセスラベルとユニットファイルラベル間の特定のアクセスを許可しているかどうかを判断します。この隔離により、侵害されたアプリケーションが制限されます。ポリシー作成者は、これらの統制手段を用いて管理者の権限を制限することもできます。
SELinux ポリシーによって 2 つのプロセス間の D-Bus 通信が拒否された場合、システムは USER_AVC 拒否メッセージをログに記録し、通信はタイムアウトします。D-Bus 通信は双方向です。
SELinux のラベル付けミスやそれに伴う問題を回避するため、systemctl start コマンドを使用してサービスを開始するようにしてください。
RHEL 10 では、SELinux を使用するために以下のパッケージが提供されています。
-
ポリシー:
selinux-policy-targeted、selinux-policy-mls -
ツール -
policycoreutils、policycoreutils-gui、libselinux-utils、policycoreutils-python-utils、setools-console、checkpolicy