SELinux は従来の Linux の所有者やパーミッションに加え、ポリシーに基づく制御を提供します。この実践コースでは、SELinux 自体を問題扱いするのではなく、ポリシー状態を調査し、よくある不整合を見つけ、サービス拒否を解析する方法を学びます。
Enforcing と Permissive のモードを比較し、ファイルラベルを追跡して誤ったコンテキストを修復し、ポリシーで用意されたブール値を有効化し、AVC 監査証拠を読み取ります。最後のチャレンジでは、Nginx がポート 8088 をバインドできない原因を診断し、拒否記録から対象を絞ったポリシーモジュールを生成・導入して応答を確認します。
学習内容
- SELinux の状態を調べ、ランタイムモードと起動時設定を区別する
- ファイルのセキュリティコンテキストを読み、ポリシーが使う type フィールドを特定する
- 移動したファイルが新しい場所に不適切なラベルを保持する理由を説明する
- 現在と期待されるコンテキストを比較し、
restoreconで個別または再帰的に不整合を修復する - サービス固有の SELinux ブール値を検索し、永続的に有効化して確認する
- Nginx の AVC 拒否を特定し、ブロックされた
name_bind操作を解釈する audit2allowで拒否を説明し、カスタムポリシーモジュールを生成する- 生成したモジュールを導入し、非標準ポートの Nginx を検証する
このコースの対象者
この中級コースは、通常の Unix パーミッションを理解し、SELinux の運用とトラブルシューティングを実践的に学びたい Linux 管理者、DevOps 担当者、セキュリティ学習者を対象としています。
前提知識: Linux シェル、ファイルとパーミッション、sudo、systemctl、テキスト編集、ポート、基本的な Web サービスの概念に慣れていること。ポリシー記述の経験は不要です。
学習環境: SELinux コマンド、ポリシーデータ、監査証拠、Nginx、管理者権限を備えた Linux ターミナルです。カーネルやコンテナの制限で実際のモード切り替えができない場合があるため、一部の拒否はシミュレートされますが、調査と修復には同じコマンドを使用します。
よくある質問
アプリケーションが失敗したとき SELinux を無効化する方法を学びますか?
いいえ。Permissive モードは一時的な診断の考え方としてのみ扱います。対象を絞った変更の前に、ラベル、対応するブール値、監査記録を調べることを重視します。
どのような SELinux 修復を実践しますか?
ポリシーで定義されたファイルコンテキストの復元、httpd_can_network_connect の永続的な有効化、Nginx のポートバインド拒否からの小さなモジュール生成と導入を行います。広範なポリシー言語の解説は含みません。
audit2allow をすべての拒否への解決策として扱いますか?
いいえ。提案内容を確認し、ラベル、ブール値、標準的なポリシー調整のほうが適切か検討します。最後のチャレンジは生成モジュールを明示的に求め、semanage port によるポートタイプ管理などは実践範囲外です。





