waf: NGINX 的 Web 应用防火墙模块
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7、8、9 和 10
- CentOS 7、8、9
- AlmaLinux 8、9
- Rocky Linux 8、9
- Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-waf
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-waf
通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用模块:
load_module modules/ngx_http_waf_module.so;
本文档描述了 nginx-module-waf v6.1.10,于 2025 年 1 月 25 日发布。
English | 简体中文
方便、高性能的 Nginx 防火墙模块。
为什么选择 ngx_waf
- 基本保护:如 IP 或 IP 范围的黑白名单、URI 黑白名单和请求体黑名单等。
- 易于使用:配置文件和规则文件易于编写且可读性强。
- 高性能:高效的算法和缓存。
- 高级保护:兼容 ModSecurity,您可以使用 OWASP(开放 Web 应用安全项目)ModSecurity 核心规则集。
- 友好的爬虫验证:支持验证 Google、Bing、百度和 Yandex 爬虫,并自动允许它们以避免误报。
- 验证码:支持三种验证码:hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。
特性
- 兼容 ModSecurity。此功能仅在最新的
Current版本中可用。 - 与 ModSecurity 兼容的规则。
- 防 SQL 注入(由 libinjection 提供支持)。
- 防 XSS(由 libinjection 提供支持)。
- 支持 IPV4 和 IPV6。
- 支持启用验证码,包括 hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。此功能仅在最新的
Current版本中可用。 - 支持身份验证友好的爬虫(基于用户代理和 IP 识别)以避免阻止这些爬虫(例如 GoogleBot)。此功能仅在最新的
Current版本中可用。 - 防挑战崩溃器,能够自动阻止恶意 IP。
- 对特定 IP 地址的例外允许。
- 阻止指定的 IP 地址。
- 阻止指定的请求体。
- 对特定 URL 的例外允许。
- 阻止指定的 URL。
- 阻止指定的查询字符串。
- 阻止指定的 UserAgent。
- 阻止指定的 Cookie。
- 对特定 Referer 的例外允许。
- 阻止指定的 Referer。
文档
- 推荐链接:https://docs.addesp.com/ngx_waf/
- 备用链接 1:https://add-sp.github.io/ngx_waf-docs/
- 备用链接 2:https://ngx-waf-docs.pages.dev/
联系
- Telegram 频道:https://t.me/ngx_waf
- Telegram 群组(英文):https://t.me/group_ngx_waf
- Telegram 群组(中文):https://t.me/group_ngx_waf_cn
赞助
希望您能帮助推广这个项目。获得的星星越多,这个项目就越好。 :)
测试套件
此模块附带一个基于 Perl 的测试套件。测试用例也是声明式的。 感谢 Perl 领域的 Test::Nginx 模块。
要在您的环境中运行:
## 这将花费很多时间,但只需运行一次。
cpan Test::Nginx
## 您需要指定一个临时目录。
## 如果目录不存在,将自动创建。
## 如果目录已存在,将首先**删除**该目录,然后再创建。
export MODULE_TEST_PATH=/path/to/temp/dir
## 如果您已安装动态模块,则需要指定其绝对路径,
## 否则您无需运行此行。
export MODULE_PATH=/path/to/ngx_http_waf_module.so
cd ./test/test-nginx
sh ./init.sh
sh ./start.sh ./t/*.t
测试套件的某些部分在构建 Nginx 时还需要启用标准模块 proxy、rewrite 和 SSI。
感谢
- ModSecurity:一个开源的跨平台 Web 应用防火墙(WAF)引擎。
- uthash:用于哈希表等的 C 宏。
- libcurl:多协议文件传输库。
- cJSON:超轻量级的 ANSI C JSON 解析器。
- libinjection:SQL / SQLI 词法分析器。
- libsodium:现代、可移植、易于使用的加密库。
- test-nginx:用于 Nginx C 模块和 OpenResty Lua 库开发的数据驱动测试框架。
- lastversion:一个命令行工具,帮助您下载或安装项目的特定版本。
- ngx_lua_waf:基于 lua-nginx-module(openresty)的 Web 应用防火墙。
- nginx-book:Nginx 的中文开发指南。
- nginx-development-guide:Nginx 的中文开发指南。
GitHub
您可以在 nginx-module-waf 的 GitHub 仓库 中找到此模块的其他配置提示和文档。