モードの確認と変更
現在のSELinuxのモードを確認したり、一時的・永続的にモードを変更します。
目的 | コマンド | 説明 |
---|---|---|
現在のSELinuxの状態とモードを確認 |
|
SELinuxの有効/無効状態、現在のモード(Enforcing/Permissive/Disabled)、ロードされているポリシー名などを表示します。 |
現在のSELinuxモードのみを確認 |
|
現在のモード(Enforcing, Permissive, Disabled のいずれか)のみを出力します。 |
一時的にEnforcingモードに変更 |
|
システムを再起動するまで、SELinuxをEnforcingモードにします。Enforcingモードではポリシー違反は拒否され、ログに記録されます。 |
一時的にPermissiveモードに変更 |
|
システムを再起動するまで、SELinuxをPermissiveモードにします。Permissiveモードではポリシー違反は許可されますが、ログには記録されます。トラブルシューティング時に役立ちます。 |
永続的にモードを変更 |
|
設定ファイル /etc/selinux/config を編集し、SELINUX= の行を enforcing , permissive , または disabled に変更します。変更を反映するにはシステム再起動が必要です。注意: disabled から enforcing または permissive に変更する場合は、ファイルシステムの再ラベル付けが必要になることがあります。 |
システム起動時にモードを指定 (一時的) | カーネルパラメータで指定 | ブートローダーの設定でカーネルパラメータに enforcing=0 (Permissive) または enforcing=1 (Enforcing) を追加します。selinux=0 で無効化、selinux=1 で有効化も可能です。これは永続的な変更ではありません。 |
ファイルコンテキストの管理
ファイルやディレクトリに割り当てられたSELinuxコンテキスト(ラベル)を表示、変更、復元します。
目的 | コマンド | 説明 |
---|---|---|
ファイル/ディレクトリのコンテキストを表示 |
|
指定したファイルやディレクトリのSELinuxコンテキストを表示します。ディレクトリ内のファイルを表示する場合も同様です。 |
プロセスのコンテキストを表示 |
|
実行中のプロセスのSELinuxコンテキストを表示します。-Z オプションを使います。 |
ファイル/ディレクトリのコンテキストを一時的に変更 |
|
指定したファイルやディレクトリのSELinuxコンテキストを一時的に変更します。再起動や restorecon で元に戻る可能性があります。例: sudo chcon -t httpd_sys_content_t /var/www/html/index.html |
ファイル/ディレクトリのコンテキストを一時的に変更 (再帰的) |
|
指定したディレクトリ以下のファイルやディレクトリのコンテキストを再帰的に変更します。 例: sudo chcon -R -t httpd_sys_content_t /var/www/custom_html/ |
デフォルトのファイルコンテキスト定義を追加/変更 (永続的) |
|
特定のパスに対するデフォルトのファイルコンテキストルールを追加します。変更は /etc/selinux/targeted/contexts/files/file_contexts.local に保存されます。例: sudo semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' |
デフォルトのファイルコンテキスト定義を削除 (永続的) |
|
指定したパスのファイルコンテキスト定義を削除します。 |
デフォルトのファイルコンテキスト定義を表示 |
|
現在定義されているファイルコンテキストのルール一覧を表示します。ローカルな変更も含まれます。 |
ファイル/ディレクトリのコンテキストをデフォルト定義に従って復元 |
|
指定したパスのファイルコンテキストを、semanage fcontext で定義されたデフォルトルールに基づいて正しいコンテキストに復元します。-v で変更されたファイルを表示します。 |
ファイル/ディレクトリのコンテキストをデフォルト定義に従って再帰的に復元 |
|
指定したディレクトリ以下のファイルやディレクトリのコンテキストを再帰的に復元します。-R で再帰的に、-v で変更されたファイルを表示します。 |
ファイルシステムの再ラベル付けをスケジュール | または
|
次回のシステム起動時に、ファイルシステム全体のSELinuxコンテキストをデフォルトポリシーに従って再ラベル付けします。SELinuxが無効から有効に変更された場合などに使用します。時間がかかることがあります。fixfiles -F onboot は強制的な再ラベル付けを行います。Permissiveモードで実行することが推奨されます。 |
特定のパスのデフォルトコンテキストを確認 |
|
指定されたファイルやディレクトリパスに対して、SELinuxポリシーが定義しているデフォルトのセキュリティコンテキストを表示します。 |
Boolean値の管理
SELinuxポリシーの動作を制御する真偽値(Boolean)を表示・変更します。
目的 | コマンド | 説明 |
---|---|---|
全てのBoolean値とその状態を表示 |
|
システム上の全てのSELinux Booleanとその現在の設定値(on/off)を一覧表示します。 |
特定のBoolean値の状態を表示 |
|
指定したBooleanの現在の状態を表示します。 |
Boolean値の詳細(説明、デフォルト値など)を表示 |
|
全てのBooleanについて、現在の状態、デフォルトの状態、簡単な説明を一覧表示します。 |
特定のBoolean値の詳細を表示 |
|
指定したBooleanの詳細情報(現在の状態、デフォルト値、説明)を表示します。 |
Boolean値を一時的に変更 |
|
指定したBooleanの値を一時的に変更します。再起動すると元の値に戻ります。 例: sudo setsebool httpd_can_network_connect on |
Boolean値を永続的に変更 |
|
指定したBooleanの値を永続的に変更します。-P オプションを付けることで、変更がポリシーファイルに書き込まれ、再起動後も維持されます。ポリシーの再構築が行われるため、少し時間がかかることがあります。例: sudo setsebool -P httpd_can_network_connect on |
Boolean値を永続的に変更 (semanageを使用) |
|
semanage コマンドを使用してBoolean値を永続的に変更します。例: sudo semanage boolean -m --on httpd_can_network_connect |
ポートコンテキストの管理
ネットワークポートに割り当てられたSELinuxタイプを管理します。
目的 | コマンド | 説明 |
---|---|---|
定義されているポートコンテキストを表示 |
|
現在定義されているネットワークポートとそのタイプ、プロトコル(tcp/udp)の一覧を表示します。 |
特定のポートタイプに関連付けられたポートを表示 |
|
指定したSELinuxタイプ(例: http_port_t )に関連付けられているポートを表示します。 |
ポートコンテキストを追加 (永続的) |
|
新しいポート番号またはポート範囲にSELinuxタイプを割り当てます。変更は永続的です。 例: sudo semanage port -a -t http_port_t -p tcp 8080 範囲指定例: sudo semanage port -a -t myapp_port_t -p tcp 9000-9010 |
ポートコンテキストを変更 (永続的) |
|
既存のポート番号に割り当てられているSELinuxタイプを変更します。変更は永続的です。 例: sudo semanage port -m -t jboss_management_port_t -p tcp 9999 |
ポートコンテキストを削除 (永続的) |
|
指定したポート番号のSELinuxタイプ割り当てを削除します。変更は永続的です。 例: sudo semanage port -d -p tcp 8080 |
監査ログとトラブルシューティング 🔎
SELinuxによるアクセス拒否(Denial)のログを確認し、原因を特定・解決します。
目的 | コマンド/ファイル | 説明 |
---|---|---|
監査ログの場所 | /var/log/audit/audit.log |
SELinuxの拒否(AVC Denial)メッセージを含む、システムの監査ログがデフォルトで記録されるファイルです。auditd サービスが実行中である必要があります。 |
代替ログの場所 (auditd無効時) | /var/log/messages |
auditd が動作していない場合、SELinuxの拒否メッセージがシステムログ (rsyslog) に記録されることがあります。 |
最近のSELinux拒否ログを検索 |
|
auditd のログから、最近発生したSELinux関連のエラー(AVC Denialなど)を検索します。-ts でタイムスタンプ(例: today , yesterday , 10:00 )を指定できます。 |
特定の実行ファイルに関する拒否ログを検索 |
|
指定したコマンド名(例: httpd , nginx )に関連するAVC拒否ログを検索します。-i で解釈可能な形式で表示します。 |
拒否ログの解析と解決策の提示 (setroubleshoot) |
|
setroubleshoot-server パッケージが必要。/var/log/messages などに出力されるUUIDを指定して、拒否の詳細な分析と解決策の候補を表示します。 |
拒否ログの解析と解決策の提示 (setroubleshoot GUI) |
|
setroubleshoot パッケージが必要。GUIで拒否ログとその解析結果を表示します。(デスクトップ環境が必要) |
拒否ログの解析と解決策の提示 (setroubleshoot 全ログ) |
|
監査ログ全体を解析し、検出された拒否とその解決策候補を表示します。 |
拒否ログから許可ルールを含むポリシーモジュールを作成 |
|
policycoreutils-python-utils パッケージが必要。最近の拒否ログを元に、それを許可するためのカスタムポリシーモジュール(.te および .pp ファイル)を生成します。注意: 安易に適用せず、拒否の原因(ラベル間違いなど)を先に確認することが重要です。 |
拒否ログの内容を表示 (audit2allow) |
|
拒否ログの内容を読み取り、対応する allow ルールを表示します。モジュールは作成しません。 |
生成されたカスタムポリシーモジュールをインストール |
|
audit2allow などで生成したポリシーパッケージファイル(.pp)をシステムにインストールして有効化します。 |
特定のドメインを一時的にPermissiveモードにする |
|
システム全体はEnforcingモードのまま、特定のプロセスドメイン(例: httpd_t )だけをPermissiveモードにします。トラブルシューティングに有用です。 |
特定のドメインをEnforcingモードに戻す |
|
Permissiveモードに設定したドメインをEnforcingモードに戻します。 |
Permissiveモードに設定されているドメインを表示 |
|
現在Permissiveモードで動作するように設定されているドメインの一覧を表示します。 |
dontaudit ルールを無効化して隠れた拒否を表示 |
|
通常はログに出力されない dontaudit ルールによる拒否もログに出力されるようにします。デバッグ時に有効です。 |
dontaudit ルールを再度有効化 |
|
無効化した dontaudit ルールを元に戻し、通常のログ出力状態にします。ポリシーの再構築が行われます。 |
カスタムポリシーモジュールの管理 🧩
独自のSELinuxポリシーモジュールを作成、インストール、削除、管理します。
目的 | コマンド | 説明 |
---|---|---|
インストール済みのポリシーモジュールを表示 |
|
現在システムにインストールされているSELinuxポリシーモジュールの一覧を表示します。カスタムモジュールも含まれます。 |
ポリシーモジュールをインストール |
|
コンパイル済みのポリシーパッケージファイル(.pp)をインストールします。 |
ポリシーモジュールを削除 |
|
指定した名前のポリシーモジュールをシステムから削除します。 |
ポリシーモジュールを無効化 |
|
指定したモジュールを一時的に無効化します。ルールは適用されなくなりますが、モジュール自体は残ります。 |
無効化したポリシーモジュールを有効化 |
|
semodule -d で無効化したモジュールを再度有効化します。 |
ポリシーソースファイル(.te)からモジュール(.mod)を作成 |
|
ポリシーのType Enforcementファイル(.te)をコンパイルし、中間モジュールファイル(.mod)を生成します。selinux-policy-devel パッケージが必要です。 |
モジュール(.mod)とファイルコンテキスト(.fc)からパッケージ(.pp)を作成 |
|
中間モジュールファイル(.mod)と、オプションでファイルコンテキストファイル(.fc)を組み合わせて、インストール可能なポリシーパッケージファイル(.pp)を作成します。 |
ポリシーソースからパッケージ(.pp)を作成 (Makefile利用) |
|
selinux-policy-devel が提供するMakefileを利用して、カレントディレクトリにある <モジュール名>.te や <モジュール名>.fc などのソースファイルからポリシーパッケージ(.pp)をビルドします。 |
ポリシー生成ツール (テンプレート作成) |
|
policycoreutils-devel パッケージが必要。指定したアプリケーション用の基本的なポリシーモジュール(.te, .fc, .if)、Makefile、セットアップスクリプトのテンプレートを生成します。カスタムポリシー作成の出発点として便利です。 |
ユーザーとロールの管理
SELinuxユーザーとLinuxユーザーのマッピングや、SELinuxユーザーのロールを管理します。
目的 | コマンド | 説明 |
---|---|---|
LinuxユーザーとSELinuxユーザーのマッピングを表示 |
|
Linuxのログイン名と、それに対応するSELinuxユーザー、MLS/MCSレンジのマッピングを表示します。 |
LinuxユーザーにSELinuxユーザーをマッピング |
|
指定したLinuxユーザーに特定のSELinuxユーザーを割り当てます。 例: sudo semanage login -a -s user_u staff_admin |
Linuxユーザーのマッピングを変更 |
|
既存のLinuxユーザーのマッピングを変更します。 例: sudo semanage login -m -s staff_u staff_admin |
Linuxユーザーのマッピングを削除 |
|
指定したLinuxユーザーのSELinuxユーザーマッピングを削除します。デフォルト(通常は __default__ の設定)が適用されます。 |
SELinuxユーザーの一覧を表示 |
|
定義されているSELinuxユーザーと、それぞれに割り当て可能なロール、MLS/MCSレンジを表示します。 |
現在のセッションのSELinuxコンテキストを表示 |
|
現在ログインしているユーザーのSELinuxコンテキスト(SELinuxユーザー、ロール、タイプ、レベル)を表示します。 |
コメント