環境
- OS:CentOS Linux release 8.0.1905
1. SELinuxのステータス、モードを確認
SElinuxのステータス及びモードはgetenforce
コマンドまたはsestatus
コマンドで確認できます。
SElinuxのステータスは「有効/無効」があり、「有効」の場合は2つのモード「Enforcingモード」、「Permissiveモード」があります。
表示 | ステータス | モード | 内容 |
---|---|---|---|
Enforcing | 有効 | Enforcinモード | SELinux有効(制御有 + ログ出力有) |
Permissive | 有効 | Permissiveモード | SELinux有効(制御無 + ログ出力有) |
Disabled | 無効 | - | SELinux無効(制御無 + ログ出力無) |
なお、ログは「/var/log/messages」や「/var/log/audit/audit.log」に出力されます。
getenforce
コマンドの場合、「Enforcing」、「Permissive」、「Disabled」のいずれかが表示されます。
- 「Enforcing」の場合
[root@CENTOS8 /]# getenforce
Enforcing
[root@CENTOS8 /]#
- 「Permissive」の場合
[root@CENTOS8 /]# getenforce
Permissive
[root@CENTOS8 /]#
- 「Disabled」の場合
[root@CENTOS8 ~]# getenforce
Disabled
[root@CENTOS8 ~]#
また、sestatus
コマンドでもステータス及びモードを確認することができます。
sestatus
コマンドで表示された「SELinux status:」にステータスが、「Current mode:」にモードが表示されます。
- 「Enforcing」の場合
[root@CENTOS8 ~]# 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: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
- 「Permissive」の場合
[root@CENTOS8 ~]# 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: 31
[root@CENTOS8 ~]#
- 「Disabled」の場合
[root@CENTOS8 ~]# sestatus
SELinux status: disabled
[root@CENTOS8 ~]#
2. SELinuxのモードを一時的に変更
SELinuxのモードを一時的に変更する場合、setenforce
コマンドで変更することができます。
「Enforcingモード」から「Permissiveモード」に変更する場合、以下のコマンドで変更できます。
setenforce 0
[root@CENTOS8 ~]# setenforce 0
[root@CENTOS8 ~]# getenforce
Permissive
[root@CENTOS8 ~]# 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: 31
[root@CENTOS8 ~]#
「Permissiveモード」から「Enforcingモード」に変更する場合、以下のコマンドで変更できます。
setenforce 1
[root@CENTOS8 ~]# setenforce 1
[root@CENTOS8 ~]#
[root@CENTOS8 ~]# getenforce
Enforcing
[root@CENTOS8 ~]# 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: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
3. SELinuxのびモードを永続的に変更
SELinuxのモードを一時的に変更する場合、「/etc/selinux/config」ファイルの「SELINUX」の値を書き換えます。「/etc/selinux/config」ファイルを書き換えた後にOSを再起動することにより反映されます。
SELINUXの値 | ステータス及びモード |
---|---|
SELINUX=enforcing | 有効、Enforcingモード |
SELINUX=permissive | 有効、Permissiveモード |
SELINUX=disabled | 無効 |
なお、「/etc/selinux/config」ファイルを変更するにあたって2つ注意があります。
- 「/etc/selinux/config」ファイルに誤りがあった場合、カーネルパニックを起こす可能性がある。
- SELinuxのステータスを無効から有効にした場合、ファイルシステムのラベルの不整合によりカーネルパニックを起こす可能性がある。
1つ目の問題は、OSを再起動する前にsestatus
コマンドでステータスを確認することで回避します。
2つ目の問題は、「5. SELinuxのステータスを無効から有効にする」に手順を紹介します。
実際にSELinuxのモードを「Enforcingモード」から「Permissiveモード」へ永続的に変更してみます。(「Permissiveモード」から「Enforcingモード」への永続的変更も手順は同じです。)
「/etc/selinux/config」の「SELINUX=enforcing」を「SELINUX=permissive」に修正します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
sestatus
コマンドで「Mode from config file:」の内容が正しいか確認します。
[root@CENTOS8 ~]# 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: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
なお、「SELINUX=permissive」の部分を誤って、「SELINUX=ermissive」と変更した場合、sestatus
コマンドで以下の通り、「Mode from config file:」の項目に「error」が表示されます。
[root@CENTOS8 ~]# 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: 31
[root@CENTOS8 ~]#
reboot
コマンドでOSを再起動します。
[root@CENTOS8 ~]# reboot
getenforce
コマンドでモードを確認します。
[root@CENTOS8 ~]# getenforce
Permissive
[root@CENTOS8 ~]#
これで、モードが「Permissiveモード」となりました。
4. SELinuxのステータスを無効にする
手順は「3. SELinuxのびモードを永続的に変更」と同じ手順となります。
「/etc/selinux/config」の「SELINUX=permissive」を「SELINUX=disabled」に修正します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
sestatus
コマンドで「Mode from config file:」の内容が正しいか確認します。
[root@CENTOS8 ~]# 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: disabled
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
reboot
コマンドでOSを再起動します。
[root@CENTOS8 ~]# reboot
getenforce
コマンドでモードを確認します。
[root@CENTOS8 ~]# getenforce
Disabled
[root@CENTOS8 ~]#
これで、SELinuxのステータスが「無効」となりました。
5. SELinuxのステータスを無効から有効にする
「/etc/selinux/config」の「SELINUX=disabled」を「SELINUX=permissive」に修正します。
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
sestatus
コマンドで「Mode from config file:」の内容が正しいか確認します。
[root@CENTOS8 ~]# 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: disabled
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
fixfiles -F onboot
コマンドで「/.autorelabel:ファイルを作成し、次回のシステムの再起動時にファイルに再ラベル付けされるようにします。
[root@CENTOS8 ~]# fixfiles -F onboot
System will relabel on next boot
[root@CENTOS8 ~]#
reboot
コマンドでOSを再起動します。
[root@CENTOS8 ~]# reboot
getenforce
コマンドでモードを確認します。
[root@CENTOS8 ~]# getenforce
Permissive
[root@CENTOS8 ~]#
sestatus
コマンドでも確認してみます。
[root@CENTOS8 ~]# 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: permissive
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
[root@CENTOS8 ~]#
SELinuxのステータスが「有効」となりました。
「/var/log/messages」や「/var/log/audit/audit.log」にエラーが発生していなければ、「2. SELinuxのモードを一時的に変更」または「3. SELinuxのびモードを永続的に変更」の手順で、モードを「Enforcingモード」に変更します。
参考
第2章 SELinux のステータスおよびモードの変更 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
以上