ModSecurity是一个免费、开源的Apache模块,可以充当Web应用防火墙(WAF)。它有着丰富功能、强大的社区以及可供选择的商业支持,因而对任何提供非静态内容、需要审查的生产型Apache Web服务器来说必不可少。
ModSecurity的主要功能在于,提供可靠的保护,远离各种网上威胁。它不是将安全重心偏离应用程序,而是增添了全局级别的功能。想对它进行配置,只需为客户机与服务器之间通信的每一个部分用条件和操作来指定规则,这些部分包括请求头、请求主体、响应头和响应主体。因而,ModSecurity可以预防针对Web服务器、PHP、Perl和ASP等解释器以及Web应用程序发动的攻击。
ModSecurity可以比软件开发商先行一步,缓解零日攻击、针对安全漏洞提供保护,最近它就运用规则有效地防范了Apache字节范围头(Range Header)拒绝服务安全漏洞和Java浮点值拒绝服务攻击。
ModSecurity在检查完整通信流的同时,还能够将它记入日志,这意味着该软件可用于审查和排除故障。全面日志功能给Web服务器加大了开销,所以只有当问题需要调试时,才通常开启该功能。不过,全面日志(和审查)在一些高度重视安全的企业必不可少。
一旦ModSecurity遇到了匹配的条件,就能采取极其严格的操作。这些操作可能是破坏性的,比如阻止事务,也可能是非破坏性的,比如将数据记入日志。一旦条件符合,它就能执行Linux命令,这大大扩展了ModSecurity的功能,并且为它提供了Linux用于处理事务的所有能力。它可以将规则串联起来,适用于更复杂的条件。它的会计算法可以用来取代ModEvasive,阻止数量过多的请求和拒绝服务攻击。
ModSecurity的安装
只要从基于Debian的发行版的官方存储库下载,即可获得ModSecurity。如果是CentOS及基于红帽的其他发行版,ModSecurity存在于EPEL存储库(http://fedoraproject.org/wiki/EPEL)中,但是如果你想获得拥有最新功能的最新版本,就要执行手动安装。下面介绍了在CentOS 6中如何来安装:
1. 确保httpd和httpd-devel连同它们的所有依赖项都已安装。
2. 启用Apache中的unique_id_module。为此,编辑文件/etc/httpd/conf/httpd.conf,取消含有LoadModule unique_id_module modules/mod_unique_id.so的这一行的注释。你必须重新装入Apache,变更才会生效。
3. 从该项目网站(http://www.modsecurity.org/download/)下载最新版本的ModSecurity。
4. 抽取已下载的软件包,进入到刚创建的目录modsecurity-apache_2.x.x,其中的x.x是ModSecurity的最新分支。
5. 完成安全源软件包的标准步骤:配置、编译和安装。
6. 如果上述命令成功完成执行,ModSecurity就会安装到系统上。一个新的Apache模块会出现在/etc/httpd/modules/mod_security2.so中,而ModSecurity的可执行文件会出现
在/usr/local/modsecurity/bin/中。
7. 要装入新的ModSecurity模块,编辑Apache的配置文件/etc/httpd/conf/httpd.conf。寻找LoadModule,找到装入所有模块的那部分。在该部分的末尾,添加LoadModule security2_module modules/mod_security2.so。
8. 重启Apache。运行apachectl -D DUMP_MODULES |grep security,确保ModSecurity已正确安装,寻找输出中的security2_module (shared)。
至此,ModSecurity已安装,但还没有被启用或配置,现在不妨对它进行配置。