【Linux】RHEL9でSELinuxを永続的に無効化する方法

RHEL9でSELinuxを永続的に無効化する方法
この記事を読むと・・・
RHEL9でSELinuxを永続的に無効化する方法が理解できる
目次

RHEL9でのSELinuxの変更点

Red Hat Customer Portal によると従来のSELinux無効化方法である/etc/selinux/configにてSELINUX=disabledと定義し、無効化する方法が使えなくなるらしいです。
というより従来の方法だとは完全に無効化はできないので、無効化したいならカーネルコマンドラインに追加しろとのこと。
RHEL9のマニュアルにSELINUX=permissiveSELINUX=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 を無効にする必要がある場合は、selinux=0 パラメーターをカーネルコマンドラインに追加します

Red Hat Customer Portal

一応、/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を無効化する手順

STEP
カーネルコマンドラインに selinux=0 を追加する

grubby --update-kernel ALL --args selinux=0コマンドを実行し、GRUB2 メニューエントリーに SELinuxを無効化する設定を追加します。
※特に何も出力はされません

# grubby --update-kernel ALL --args selinux=0
STEP
システム再起動

rebootコマンドでシステムを再起動し、設定を反映します。

# reboot
STEP
SELinux が無効化されていることを確認する

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"
よかったらシェアしてね!
  • URLをコピーしました!
目次