この記事を読むと・・・ |
---|
RHEL9でSELinuxを永続的に無効化する方法が理解できる |
RHEL9でのSELinuxの変更点
Red Hat Customer Portal によると従来のSELinux無効化方法である/etc/selinux/config
にてSELINUX=disabled
と定義し、無効化する方法が使えなくなるらしいです。
というより従来の方法だとは完全に無効化はできないので、無効化したいならカーネルコマンドラインに追加しろとのこと。
RHEL9のマニュアルにSELINUX=permissive
とSELINUX=enforcing
の変更方法の記載はあるのでこちらのオプションであれば従来通りに使えそうです。
/etc/selinux/config
による SELinux の無効化に対応しなくなる今回のリリースで、
/etc/selinux/config
ファイルのSELINUX=disabled
オプションを使用した SELinux の無効化に対応する機能がカーネルから削除されました。/etc/selinux/config
を介してのみ SELinux を無効にすると、システムは SELinux が有効な状態で起動しますが、ポリシーは読み込まれず、SELinux セキュリティーフックはカーネルに登録されたままになります。これは、/etc/selinux/config
を使用して SELinux を無効にすると、まだシステムリソースが必要であることを意味します。パフォーマンスが重視されるすべてのシナリオでは、カーネルコマンドラインを使用して無効にすることをお勧めします。さらに、Anaconda インストールプログラムおよび対応する man ページが更新され、この変更が反映されました。この変更により、LSM (Linux Security Module) フックの初期化後の読み取り専用保護も有効になります。
SELinux を無効にする必要がある場合は、
Red Hat Customer Portalselinux=0
パラメーターをカーネルコマンドラインに追加します。
一応、/etc/selinux/config
にもコメントでその旨の記載がされていますが、RHEL8までの慣習でこのファイルで SELinux の無効化設定をしてしまいそうですね…
# cat /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,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELinuxのステータス確認
SELinuxのステータスはsestatus
コマンドまたはgetenforce
コマンドで確認できます。
現在のステータスはenabledでモードがenforcingであることが確認できます。
# 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
getenforce
コマンドで、Enforcing または Permissive と表示されている場合は、SELinuxが有効であることを示し、表示されているのがモードになります。無効化されているときはDisabledと表示されます。
そのため、現在のステータスはenabledでモードがEnforcingであることが確認できます。
# getenforce
Enforcing
SELinuxを無効化する手順
前提条件
SELinux を無効化する前提とし grubby パッケージがインストールされている必要があります。
おそらくデフォルトでインストールされているかと思いますが、インストールされてなければyum install grubby
でインストールしてください。
# rpm -q grubby
grubby-8.40-61.el9.x86_64
RHEL9でSELinuxを無効化する手順
grubby --update-kernel ALL --args selinux=0
コマンドを実行し、GRUB2 メニューエントリーに SELinuxを無効化する設定を追加します。
※特に何も出力はされません
# grubby --update-kernel ALL --args selinux=0
reboot
コマンドでシステムを再起動し、設定を反映します。
# reboot
SELinux のステータスが Disabled(disabled) であることが確認できれば、SELinux は無効化されていることになります。
# sestatus
SELinux status: disabled
# getenforce
Disabled
ちなみに以下のコマンドなどでGRUB2 メニューエントリーにselinux=0
が追加されたことを確認できます。
引数として追加しているのでargs
の項目にselinux=0
が追加されています。
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap selinux=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.14.0-162.6.1.el9_1.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap selinux=0"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-5.14.0-162.6.1.el9_1.x86_64.img"
title="Red Hat Enterprise Linux (5.14.0-162.6.1.el9_1.x86_64) 9.1 (Plow)"
id="3a6d9b29508b451e9eb1c6bce5ea6d65-5.14.0-162.6.1.el9_1.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-3a6d9b29508b451e9eb1c6bce5ea6d65"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap selinux=0"
root="/dev/mapper/rhel-root"
initrd="/boot/initramfs-0-rescue-3a6d9b29508b451e9eb1c6bce5ea6d65.img"
title="Red Hat Enterprise Linux (0-rescue-3a6d9b29508b451e9eb1c6bce5ea6d65) 9.1 (Plow)"
id="3a6d9b29508b451e9eb1c6bce5ea6d65-0-rescue"