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
Claude 深度研究指南:斯坦福验证的多视角提问法(附 4 个提示词)
AI实验室 斯坦福 STORM 方法实操版——用多视角提问让 Claude 做出博士级研究。5 种专家视角、矛盾地图、综合简报、同行评审,4 个可复制提示词。
4
如何做好研究:没人教过你的 8 项基本功
认知与成长 Hamming、Feynman、Shannon——没有人真正教过你怎么做研究。这篇文章把多位研究巨匠的方法论浓缩为 8 项可刻意训练的基本功:从自己选题到收紧循环,从盯着输出看到找到你的人。研究能力不是天赋,是技能叠加。
5
Goal 是目的地,Loop 是导航:AI 真正变聪明的核心秘密
AI实验室 一文讲透 AI Agent 的两大核心概念:Goal(目标)与 Loop(循环)。从基础定义到 8 种主流 Loop 类型详解,再到可直接复用的提示词模板,帮你从被动提问者升级为 AI 指挥官。
随机文章 随机推荐

评论区

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

目录