由于 qemu 和 KVM 开箱即用,可以很好地与 SELinux 配合使用,因此我想启用 SELinux 来改善 CentOS 6 服务器上的客户隔离。问题是,我正在使用第三奇偶校验虚拟化管理软件,该软件要求禁用 SELinux。由于他们永远不会实现这一点,我现在正尝试自己实现它...
虽然我能够修复所有 libvirt/qemu 相关问题(更改默认映像/lvm 位置并修复 audit2allow 的另一个问题),但我却被自定义问题困扰lighttpd他们用它来处理各种管理任务。
我尝试使用 audit2allow 添加自定义规则,但根本不起作用。由于我不是 SELinux 专家,所以我只是想找一种方法来
- 只需将 lighttpd 置于宽容模式(这样它就可以做任何必要的事情)
- 仅对运行虚拟机的 qemu/libvirt 进程强制执行 SELinux
我已经在 semanage 手册页中找到了这一点,我认为它可能是一个解决方案
semanage permissive -a TYPE http_r
命令,但它只是返回:/usr/sbin/semanage:错误的选项
我推测这是因为他们没有运行 CentOS 仓库中的原装 lighttpd,所以缺少 lighty 的策略。
以下是 audit.log 中的一段简短摘录
type=SYSCALL msg=audit(1393761691.786:1259): arch=c000003e syscall=9
success=yes exit=140369999609856 a0=0 a1=1fa588 a2=5 a3=802 items=0
ppid=1 pid=8532 auid=4294967295 uid=500 gid=500 euid=500 suid=500
fsuid=500 egid=500 sgid=500 fsgid=500 tty=(none) ses=4294967295
comm="php" exe="/usr/bin/php" subj=system_u:system_r:httpd_t:s0
key=(null) type=AVC msg=audit(1393761691.813:1260): avc: denied {
name_connect } for pid=8532 comm="php" dest=5656
scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket type=SYSCALL
msg=audit(1393761691.813:1260): arch=c000003e syscall=42 success=no
exit=-115 a0=4 a1=7fffa6ed55f0 a2=10 a3=0 items=0 ppid=1 pid=8532
auid=4294967295 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500
sgid=500 fsgid=500 tty=(none) ses=4294967295 comm="php"
exe="/usr/bin/php" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1393761691.969:1261): avc: denied { nlmsg_write }
for pid=8552 comm="tc" scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:system_r:httpd_t:s0 tclass=netlink_route_socket
答案1
您正在寻找的命令是
semanage permissive -a httpd_t