MENU
Language

SELinux とは? Linuxカーネルのセキュリティを強化するための拡張機能

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の利用シナリオ

  1. サーバー環境のセキュリティ強化: 例えば、Webサーバー(ApacheやNginx)が侵害された場合でも、SELinuxが適切に設定されていれば、攻撃が他の部分に波及するのを防ぎます。
  2. 特定アプリケーションの動作制限: あるアプリケーションが他のディレクトリやプロセスにアクセスしないように制限します。
  3. コンテナ環境(Dockerなど)でのセキュリティ: コンテナがホストマシンの重要な部分にアクセスしないように制御します。

SELinuxのモード

SELinuxには以下の3つのモードがあります。

  1. Enforcing (強制モード):
    • SELinuxポリシーを適用し、ポリシー違反の動作をブロックします。
    • 通常の運用ではこのモードが推奨されます。
  2. Permissive (許可モード):
    • SELinuxポリシーを適用せず、違反をログに記録するのみです。
    • デバッグやポリシーのテスト時に使用します。
  3. 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 モードにしてログを確認し、適切なポリシーを適用しましょう。

関連記事:こちらも参照ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次