c4rt1y

apache+mod_security安装部署

0x01 介绍

在centos7下部署httpd与ModSecurity。ModSecurity是一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙。它是一个开源、跨平台的web应用程序防火墙(WAF)模块,目的是为增强Web应用程序的安全性和保护Web应用程序避免遭受来自已知与未知的攻击。目前ModSecurity支持apache,nginx,iis上部署,不过在nginx和iis上的支持力度目前不是很给力,内存消耗很大,还有一些其他bug。

0x02 环境搭建

#安装httpd环境以及依赖
[root@master ~]# yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel –y

#安装mod_security
[root@master ~]# yum install mod_security –y

#测试是否可以正常启动
[root@master ~]# systemctl start httpd

#如果未安装git,则安装git
[root@master ~]# yum install git -y

#下载owasp-modsecurity-crs到/etc/httpd/modsecurity-crs目录
[root@master ~]# git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git /etc/httpd/modsecurity-crs

#配置modsecurity-crs主文件
[root@master ~]# mv /etc/httpd/modsecurity-crs/crs-setup.conf.example /etc/httpd/modsecurity-crs/crs-setup.conf

#方法一 :在httpd.conf最下面加入该段内容
[root@master ~]# vi /etc/httpd/conf/httpd.conf
<IfModule security2_module>
 IncludeOptional  modsecurity-crs/crs-setup.conf
 IncludeOptional  modsecurity-crs/rules/*.conf
</IfModule>

#方法二:在httpd.conf最下面加入该段内容
<IfModule security2_module>
 Include  modsecurity-crs/crs-setup.conf
 Include  modsecurity-crs/rules/*.conf
</IfModule>

#增加
[root@master ~]# vi /etc/httpd/modsecurity.d/whitelist.conf
<IfModule mod_security2.c> 
SecRuleEngine On 
SecRequestBodyAccess On  
SecResponseBodyAccess On 
SecDataDir /tmp 
</IfModule>

#这里注意,按照默认方法,可以重启了,但是会发现报错
[root@master ~]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

#方法探究,
1.查找日志,未找到日志报错信息,
2.查看状态,只提示启动失败
3.查看是否加载modsecurity模块,发现报错信息

[root@master ~]# /usr/sbin/httpd  -M
AH00526: Syntax error on line 64 of /etc/httpd/modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf:
Error creating rule: Failed to resolve operator: detectXSS

[root@master ~]# rm -rf /etc/httpd/modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf

[root@master ~]# /usr/sbin/httpd  -M
AH00526: Syntax error on line 68 of /etc/httpd/modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf:
Error creating rule: Failed to resolve operator: detectSQLi
[root@master ~]# rm -rf /etc/httpd/modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf

#再次启动httpd
[root@master ~]# systemctl restart httpd

#删除了sqli和xss模块,导致可能会出现无用功,所以如果可以的话,使用mod_security2.6的版本测试吧,至少那个还算稳定。
#查看下规则库,不是特别能够理解,路漫漫其修远兮,吾将上下而求索。

#应用层防火墙ModSecurity日志控制台,这里由于后期才发现,所以先不测试了

0x03 资料来源

http://blog.csdn.net/cheng_fangang/article/details/40614041
http://netsecurity.51cto.com/art/201412/460328.htm
http://www.freebuf.com/articles/web/43559.html
http://www.cnblogs.com/shengulong/p/6210234.html   [该文章有些bug]
http://www.freebuf.com/sectool/27096.html
http://www.waf-fle.org/downloads/waf-fle_0.6.3-deployment_guide.pdf
GoTop