我们在 CentOS 6 上配置了 SELinux 来托管许多网站。
不幸的是,SELinux 正在阻止网站访问(出站)站点,例如 download.wordpress.com 来更新 wordpress 或 Joomla 安装。
我们希望启用 SELinux 并让这些站点能够进行此类连接。
我们害怕的是我们这样做
# setsebool -P httpd_can_network_connect 1
一些“开发人员”会创建一个 php 脚本来开始发送垃圾邮件,导致我们的 IP 被列入黑名单。
有没有办法同时启用出站连接并限制此类出站问题?
谢谢。
答案1
如果您告诉 SELinux 允许出站连接,您就不能再使用它来阻止滥用的 php 脚本。不过,您可以使用 iptables 规则代替它。
iptables -I OUTPUT -m state --state new -m owner --uid-owner httpd -j REJECT
iptables -I OUTPUT -m state --state new -m owner --uid-owner httpd -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT -m state --state new -m owner --uid-owner httpd -p tcp --dport 443 -j ACCEPT
service iptables save
这将允许用户httpd
仅连接到端口 80 和 443。所有其他连接尝试都将被拒绝。 (将“httpd”更改为 apache httpd 运行的用户)。
您甚至可以使用 iptables 的 conlimit 模块限制允许的并行连接数。看http://www.cyberciti.biz/faq/iptables-connection-limits-howto/有关如何执行此操作的示例。