SELinux (Security-Enhanced Linux) とは、Linuxカーネルに組み込まれたセキュリティ機能の一つで、アクセス制御を細かく管理するための仕組みです。主に、システムのセキュリティを強化する目的で使用されます。
SELinux(Security-Enhanced Linux)は、アメリカ国家安全保障局(NSA)によって開発された、Linuxカーネルのセキュリティを強化するための拡張機能です。このシステムは、Linux Security Modules(LSM)を利用して作られた一連のパッチとして提供されました。2000年にオープンソース・コミュニティに公開され、その後、2003年に公式のLinuxカーネルに統合されました。
SELinuxの特徴
- 強制アクセス制御(Mandatory Access Control, MAC) SELinuxは、通常のユーザーやプロセスの意図に関係なく、システムが定義したポリシーに基づいてアクセスを制御します。
- より細かい制御 ファイルやプロセスに対して、誰が何をできるかを厳密に管理します。
- セキュリティの向上 システムが攻撃を受けても、攻撃範囲を制限できます。
SELinuxの利用シナリオ
- サーバー環境のセキュリティ強化: 例えば、Webサーバー(ApacheやNginx)が侵害された場合でも、SELinuxが適切に設定されていれば、攻撃が他の部分に波及するのを防ぎます。
- 特定アプリケーションの動作制限: あるアプリケーションが他のディレクトリやプロセスにアクセスしないように制限します。
- コンテナ環境(Dockerなど)でのセキュリティ: コンテナがホストマシンの重要な部分にアクセスしないように制御します。
SELinuxのモード
SELinuxには以下の3つのモードがあります。
- Enforcing (強制モード):
- SELinuxポリシーを適用し、ポリシー違反の動作をブロックします。
- 通常の運用ではこのモードが推奨されます。
- Permissive (許可モード):
- SELinuxポリシーを適用せず、違反をログに記録するのみです。
- デバッグやポリシーのテスト時に使用します。
- Disabled (無効):
- SELinuxが完全に無効化されます。
- セキュリティが低下するため、非推奨です。
SELinuxの状態を確認する
SELinuxの現在の状態を確認するには、以下のコマンドを使用します。
sestatus
出力例:
SELinux status: enabled
Current mode: enforcing
Policy version: 31
enabled
: SELinuxが有効。disabled
: SELinuxが無効。enforcing
: ポリシーが適用されている。permissive
: ログ記録のみ。
SELinuxの設定を変更する
SELinuxのモードを変更するには以下を行います。
一時的に変更
現在のセッションで一時的にモードを変更します。
Enforcing → Permissive:
sudo setenforce 0
Permissive → Enforcing:
sudo setenforce 1
永続的に変更
/etc/selinux/config
ファイルを編集します。
sudo nano /etc/selinux/config
内容例:
SELINUX=enforcing
# SELINUX=permissive
# SELINUX=disabled
変更後、システムを再起動します。
SELinuxが原因で問題が発生する例
Dockerでのファイルマウント
ホストディレクトリをDockerコンテナにマウントする際、SELinuxが干渉してエラーになることがあります。この場合、:z
または :Z
オプションを追加することで解決できます。
例:
docker run -v /path/to/dir:/app:z my-image
SELinuxのポリシー管理
SELinuxのポリシーをカスタマイズして、特定のアクションを許可または拒否できます。
ポリシー違反のログ確認: SELinuxログは /var/log/audit/audit.log
に記録されます。
sudo tail -f /var/log/audit/audit.log
ポリシーを緩和する例: audit2allow
ツールを使用して、必要な許可を追加するカスタムポリシーを作成できます。
SELinuxを無効化すべきか?
- 推奨されない: SELinuxはセキュリティを高める重要なツールです。無効化するとセキュリティリスクが高まります。
- 代替手段: 必要に応じて
Permissive
モードにしてログを確認し、適切なポリシーを適用しましょう。
関連記事:こちらも参照ください。
コメント