跳转至

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 v10.1.2,于 2022 年 7 月 09 日发布。


test docs docker Codacy Badge Codacy Badge

Notification Discussion EN Discussion CN

English | 简体中文

方便、高性能的 NGINX 防火墙模块。

为什么选择 ngx_waf

  • 基本保护:如 IP 或 IP 范围的黑白名单、URI 黑白名单和请求体黑名单等。
  • 易于使用:配置文件和规则文件易于编写且可读性强。
  • 高性能:高效的算法和缓存。
  • 高级保护:兼容 ModSecurity,您可以使用 OWASP(开放 Web 应用安全项目)ModSecurity 核心规则集
  • 友好的爬虫验证:支持验证 Google、Bing、百度和 Yandex 爬虫,并自动允许它们以避免误报。
  • 验证码:支持三种验证码:hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。

特性

  • 兼容 ModSecurity
  • 支持 IPV4 和 IPV6。
  • 支持启用验证码,包括 hCaptchareCAPTCHAv2reCAPTCHAv3
  • 支持身份验证友好的爬虫(基于用户代理和 IP 识别)以避免阻止这些爬虫(例如 GoogleBot)。
  • CC 保护,如果请求速率超过限制,IP 将被自动禁止一段时间,或者使用验证码进行人工识别,成功后允许通过。
  • 对特定 IP 地址的例外允许。
  • 阻止指定的 IP 地址。
  • 阻止指定的请求体。
  • 对特定 URL 的例外允许。
  • 阻止指定的 URL。
  • 阻止指定的查询字符串。
  • 阻止指定的 UserAgent。
  • 阻止指定的 Cookie。
  • 对特定 Referer 的例外允许。
  • 阻止指定的 Referer。

文档

联系

赞助

希望您能帮助宣传这个项目。获得的星星越多,这个项目就越好。:)

测试套件

此模块附带一个 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 仓库 中找到此模块的其他配置提示和文档。