ngx_waf 高性能 Nginx 网站防火墙模块全解析

736 字
4 分钟
ngx_waf 高性能 Nginx 网站防火墙模块全解析

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

ngx_waf.jpg
ngx_waf.jpg

功能特性#

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 模块:

Terminal window
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这个文件:

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

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

编译模块

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

输入版本号,回车,耐心等待编译完成。(Nginx 版本号可在 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 使配置生效。

以上为喵斯基部落的自用配置,更多使用姿势请自行访问 -> 官方文档

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
ngx_waf 高性能 Nginx 网站防火墙模块全解析
https://blog.moewah.com/posts/4880/
作者
MoeWah
发布于
2021-09-13
许可协议
CC BY-NC-SA 4.0
相关文章 智能推荐
1
通过 Let's Encrypt 获取免费 SSL 证书的两种方法!
网络与安全 如何通过Let's Encrypt获取免费SSL证书?本文详细对比acme.sh和certbot两种方法,手把手教你配置泛域名SSL证书,解决自动化续期问题。涵盖DNS验证、命令行操作等实战步骤,快速上手无需复杂配置。适合服务器管理员和开发者参考学习。
2
Linux VPS屏蔽国外IP访问的实战方案
虚拟化与运维 如何有效防止国外IP攻击?本文提供基于ipset和iptables的屏蔽指定国家及仅允许国内访问的完整解决方案,帮助Linux VPS用户快速构建安全防护策略。
3
纳瓦尔的人生智慧:关于财富、幸福与自由的 18 条原则
认知与成长 硅谷投资人纳瓦尔·拉维坎特的人生洞见浓缩:从财富创造、幸福修炼到心智模型,18 条可执行原则帮你在长期主义中找到自由。
4
AI搜索吃掉一半流量?2026 你必须调整的内容推广方法
增长与SEO 2026年AI搜索覆盖48%查询,传统社群转发式推广失效。梳理五个按意图优先级排列的分发渠道——GEO优化、Reddit投放、战略合作、员工倡导、直接外联——附带推广时间线和内容再创作框架。
5
有了 tmux 还需要 herdr 吗?一个给 AI Agent 用的「终端管家」
AI实验室 herdr 是一个终端原生的 Agent 多路复用器,专为同时运行多个 AI Agent 的开发者设计。它解决了 Agent 管理混乱、会话丢失、远程协作等痛点,不替换终端、不依赖 Electron。本文从实际使用体验出发,带你了解它的核心功能和上手方法。
随机文章 随机推荐

评论区

Profile Image of the Author
MoeWah
Hello, I'm MoeWah.
专题文章
分类
站点统计
文章
198
分类
9
标签
434
总字数
373,761
运行时长
0
最后活动
0 天前

目录