Centos

SELinux 政策問題

  • March 2, 2014

由於 qemu 和 KVM 與 SELinux 開箱即用,我想啟用 SELinux 以改善我的 CentOS 6 伺服器上的訪客隔離。問題是我正在使用需要禁用 SELinux 的第三奇偶校驗虛擬化管理軟體。因為他們永遠不會實現我現在正試圖讓這個工作靠我自己……

雖然我能夠修復所有與 libvirt/qemu 相關的問題(更改預設圖像/lvm 位置並使用 audit2allow 修復另一個問題),但我卻被他們用來處理各種管理任務的自定義lighttpd卡住了。

我嘗試使用 audit2allow 添加自定義規則,但這根本不起作用。因此,由於我不是 SELinux 專家,我只是在尋找一種方法

  • 只需將 lighttpd 置於許可模式(這樣它就可以做任何必要的事情)
  • 僅對執行 VM 的 qemu/libvirt 程序強制執行 SELinux

我已經在 semanage 手冊頁中找到了它,我認為它可能是一個解決方案 semanage permissive -a TYPE http_r命令,但這只是返回:/usr/sbin/semanage: bad option

我認為這是因為他們沒有從 CentOS 儲存庫執行 stock 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

您正在尋找的命令是

semanage permissive -a httpd_t

引用自:https://serverfault.com/questions/579277