跳转至

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 日发布。


test

Notification Discussion EN Discussion CN

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。
  • 支持启用验证码,包括 hCaptchareCAPTCHAv2reCAPTCHAv3。此功能仅在最新的 Current 版本中可用。
  • 支持身份验证友好的爬虫(基于用户代理和 IP 识别)以避免阻止这些爬虫(例如 GoogleBot)。此功能仅在最新的 Current 版本中可用。
  • 防挑战崩溃器,能够自动阻止恶意 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 仓库 中找到此模块的其他配置提示和文档。