openresty使用ngx_waf
openresty
使用ngx_waf
介绍ngx_waf
为什么选择 ngx_waf
- 基础防护:如 IP 或 IP 网段的黑白名单、URI 黑白名单和请求体黑名单等。
- 使用简单:配置文件和规则文件书写简单,可读性强。
- 高性能:使用高效的 IP 检查算法和缓存机制。
- 高级防护:兼容 ModSecurity,因此你可以使用开放式网络应用安全项目(OWASP)® 的核心规则库。
- 友好爬虫验证:支持验证 Google、Bing、Baidu 和 Yandex 的爬虫并自动放行,避免错误拦截。
- 验证码:支持三种验证码:hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。
功能
- 兼容 ModSecurity。此功能仅限最新的 Current 版本。
- SQL 注入防护(Powered By libinjection)。
- XSS 攻击防护(Powered By libinjection)。
- 支持 IPV4 和 IPV6。
- 支持开启验证码(CAPTCHA),支持 hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。此功能仅限最新的 Current 版本。
- 支持识别友好爬虫(如 BaiduSpider)并自动放行(基于 User-Agent 和 IP 的识别)。此功能仅限最新的 Current 版本。
- CC 防御,超出限制后自动拉黑对应 IP 一段时间。
- IP 黑白名单,同时支持类似
192.168.0.0/16
和fe80::/10
,即支持点分十进制和冒号十六进制表示法和网段划分。 - POST 黑名单。
- URL 黑白名单
- 查询字符串(Query String)黑名单。
- UserAgent 黑名单。
- Cookie 黑名单。
- Referer 黑白名单。
打包
前言
openresty
天生支持lua
,线上的日志是有lua
做处理
线上有不同的vpc
,每个环境都要做到快速部署,故把模块都打进docker
中
本文章主要讲的是ngx_waf,但其实不止这个模块,一共有:
- ngx_waf最新版(非tls版)
- nginx-module-vts
- nginx-lua-prometheus
使用
监控
http模块配置
1 | vhost_traffic_status_zone; |
开启服务
1 | server { |
ngx_waf
我使用到这个模块里的最主要的就是waf_captcha
,这个是人机验证功能
由于自带的页面太难看了,所以我做了一个界面
1 | waf_captcha on prov=hCaptcha file=/data/res/CAPTCHA.html secret=xxx; |
本博客所有文章除特别声明外,均采用 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》 许可协议。转载请注明来源 buyfakett's Blog!
评论