跳转至

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