👮

SELinuxの状態を確認する

2020/09/27に公開
2

結論

getenforceまたはsestatusを実行しましょう。

状態(モード)のおさらい

SELinuxには3つの状態があります。

  1. Enforcing
    SELinuxが有効な状態です。読み込んだセキュリティーポリシーをシステム全体に強制します。
    一般的に「SELinuxのせいで…!」「おのれ!SELinux…!」といわれる状態がこの状態です。

  2. Permissive
    SELinuxが有効ですが実際にはアクセス制御を行わず、ログ出力のみを行う状態です。ポリシーのデバッグ時に使用します。
    システム運用する際、未来永劫SELinuxをEnforcingで運用する予定がないが、なんとなく有効にしておきたい場合にこの状態で運用ことがあるらしいですが素直にDisabledにしましょう。

  3. Disabled
    SELinuxが無効化されており、何のアクセス制御もされないモードです。
    この時、ファイルへのラベル付けなど行われません。

SELinuxの状態を確認するいくつかの方法

SELinuxの状態は以下のコマンドで確認します。

  • getenforce
  • sestatus
  • cat /sys/fs/selinux/enforce

getenforceコマンド

SELinuxの現在の状態を確認したい場合に使用するコマンドです。Enforcing、Permissive、Disabled を返します。

$ getenforce
Enforcing

$ getenforce
Permissive

$ getenforce
Disabled

setenforceコマンド

より詳しい状態を確認したい場合に使用するコマンドです。
現在の状態と合わせて設定ファイル上で定義されたSELinuxの状態を確認できます。

  • Current mode
    現在の状態を表示します。getenforceコマンドで取得できる状態と同じです。

  • Mode from config file
    /etc/selinux/configSELINUXに定義された状態を表示します。OS起動直後の状態になります。
    設定に誤りがある場合はerrorと表示されます。

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive ← 現在の状態
Mode from config file:          enforcing ← 設定ファイル上の状態
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33
$ grep ^SELINUX= /etc/selinux/config
SELINUX=permissi

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing ← 現在の状態
Mode from config file:          error (Success) ← 設定に誤りがある
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33
$ sestatus
SELinux status:                 disabled

cat /sys/fs/selinux/enforce

SELinuxがEnforcingまたはPermissiveの場合、/sys/fs/selinux/enforceの値は0または1をとります。
SELinuxがDisabledの場合、/sys/fs/selinuxディレクトリは作成されません。

  • 1
    SELinuxの現在の状態がEnforcingの状態です。

  • 0
    SELinuxの現在の状態がPermissiveの状態です。

$ getenforce
Enforcing
$ cat /sys/fs/selinux/enforce
1

$ getenforce
Permissive
$ cat /sys/fs/selinux/enforce
0

$ getenforce
Disabled
$ cat /sys/fs/selinux/enforce
-bash: /sys/fs/selinux/enforce: No such file or directory

おわりに

よいSELinuxライフを!

Discussion