[步骤] GRUB2 参数的设置 (RHEL 9 版)

内容一:增加 GRUB2 参数

# grubby --update-kernel ALL --add-args "selinux=0 enforcing=0"

(补充:这里以增加 selinux=0 enforcing=0 参数为例)

内容二:删除 GRUB2 参数

# grubby --update-kernel ALL --remove-args "selinux=0 enforcing=0"

(补充:这里以取消 selinux=0 enforcing=0 参数为例)

内容三:显示 GRUB2 的参数

3.1 显示 GRUB2 参数的简单信息

# grub2-editenv - list | grep kernelopts
kernelopts=root=UUID=ac2abk4hi-5529-26c1-b6o9-365260e054242 ro barrier=off crashkernel=auto rhgb quiet

(补充:其实就是 /etc/default/grub 文件中 GRUB_CMDLINE_LINUX=”” 这一行里的参数)

3.2 显示 GRUB2 参数的详细信息

# grubby --info DEFAULT
index=0
kernel="/boot/vmlinuz-5.14.0-687.12.1.el9_8.x86_64"
args="ro barrier=off crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M $tuned_params"
root="UUID=ac2abk4hi-5529-26c1-b6o9-365260e054242"
initrd="/boot/initramfs-5.14.0-687.12.1.el9_8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (5.14.0-687.12.1.el9_8.x86_64) 9.8 (Plow)"
id="e5b27xh36j583kj7231667u51l5c82hc-5.14.0-687.12.1.el9_8.x86_64"

3.3 显示所有历史 GRUB2 参数的详细信息

# grubby --info DEFAULT
index=0
kernel="/boot/vmlinuz-5.14.0-687.12.1.el9_8.x86_64"
args="ro barrier=off selinux=0 crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M $tuned_params"
root="UUID=ac2abk4hi-5529-26c1-b6o9-365260e054242"
initrd="/boot/initramfs-5.14.0-687.12.1.el9_8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (5.14.0-687.12.1.el9_8.x86_64) 9.8 (Plow)"
id="e5b27xh36j583kj7231667u51l5c82hc-5.14.0-687.12.1.el9_8.x86_64"
index=0
kernel="/boot/vmlinuz-5.14.0-687.12.1.el9_8.x86_64"
args="ro barrier=off selinux=0 crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M $tuned_params"
root="UUID=ac2abk4hi-5529-26c1-b6o9-365260e054242"
initrd="/boot/initramfs-5.14.0-687.12.1.el9_8.x86_64.img $tuned_initrd"
title="Red Hat Enterprise Linux (5.14.0-687.12.1.el9_8.x86_64) 9.8 (Plow)"
id="e5b27xh36j583kj7231667u51l5c82hc-5.14.0-687.10.1.el9_8.x86_64"

[内容] audit 常用的监控规则

内容一:监控 SELinux 配置文件

1.1 在 audit 添加监控 SELinux 配置文件的规则

# vim /etc/audit/rules.d/audit.rules

添加以下内容:

......
-w /etc/selinux/ -p wa -k MAC-policy
-w /usr/share/selinux/ -p wa -k MAC-policy

1.2 让添加的监控 SELinux 配置文件的规则生效

# service auditd restart

1.3 确认添加的监控 SELinux 配置文件的规则已生效

# auditctl -l | grep -i selinux

内容二:监控 AppArmor 配置文件

2.1 在 audit 添加监控 AppArmor 配置文件的规则

# vim /etc/audit/rules.d/audit.rules

添加以下内容:

......
-w /etc/apparmor/ -p wa -k MAC-policy
-w /etc/apparmor.d/ -p wa -k MAC-policy

2.2 让添加的监控 AppArmor 配置文件的规则生效

# service auditd restart

2.3 确认添加的监控 AppArmor 配置文件的规则已生效

# auditctl -l | grep -i apparmor

[步骤] SELinux 的启用 (openSUSE & SLES 版) (不建议)

软件准备:

在 SELinuxProject 的官网上下载 SELinux 策略 UseRefpolicy:

https://github.com/SELinuxProject/refpolicy/wiki/UseRefpolicy

注意:

1) 如果使用此文的方法将 openSUSE & SLE 的 SELinux 设置为 Enforcing 则系统将无法设置 IP 地址
2) 如果使用此文的方法开启了 SELinux 并且将所有的布尔(boolean)值开启,则系统将无法关机,开启所有布尔值的方法:# for i in semanage boolean -l | awk '{print $1}'; do echo $i;setsebool -P $i 1; done

正文:

步骤一:安装 SELinux 组件

# zypper in libselinux1 libsemanage1 libsepol-devel libsepol1 libselinux-devel mcstrans libselinux1-32bit policycoreutils checkpolicy libsemanage-devel setools-tcl setools-libs setools-java setools-devel setools-console selinux-tools python3-policycoreutils python3-selinux python3-semanage python3-setools restorecond

步骤二:安装 SELinux 策略

2.1 解压包含 SELinux 策略的压缩包

# tar -xvf refpolicy-2.20210203.tar.bz2

(补充:这里以解压 refpolicy-2.20210203.tar.bz2 压缩包为例)

2.2 将 SELinux 策略移动到 SELinux 配置文件的位置

# mv refpolicy /etc/selinux/

2.3 进入到和 SELinux 策略相同目录下

# cd /etc/selinux/refpolicy/

2.4 显示 SELinux 策略的安装手册

# cat INSTALL

2.5 创建 SELinux 策略的配置文件

# make conf

2.6 创建 SELinux 策略

# make policy

2.7 编译 SELinux 策略

# make install

2.8 安装 SELinux 策略

# make load

步骤三:配置 SELinux 配置文件

3.1 在 SELinux 配置文件中将 SELinux 设置为 Permissive 状态

# vim /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 three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=refpolicy

3.2 在系统内核中禁止使用 AppArmor 使用 SELinux 并且将 SELinux 状态设置为 Permissive

3.2.1 设置 /etc/default/grub 配置文件
# vim /etc/default/grub

在这一行里:

GRUB_CMDLINE_LINUX_DEFAULT="......"
添加以下内容:
GRUB_CMDLINE_LINUX_DEFAULT="...... security=selinux selinux=1 enforcing=0"
3.2.2 让刚刚设置的 /etc/default/grub 配置文件生效
# grub2-mkconfig -o /boot/grub2/grub.cfg

3.3 刷新系统内所有文件的标签

# restorecon -Rp /

步骤四:重启系统让 SELinux 生效

# reboot

参考文献:

https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-selinux.html

[内容] Linux SELinux 状态的设置

内容一:SELinux 的状态

1) Disabled:完全关闭 SELinux
2) Permissive:即使违反了策略也依旧可以执行,但是违反策略的记录会被记录在日志中
3) Enforcing:如果违反了策略就不能之行

内容二:永久切换 SELinux 状态

2.1 将 SELinux 永久切换至 Disabled 状态

2.1.1 修改 SELinux 配置文件
# vim /etc/selinux/config

将以下内容:

......
SELINUX=......
......

修改为:

......
SELINUX=disabled
......
2.1.2 重启系统
# reboot
2.1.3 显示 SELinux 状态
# getenforce 
Disabled

2.2 将 SELinux 永久切换至 Permissive 状态

2.2.1 修改 SELinux 配置文件
# vim /etc/selinux/config

将以下内容:

......
SELINUX=......
......

修改为:

......
SELINUX=permissive
......
2.2.2 重启系统
# reboot
2.2.3 显示 SELinux 状态
# getenforce 
Permissive

2.3 将 SELinux 永久切换至 Enforcing 状态

2.3.1 修改 SELinux 配置文件
# vim /etc/selinux/config

将以下内容:

......
SELINUX=......
......

修改为:

......
SELINUX=enforcing
......
2.3.2 重启系统
# reboot
2.3.3 显示 SELinux 状态
# getenforce 
Enforcing

内容三:临时切换 SELinux 状态

3.1 临时切换到 Permissive 状态

3.1.1 临时切换到 Permissive 状态
# setenfoce 0

(
注意:
1) 系统重启后失效
2) 只能从 Enforcing 状态切换到 Permissive 状态
)

3.1.2 显示 SELinux 状态
# getenforce 
Permissive

3.2 临时切换到 Enforcing 状态

3.2.1 临时切换到 Enforcing 状态
# setenfoce 1

(
注意:
1) 系统重启后失效
2) 只能从 Permissive 状态切换到 Enforcing 状态
)

3.2.2 显示 SELinux 状态
# getenforce 
Enforcing