说明:本文以 Windows 环境下的 Apache 安装 mod_security 为例,介绍开源 WAF 产品的安装使用。
http://www.modsecurity.cn/
https://github.com/SpiderLabs/ModSecurity
一、WAF 基本介绍
WAF 全称 Web Application Firewall,即 Web 应用防火墙。Web 应用防火墙是通过执行一系列针对 HTTP/HTTPS 的安全策略来专门为 Web 应用提供保护的一款产品,跟网络防火墙的作用不同。
WAF 的使用场景:例如服务器中有些安全性比较差的应用程序,比如旧版的 wordpress、discuz、phpwind 等,审计和修改全部代码比较麻烦,这时候最好的办法就是通过部署 WAF 来实现安全防护。
WAF 可以防护的常见风险包括:SQL 注入、XSS、利用本地/远程文件包含漏洞进行攻击、PHP 代码注入、黑客扫描网站、源代码/错误信息泄露等等。
目前市面上的 WAF 非常多,总体上可以分成 3 类:硬件型 WAF(厂商安装)、云 WAF(比如阿里云腾讯云华为云的 WAF,购买服务)、软件型 WAF(可以部署在 Apache、Nginx 等 HTTPServer 中,有很多开源的产品)。
二、下载 mod_security
下载和安装 Apache 的步骤参考:《02-Windows 安装 phpstudy》。
如果使用 phpstudy 内置的 Apache,Apache 文件在 Extensions 目录下,如:E:\phpstudy_pro\Extensions\Apache2.4.39
1、下载 mod_security
下载 mod_security,根据操作系统位数选择,win64 是 64 位,win32 是 32 位。Apache VS17 binaries and modules download
![](https://img-blog.csdnimg.cn/img_convert/4cfedafdc6c7f6132acf419c674a4270.png)
解压 mod_security-2.9.3-win64-VS16.zip,复制两个文件:1)复制 mod_security2.so 到 apache/modules 文件夹 2)复制 yajl.dll 到 apache/bin 文件夹
![](https://img-blog.csdnimg.cn/img_convert/de7d58f5450e5dd6ce47c8d38a0d7ac1.png)
2、修改 Aapche 配置文件
修改 Apache2.4.39\conf\httpd.conf 主要修改内容(没有就加上,有就取消注释,放在相同的模块附近):取消注释:
LoadModule security2_module modules/mod_security2.so
下面添加一行:
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule unique_id_module modules/mod_unique_id.so
![](https://img-blog.csdnimg.cn/img_convert/c03961a7026f2de567f7175866b9d918.png)
添加
Include conf/modsecurity/*.conf
![](https://img-blog.csdnimg.cn/img_convert/2bb9c8cfc09858e728d29e625049fde0.png)
3、修改 modsecutiry 配置文件
打开 mod_security-2.9.3-win64-VS16\mod_security-2.9.3\mod_security 复制一个 modsecurity.conf-recommended,改名为 modsecurity.conf
在 Apache2.4.39\conf 下创建一个文件夹,命名为 modsecurity 把 modsecurity.conf 放在 modsecurity 文件夹下
![](https://img-blog.csdnimg.cn/img_convert/1974082ac78d9e19495416065b19f5ce.png)
modsecurity.conf 修改/添加两行配置:
SecRuleEngine On
SecDefaultAction "deny,phase:2,status:403"
![](https://img-blog.csdnimg.cn/img_convert/ad9a367e7ff4efda74705bc3ff4c9862.png)
此处含义是开启安全规则引擎,如果触发规则,默认防护措施是返回 HTTP 403 错误。修改日志路径,否则 Apache 启动会报路径不存在的错误:
SecAuditLog E:\phpstudy_pro\Extensions\Apache2.4.39\logs\modsec_audit.log
![](https://img-blog.csdnimg.cn/img_convert/b04d9c8041c282b834b79568a705af89.png)
![](https://img-blog.csdnimg.cn/img_convert/abdd38147d6164774fd5174e00627192.png)
因为没有 unicode.mapping 文件,这一行要注释
SecUnicodeMapFile unicode.mapping 20127
![](https://img-blog.csdnimg.cn/img_convert/9461481883df371f09cc82894297daaf.png)
三、添加 owasp 规则
1、下载规则文件
https://github.com/SpiderLabs/owasp-modsecurity-crs
![](https://img-blog.csdnimg.cn/img_convert/83f39da79d1e11019ca43bb8d2b663b2.png)
2、配置规则
解压 owasp-modsecurity-crs-3.2.0,把 rules 文件夹复制到 Apache2.439\conf\modsecurity 目录下复 制 crs 根 目 录 下 的 crs-setup.conf.example , 重 命 名 为 crs-setup.conf,放在 Apache2.4.39\conf\modsecurity 目录下
![](https://img-blog.csdnimg.cn/img_convert/b8446034bbb757ebd88efbe9ad08f9ff.png)
3、修改 httpd.conf
Apache2.4.39\conf\httpd.conf 再添加下面这一行(第一行前面添加过了):
Include conf/modsecurity/rules/*.conf
![](https://img-blog.csdnimg.cn/img_convert/f49348dbc22b8d9a291b492c745b30a0.png)
4、重启 Apache
所有配置修改完以后重启 Apache。
5、测试注入
这时候尝试注入,返回 phpstudy 的 403 页面:
![](https://img-blog.csdnimg.cn/img_convert/016883f242399c1eb9f670992bcc9fcd.png)
如果 sqlmap 也无法注入:
sqlmap --purge (先清空缓存)
sqlmap.py -u http://localhost/school/url.php?id=1
![](https://img-blog.csdnimg.cn/img_convert/b23879b85ce9ce7c26d1e5e001cfb651.png)
结果显示有 75 次 403 禁止访问的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)