根据SELinux 简介,第 14.4.2 节,
SELinux 支持内置于 Debian 提供的标准内核中。核心 Unix 工具无需任何修改即可支持 SELinux。
我已经在我的上安装了selinux-basics
和软件包selinux-policy-default
Debian 威兹(稳定的)系统,我看到它在安装过程中加载了一些策略,所以我很确定安装本身进展顺利。
我编辑 /etc/default/grub 说:
GRUB_CMDLINE_LINUX="selinux=1 audit=1 enforcing=0"
(该变量曾经为空)并运行 update-grub。 /boot/grub/grub.cfg 确实包含了 SELinux 相关的内核参数。
/.autorelabel
我根据 /usr/sbin/selinux-activate 脚本的“enable”分支创建了一个文件。
进行上述更改后,我已重新启动系统。重启期间没有发生任何异常情况。
dmesg | head
输出,除其他外:
Command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=c050d662-f94a-447a-9342-0fc69f65a513 ro selinux=1 audit=1 enforcing=0 quiet pci=nomsi
据我所知,一切都已就位。然而,它似乎不起作用。 id -Z
返回:
$ id -Z
id: --context (-Z) works only on an SELinux-enabled kernel
$
状态给出:
# sestatus
SELinux status: disabled
#
# check-selinux-installation
getfilecon: getfilecon(/proc/1) failed
SELinux is not enabled.
Could not read the domain of PID 1.
/etc/pam.d/login is not SELinux enabled
Postfix init script is syncing the chroots.
Postfix has chrooted service in master.cf
FSCKFIX is not enabled - not serious, but could prevent system from booting...
#
在我的系统上启用 SELinux 还缺少什么?
答案1
security=selinux
正如评论中指出的,您还需要将参数传递给内核。在 Debian 系统上,这应该自动添加到 grub 配置中selinux-activate
。
核心文档参数解释security
:
[安全] 选择启动时启用的安全模块。如果未指定该启动参数,则仅加载第一个请求安全注册的安全模块。无效的安全模块名称将被视为未选择任何模块。
在 Debian 上这是相关的,因为 Debian 还支持 AppArmor 安全模块。