我正在运行 centos 6.2
最近我注意到 apache 在启用 selinux 的情况下运行
# 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 these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
我注意到这些错误出现在 dmesg 上
type=1400 audit(1354453732.704:9056368): avc: denied { name_connect } for pid=39006 comm="httpd" dest=11211 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:memcache_port_t:s0 tclass=tcp_socket
type=1400 audit(1354453735.777:9056369): avc: denied { name_connect } for pid=39046 comm="httpd" dest=6379 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
然后我启用
/usr/sbin/setsebool httpd_can_network_connect=1
这样就不再出现错误并且网页也开始正常工作。
我的问题是,如果 selinux 处于宽容模式,selinuxtype=targeted 是否会强制执行任何政策?
如果不是,那么由于 selinux 已经处于宽容模式,如何解决 apache 的问题?
答案1
在宽容模式下,SElinux 将记录在强制模式下会导致拒绝访问的项目,但实际上不会拒绝这些操作。因此,它不会在宽容模式下强制执行策略,但会参考这些策略。如果您处于强制模式,您将无法启动/使用 httpd,直到您发出 setsebool 命令,因为它与网络连接之间的链接将被 SELinux 阻止。
答案2
正如 John 所回答的,SELinux 仅记录错误,而不是阻止服务。
我们在需要将产品部署到生产环境之前进行测试并了解可能出现哪些问题的情况下使用 SElinux。
不过您也可以在生产中进行相同的测试,并不断修复策略,直到您确定一切就绪,然后再将模式更改为有针对性的。