AlmaLinux 9
Sponsored Link

SELinux : 動作モードの設定
2023/02/20
 
SELinux (Security-Enhanced Linux) の基本操作/設定です。
SELinux を設定することにより、各種リソースへの強制アクセス制御 (MAC - Mandatory Access Control) 機能が利用可能となります。
[1] SELinux が現在利用可能かどうかは、現在の動作モードを表示することで確認できます。
(システムインストール時のデフォルト動作モードは Enforcing)
# 現在の動作モード表示

[root@dlp ~]#
getenforce

Enforcing
# enforcing   ⇒  MAC 有効な状態 (デフォルト)
# permissive  ⇒  ポリシーに従って監査ログの記録のみを行う (アクセス拒否はしない)
# disabled    ⇒  無効な状態

# 以下でも確認可
# [Current mode] 行が該当

[root@dlp ~]#
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:      33
[2] [permissive] ⇔ [enforcing] の動作モード切り替えは [setenforce] コマンドで変更可能です。
ただし、システム再起動すると元々の設定に戻ります。また [disabled] への一時的な切り替えはできません。
[root@dlp ~]#
getenforce

Enforcing
# [setenforce 0] で [Permissive] に切り替え

[root@dlp ~]#
setenforce 0

[root@dlp ~]#
getenforce

Permissive
# [setenforce 1] で [Enforcing] に切り替え

[root@dlp ~]#
setenforce 1

[root@dlp ~]#
getenforce

Enforcing
[3] 動作モードを恒久的に変更する場合は設定ファイルで設定します。
[root@dlp ~]#
vi /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.
# See also:
# https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-selinux/#getting-started-with-selinux-selinux-states-and-modes
#
# NOTE: In earlier Fedora kernel builds, SELINUX=disabled would also
# fully disable SELinux during boot. If you need a system with SELinux
# fully disabled instead of SELinux running with no policy loaded, you
# need to pass selinux=0 to the kernel command line. You can use grubby
# to persistently set the bootloader to boot with selinux=0:
#
#    grubby --update-kernel ALL --args selinux=0
#
# To revert back to SELinux enabled:
#
#    grubby --update-kernel ALL --remove-args selinux
#
# 設定する動作モードに変更
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

# 変更後はシステム再起動

[root@dlp ~]#
[4] SELinux を無効化する場合、設定ファイル中の注釈にもある通り、従来の設定ファイルでの [SELINUX=disabled] 指定では、SELinux は起動するがポリシーがロードされていない状態での無効化となります。
SELinux を完全に無効化する場合はカーネルパラメーターに無効化の設定を追加します。
# SELinux を無効にする

[root@localhost ~]#
grubby --update-kernel ALL --args selinux=0
# 再起動して変更を有効にする

[root@localhost ~]#
# SELinux 有効に戻す場合は以下 (変更後は要再起動)

[root@localhost ~]#
grubby --update-kernel ALL --remove-args selinux

[5] 動作モードが無効な状態 (disabled) から 有効な状態 (enforcing/permissive) に変更する場合は、リラべリングが必要になります。 これは、無効な状態の時に作成されたファイルは SELinux のラベル付けが行われていないため、それらについても SELinux によるアクセス制御を有効にするためには、後述する SELinux コンテキストと呼ばれる情報でラベル付けをする必要があるためです。 リラべリングは、システム再起動時の起動中に実行されますが、相応の時間がかかるため注意が必要です。
# 以下のように設定して再起動すると次回起動時にリラべリングされる

[root@dlp ~]#
fixfiles -F onboot

System will relabel on next boot
# 上記コマンドで以下のファイルが作成される

[root@dlp ~]#
ll /.autorelabel

-rw-r--r--. 1 root root 3 Mar 10 19:34 /.autorelabel
関連コンテンツ