Linux下PHP+Apache的26个必知的安全设置(8)

要禁用Apache cgi支持,请输入:

# setsebool -P httpd_enable_cgi off

参阅红帽SELinux指南(http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/index.html),即可了解更多信息。

第21个设置项:安装Mod_security

ModSecurity是一个保护Web应用程序的开源入侵检测和预防引擎。你在Linux下很容易安装mod_security,安装后就能保护基于Apache和PHP的应用程序,远离XSS及其他各种攻击:

##几个实例##
#不允许打开/etc/中的文件
SecFilter /etc/
#阻止SQL注入攻击
SecFilter "delete[[:space:]]+from"
SecFilter "select.+from"

第22个设置项:尽可能在chrootjail环境中运行Apache / PHP

将PHP及/或Apache放在chroot jail环境中可以尽量减小潜在的入侵事件造成的破坏,因为它将Web服务器隔离到文件系统的一小部分。你可以使用Apache自带的那种传统的chroot jail环境。不过建议使用FreeBSD jail、运用容器概念的XEN虚拟化、KVM虚拟化或OpenVZ虚拟化。

第23个设置项:使用防火墙限制出站连接

攻击者会使用wget之类的工具,将文件本地下载到你的Web服务器上。你可以使用iptables阻止apache用户的出站连接。ipt_owner模块会试图比对本地创建的数据包与数据包创建者的各个特点。它只有在OUTPUT链中才有效。在这个示例中,允许vivek用户使用端口80连接外界(这适用于RHN或centos repo访问)。

# /sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

下面是另一个示例,阻止apache用户的所有出站连接(通向我们自己的smtp服务器的出站连接除外),以及垃圾邮件验证API服务:

# ..../sbin/iptables --new-chain apache_user/sbin/iptables --append OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT/sbin/iptables --append OUTPUT -m owner --uid-owner apache -j apache_user# allow apache user to connec to our smtp server/sbin/iptables --append apache_user -p tcp --syn -d 192.168.1.100 --dport 25 -j RETURN# Allow apache user to connec to api server for spam validation/sbin/iptables --append apache_user -p tcp --syn -d 66.135.58.62 --dport 80 -j RETURN/sbin/iptables --append apache_user -p tcp --syn -d 66.135.58.61 --dport 80 -j RETURN/sbin/iptables --append apache_user -p tcp --syn -d 72.233.69.89 --dport 80 -j RETURN/sbin/iptables --append apache_user -p tcp --syn -d 72.233.69.88 --dport 80 -j RETURN########################### Addmorerules here ############################ No editing below# Drop everything for apache outgoing connection

# /sbin/iptables --append apache_user -jreject

第24个设置项:关注日志和审查