环境为centos 6.5 apache2.2 modsecurity2.9.2
安装mod_security的依赖
yum install gcc make httpd-devel libxml2 pcre-devel libxml2-devel curl-devel git
下载最新稳定的mod_security源代码
wget https://www.modsecurity.org/tarball/2.9.2/modsecurity-2.9.2.tar.gz
安装步骤:
tar xzf modsecurity-2.9.2.tar.gz
cd modsecurity-2.9.2
./configure
make install
cp modsecurity.conf-recommended /etc/httpd/conf.d/modsecurity.conf
cp unicode.mapping /etc/httpd/conf.d/
安装完成后调整配置,修改httpd.conf
LoadModule security2_module modules/mod_security2.so
如下配置,需要根据目录位置修改,因为modsecurity安装在/etc/httpd目录,配置文件在conf文件,所以不在写入以下配置。
<IfModule security2_module>
Include conf.d/modsecurity.conf
</IfModule>
配置完成后下载owasp的规则:
cd /etc/httpd
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git
或
wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/v3.1.0-rc1.tar.gz
mv owasp-modsecurity-crs modsecurity-crs
cd modsecurity-crs
cp crs-setup.conf.example modsecurity-crs-config.conf
在httpd.conf中修改
Include modsecurity-crs/modsecurity-crs-config.conf
Include modsecurity-crs/rules/*.conf
修改完成后重启服务:
service httpd restart
完成以后尝试SQL注入攻击,可以看到被拦截的页面。
在apache日志中查看error信息:
从上图可以看到拦截的类型和规则id,还有规则的目录文件。去对应的规则处查看规则文件,可以看到如下的规则匹配。
关于modsecurity的配置,根据各自设置的地址,比如当前地址为/etc/httpd/conf.d中。
SecRuleEngine On 设置为mod是否开启,默认设置为Detection Only,作用是只检测。Off则是关闭mod。
SecRequestBodyAccess On 检查请求体,默认开启,可以选择On或Off。
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus “^(?:5|4(?!04))”SecAuditLogParts ABIJDEFHZ
SecAuditLogType Serial
SecAuditLog /var/log/modsec_audit.log记录日志审计内容,文件地址等,如下图所示,ABCE等,修改SecAuditLogParts参数,可以记录不同的日志部分。对调试waf,修改配置策略很有用。
然后,如果需要修改其他配置项,比如403错误页面,直接再httpd.conf中修改403错误页面即可。
参考链接: