笔者:国际认证信息系统审计师、软考系统分析师
SELinux 配置文件
SELinux的主配置文件是
/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 two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
其中的
SELINUX=disabled
用于设置SELinux的工作模式
而
SELINUXTYPE=targeted
用于选择策略模式。默认是targeted设置。在此策略模式下,SELinux会允许自定义和微调访问控制权限。其它参数值包括有MLS,即多层次安全,更高级的保护模式。对于使用MLS时,需要安装其它应用程序包。
这个配置文件可以直接用文本编辑器编辑。
启用和禁用SELinux
启用SELinux比较简单。但需要分开两步进行。我们假设系统已经安装了SELinux相关的包组,但处于禁用状态。然后我们编辑
/etc/selinux/config
文件,修改SELINUX参数设置为permissive模式,即
SELINUX=permissive
先设置为permissive模式的原因,是因为系统中每个文件都需要在被SELinux强制监控前,打上属于该文件的上下文标签。
如果不是所有文件都已经正确地被标签,则访问这些文件的进程就必然失败崩溃,系统就不能用,甚至连开机都失败。接下来,重启系统。
reboot
重启系统时,可以观察到系统中的所有文件被打上SELinux上下文标签的过程。
由于permissive模式的原因,这些错误会被记录到审计日志,但系统运行并不会被阻断。
登录到系统并切换到root用户,在/var/log/messages这个系统日志文件中,查找:
SELinux is preventing
这样的字眼。
cat /var/log/messages | grep "SELinux is preventing"
如果找不到这种信息,也就可以转入下一步。更保险一点,可以只查找SELinux这个词。
cat /var/log/messages | grep "SELinux"
如下内容显示,有些错误是和GNOME桌面环境相关的:
Mar 08 10:18:24 localhost kernel: SELinux: Initializing.
Mar 08 10:18:26 localhost kernel: SELinux: Disabled at runtime.
Mar 08 10:18:31 localhost journal: Unable to lookup SELinux process context: Invalid argument
Mar 08 10:19:10 localhost gnome-session: SELinux Troubleshooter: Applet requires SELinux be enabled to run.
Mar 08 10:21:03 localhost kernel: SELinux: Initializing.
Mar 08 10:21:04 localhost kernel: SELinux: Disabled at runtime.
Mar 08 10:21:20 localhost journal: Unable to lookup SELinux process context: Invalid argument
这种错误信息都是正常的。然后是第二阶段,继续修改配置文件,从permissive改成enforcing:
SELINUX=enforcing
再重启一次:
reboot
当服务器再次重启后,可以通过sestatus命令检查SELinux状态,比如会有如下信息输出:
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: error (Success)
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
检查系统日志:
cat /var/log/messages | grep "SELinux"
应该不会再包含错误信息。输出内容应类似:
Mar 08 10:24:25 localhost kernel: SELinux: Initializing.
Mar 08 10:24:28 localhost systemd[1]: Successfully loaded SELinux policy in 134.023ms.
如果需要临时切换模式,可以通过setenforce命令。但当SELinux是禁用时,不能用setenforce命令。这个命令很简单,就是:
setenforce permissive
这样就切换过去了。运行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
Max kernel policy version: 28
切换回去强制模式:
setenforce enforcing
本站微信订阅号:
本页网址二维码: