6
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SELinuxの有効/無効の設定(CentOS7、CentOS8)

Last updated at Posted at 2020-04-19

環境

  • 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」の場合
実行結果(Enforcingの場合)
[root@CENTOS8 /]# getenforce
Enforcing
[root@CENTOS8 /]#
  • Permissive」の場合
実行結果(Permissiveの場合)
[root@CENTOS8 /]# getenforce
Permissive
[root@CENTOS8 /]#
  • Disabled」の場合
実行結果(Disabledの場合)
[root@CENTOS8 ~]# getenforce
Disabled
[root@CENTOS8 ~]#

また、sestatusコマンドでもステータス及びモードを確認することができます。
sestatusコマンドで表示された「SELinux status:」にステータスが、「Current mode:」にモードが表示されます。

  • Enforcing」の場合
実行結果(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」の場合
実行結果(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」の場合
実行結果(Deniedの場合)
[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」に修正します。

/etc/selinux/config(変更前)
# 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
/etc/selinux/config(変更後)
# 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」に修正します。

/etc/selinux/config(変更前)
# 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
/etc/selinux/config(変更後)
# 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」に修正します。

/etc/selinux/config(変更前)
# 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
/etc/selinux/config(変更後)
# 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


以上

6
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?