使用 ModSecurity 提高 IIS 站点安全性。

IIS WAF 防火墙选型

由于是自建站点,我这里只限定免费的 WAF。如织梦 CMS,可以使用国内的安全服务商的安全狗。如非国内项目可以使用如 ModSecurity 一些开源项目。

由于是自己写的个人项目,搭建在自己家里的 NAS 上的,没考虑太多,直接装 ModSecurity 来提高一下安全性。

ModSecurity 安装

https://github.com/SpiderLabs/ModSecurity/releases 直接下载安装,注意 IIS 安装需要找 v2 的版本,v3 还没有支持 win 系统。一直 Next,保持默认配置完成安装。

安装后,配置文件在 C:\Program Files\ModSecurity IIS 目录上。

修改相关配置

C:\Windows\System32\inetsrv\config\applicationHost.config 找到

<section name="ModSecurity" overrideModeDefault="Deny" allowDefinition="Everywhere" /></sectionGroup>
改为
<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>

在 ModSecurrity 安装目录 ModSecurity IIS 下找到 modsecurity.conf,将

SecRuleEngine DetectionOnly
改为
SecRuleEngine On

效果测试

修改 modsecurity.conf,在最后一行加上

SecRule ARGS:testparam "test" "id:1234,deny,status:403,msg:'Our test rule has triggered'"

如果 QueryString 的参数为 testparam 而且它的值为 test ,就会被 ModSecurity 拒绝,并回传403。

保存后重启 IIS,打开网址 http://localhost/?testparam=test,测试是否返回 403。

如没有返回 403,可在 windows 系统日志查看应用日志,看是报什么错误。

WAF 规则

安全成功后还需要加载规则,可以下载下面规则库,修改一下配置加载拦截规则

规则库项目地址 https://github.com/coreruleset/coreruleset