Loading... <div class="tip inlineBlock error"> 本文的目的是为了实现在Windows下使用nginx(宝塔面板)也可以开启waf功能,因为在windows上,IIS、Apache的防火墙有很多,但是在nginx上目前还是空白,而且宝塔的防火墙需要开通专业版才能使用并且价格很高,本篇教程刚好填补这片领域的空白。 </div> 在Linux当中,宝塔nginx内置了lua防火墙,但随着技术的进步,宝塔免费nginx防火墙已替代了lua防火墙,但大致查看下,lua与免费防火墙规则基本相同,同时,由于免费防火墙不支持windows操作系统,windows nginx也无法像linux那样进行自编译,因此只能依靠宝塔自带的lua开启免费版防火墙。 <div class="tip inlineBlock info"> 2022-01-20 已更新2.0版本 由于luawaf原作者已不再维护规则,导致规则老旧,本站已更新部分规则以防护最新网络威胁,更新内容如下: PHP脚本执行过滤规则; 敏感文件目录过滤规则(get); 敏感文件目录过滤规则(post); SQL报错注入防护规则; SQL注入漏洞防护规则; “菜刀”流量拦截规则; ThinkPHP Payload漏洞防护规则; Log4j漏洞防护规则; 完善UA过滤机制。 </div> 目前,百度上尚未找到基于windows的宝塔防火墙开启教程,因此,本站可能是全网唯一一篇相关教程。 1、下载lua防火墙配置文件并安装 下载地址:<button class="btn m-b-xs btn-info " onclick='window.open("http://d.iqblog.cn/luawaf/luawaf1.0.zip","_blank")'>点击下载1.0版本</button> <button class="btn m-b-xs btn-info " onclick='window.open("http://d.iqblog.cn/luawaf/luawaf2.0.zip","_blank")'>点击下载2.0版本</button> 下载后上传到宝塔nginx安装目录,并解压。 2.在宝塔安装目录下conf文件夹内新建luawaf.conf文件,并编辑文件为: ``` lua_package_path "/BtSoft/nginx/waf/?.lua"; lua_shared_dict limit 10m; init_by_lua_file /BtSoft/nginx/waf/init.lua; access_by_lua_file /BtSoft/nginx/waf/waf.lua; ``` 保存。 3.找到nginx配置文件,找到#include luawaf.conf;删除前面的#号,保存。  重启nginx,在你的域名后面输入/?id=../etc/passwd ,如出现以下界面,代表lua防火墙已成功开启。  **配置修改** lua防火墙可自行修改参数; 进入waf文件夹,里面的config.lua是防火墙的主配置参数: ``` RulePath = "C:/BtSoft/nginx/waf/wafconf/" --waf 详细规则存放目录(一般无需修改,如路径不同,请修改为正确路径) attacklog = "on" --是否开启攻击日志记录(on 代表开启,off 代表关闭。下同) logdir = "C:/BtSoft/wwwlogs/waf/" --攻击日志文件存放目录(修改为你想设置的,注意路径要真实存在) UrlDeny="on" --是否开启恶意 url 拦截 Redirect="on" --拦截后是否重定向 CookieMatch="off" --是否开启恶意 Cookie 拦截 postMatch="off" --是否开启 POST 攻击拦截 whiteModule="on" --是否开启 url 白名单 black_fileExt={"php","jsp"} --文件后缀名上传黑名单,如有多个则用英文逗号分隔。如:{"后缀名1","后缀名2","后缀名3"……} ipWhitelist={"127.0.0.1"} --白名单 IP,如有多个则用英文逗号分隔。如:{"127.0.0.1","127.0.0.2","127.0.0.3"……} 下同 ipBlocklist={"1.0.0.1"} --黑名单 IP CCDeny="off" --是否开启 CC 攻击拦截 CCrate="300/60" --CC 攻击拦截阈值,单位为秒。"300/60" 代表 60 秒内如果同一个 IP 访问了 300 次则拉黑 ``` 在该目录下的wafconf目录下,可以看到具体的防护规则,如您不了解正则表达式,请不要随意修改这些文件,保持默认即可。 在wafconf中,可以手动设置IP黑白名单,url白名单: blockip:IP黑名单 whiteip:IP白名单 whiteurl:url白名单 一般无特殊需求不要更改这些设置。 总结一些,通过这些步骤操作之后,我们就成功开启了nginx防火墙,在遇到渗透与扫描的时候,可以对黑客行为进行缓解,但由于内置规则过于简单,因此存在被绕过的可能,但对于扫描器和菜鸟黑客已经足够让他们喝一壶的了。 网络安全无小事,特别是网络安全法和网站安全负责人负责制建立以后,每个人都要对网站安全负起责任来,单纯的使用防火墙、依靠安全软件堆积无法真正解决安全问题,人工加固,定期巡检,保持程序更新,即使修复安全漏洞才是关键。 如果有条件的话,还是建议可以上个云waf,像是奇安信网站卫士、知道创宇加速乐、GoodWAF都挺不错,最重要的是免费的。 感谢您的阅读与观看,如果您认为此文章帮助到了您,请转发给他人让更多的人看到,您特可以点击下方打赏按钮对我进行打赏,投之以桃,报之以李。 最后修改:2022 年 03 月 17 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏
18 条评论
我配置完毕后,nginx启动啥的一切正常,config中白名单切换也是有效的,但是针对 http://test.com/test.php?id=非法字符,这种的无法拦截。博主有遇到过嘛。配置如下
RulePath = "D:/BtSoft/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "on"
--是否开启攻击信息记录,需要配置logdir
logdir = "D:/BtSoft/nginx/conf/waf/log"
--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
UrlDeny="on"
--是否拦截url访问
Redirect="on"
--是否拦截后重定向
CookieMatch = "on"
--是否拦截cookie攻击
postMatch = "on"
--是否拦截post攻击
whiteModule = "off"
--是否开启URL白名单
black_fileExt={"php","jsp"}
--填写不允许上传文件后缀类型
ipWhitelist={"127.0.0.1"}
--ip白名单,多个ip用逗号分隔
ipBlocklist={"1.0.0.1"}
--ip黑名单,多个ip用逗号分隔
CCDeny="on"
--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCrate = "100/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址100次
html=[[Please go away~~]]
--警告内容,可在中括号内自定义
--备注:不要乱动双引号,区分大小写
你从别的地方复制的吧,本站不是从github中提取的,不一样
是的
按本站教程来,github那些,是针对linux的
是是试了文件中的下载发现不行,又找的github,还是不行,哭了
除了路径,不要修改任何东西,你是宝塔面板用户吗
另外,我遇到了
[alert] 10708#15212: OpenEvent("ngx_master_12104") failed (2: The system cannot find the file specified)
是什么原因?
你是怎么知道这个网站的,另外,你用的是宝塔windows面板吗,这个都是按照宝塔的来的
hi,这个文件链接好像下不了啊
已修复
你好,感谢反馈,稍后会进行修复。
有没有基于luawaf的规则更新git
luawaf官方规则已经不更新了,我这个是有更新的,包括log4j的规则都有。
防火墙2.0版本是用的新规则,可以防更多攻击,如果有误报,请在评论区留言。
这个lua防火墙脚本太老了,好多年都不更新了!我记得好像都没有人维护了!推荐试试 Fail2ban !
您好,此规则相对于原生luawaf,规则已做更新,可以防护更多攻击,同时有效降低误报。
我的体验是误伤率极高!(´இ皿இ`)
我用着还好,误报的情况很少,本站已对规则进行优化,误报低,提供的是基础通用防护规,同时对于最近很火的log4j漏洞也有防护效果。