ngx_waf:一款高大全的Nginx网站防火墙模块

ngx_waf 是最近新出的一款方便且高性能的 Ng­inx 防火墙模块,功能齐全,「网络应用防火墙」的基本功能都有。安装方便,大多数情况下你可以直接下载使用预构建的模块。使用便捷,配置指令简单易懂。规则灵活,提供高级规则,将动作(如拦截或放行)和多个条件表达式组合起来。Github 项目地址:
https://github.com/ADD-SP/ngx_waf

ngx_waf:一款高大全的 Nginx 网站防火墙模块

功能特性

1、SQL 注入防护(Powered By libinjection)。2、XSS 攻击防护(Powered By libinjection)。3、支持 IPV4  IPV6。4、支持开启验证码(CAPTCHA),支持 hCaptcha、reCAPTCHAv2  reCAPTCHAv3。此功能仅限最新的 Current 版本。5、支持识别友好爬虫(如 BaiduSpider)并自动放行(基于 User-Agent  IP 的识别)。此功能仅限最新的 Current 版本。6、CC 防御,超出限制后自动拉黑对应 IP 一段时间。7、IP 黑白名单,同时支持类似 192.168.0.0/16  fe80::/10,即支持点分十进制和冒号十六进制表示法和网段划分。8、POST 黑名单。9、URL 黑白名单10、查询字符串(Query String)黑名单。11、UserAgent 黑名单。12、Cookie 黑名单。13、Referer 黑白名单。14、高级规则,将动作(如拦截或放行)和多个条件表达式组合起来。

编译安装 ngx_waf 模块

⚠️ 本教程基于军哥的 LNMP 一键包环境!若环境相同,可供参考!

当前各程序版本信息如下:

LNMP = v1.7
Nginx version = 1.20.1
gcc version = 4.8.5

编译安装 LTS 版本的 ngx_waf 模块:

cd /usr/local/src 
  && git clone -b lts https://github.com/ADD-SP/ngx_waf.git 
  && cd ngx_waf 
  && make

cd /usr/local/src 
  && git clone https://github.com/libinjection/libinjection.git lib/libinjection

cd /usr/local/src/ngx_waf 
  && git clone https://github.com/DaveGamble/cJSON.git lib/cjson

cd /usr/local/src/ngx_waf 
  && git clone https://github.com/libinjection/libinjection.git inc/libinjection

cd /usr/local/src 
  && git clone https://github.com/jedisct1/libsodium.git --branch stable libsodium-src 
  && cd libsodium-src 
  && ./configure --prefix=/usr/local/src/libsodium --with-pic 
  && export LIB_SODIUM=/usr/local/src/libsodium 
  && make -j$(nproc) && make check -j $(nproc) && make install

cd /usr/local/src 
  && git clone https://github.com/troydhanson/uthash.git 
  && export LIB_UTHASH=/usr/local/src/uthash

进入 lnmp1.7 所在目录,编辑
~/lnmp1.7/include/upgrade_nginx.sh 这个文件:

nano ~/lnmp1.7/include/upgrade_nginx.sh

找到 else 后面的 ./configure 这行(大概第 62 行),在这串编译参数末端追加 –add-module=/usr/local/src/ngx_waf –with-cc-opt=’-std=gnu99’(注意:有空格!!有空格!!不要换行!!!不要换行!!!

编译模块

cd ~/lnmp1.7
./upgrade.sh nginx

输入版本号,回车,耐心等待编译完成。(Ng­inx 版本号可在 nginx 下载页 找到预升级的版本号进行输入并按下回车键)

配置 waf 防火墙

在主机配置文件例如
/usr/local/nginx/conf/vhost/www.moewah.com.conf 文件 server 块内加入以下代码:

# 启用模块
waf on;
# 指定规则文件所在目录
waf_rule_path /usr/local/src/ngx_waf/assets/rules/;
# 指定防火墙的工作模式
waf_mode DYNAMIC;
# 指定请求频率上限为每分钟1000次,超过请求拉黑60分钟
waf_cc_deny rate=1000r/m duration=60m;
# 最多缓存 50 个检测目标的检测结果
waf_cache capacity=50;
# 被攻击时降低带宽占用
waf_http_status cc_deny=444;

修改完成后,重启 nginx 使配置生效。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/share/29820.html

发表评论

登录后才能评论