跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

详解 Nginx 与云原生 WAF 联动的 HTTPS 流量检测与恶意攻击拦截

SSL卸载是WAF防护HTTPS流量的前提,Nginx需先完成TLS终止解密为明文HTTP,再交由WAF模块(如雷池t1k)进行协议解析、规则匹配和行为分析,否则WAF仅能看见加密流,无法识别SQL注入、XSS等攻击。 HTTPS 流量检测不能绕过解密环节,Nginx 本身不解析加密内容,必须配合 SSL 卸载才能让 WAF 真正“看见”请求体和参数。云原生 WAF(如雷池)在 Nginx 反向代理链路中,正是通过在 Nginx 层完成 TLS 终止,再将明文 HTTP 流量交由 WAF 模块处理,实现精准拦截。 SSL 卸载是 HTTPS 防护的前提 WAF 对 HTTPS 的防护不是“穿透加密”,而是依赖 Nginx 先做 TLS 终止(即 SSL 卸载):客户端的 HTTPS 请求到达 Nginx 后,由 Nginx 使用证书私钥解密,还原为明文 HTTP 流量;之后才把明文请求交给 WAF 检测模块(如雷池的 t1k 模块或 OpenResty 的 Lua 引擎)。若跳过这步,WAF 只能看到加密流,无法识别 SQL 注入、XSS 负载或恶意路径。 Nginx 配置中需启用
ssl_certificate
和
ssl_certificate_key
,并监听 443 端口 业务后端(如 CVM 上的应用)可继续用 HTTP 通信,降低上游服务改造成本 云厂商(如腾讯云)支持托管证书自动续签,避免因证书过期导致卸载失败 检测引擎如何在明文流量中识别攻击 解密后的请求进入 WAF 检测流程,通常分三层处理: 稿定在线PS PS软件网页版 下载 协议解析层 :调用
ngx.req.get_headers()
、
ngx.req.get_uri_args()
、
ngx.req.get_post_args()
提取 URL、Header、Query、Body、Cookie 等原始字段 规则匹配层 :使用 Lua 正则(
ngx.re.match
)或语义分析库(如 LPEG)扫描敏感模式,例如: •
"%f[%w_]union%s+select%f[%w]"
匹配 SQL 注入 •
"]*>"
匹配 XSS 脚本标签 行为分析层 :结合 Redis 实时统计 IP 请求频次、UA 分布、路径热度等,识别目录扫描(如
GET /.git/config
)、暴力爆破或慢速攻击 云原生场景下的联动关键点 在容器化或微服务架构中,Nginx 与 WAF 的协同不只是功能叠加,更强调动态适配与可观测性: WAF 规则需支持热加载,避免重启 Nginx —— 雷池通过 Lua 脚本热更新机制,或 TKE 中配置 ConfigMap 挂载规则文件实现 日志需统一输出:Nginx access log + WAF 拦截日志 → 推送至 CLS 或 ELK,支持按攻击类型、IP、URI 多维聚合分析 负载均衡层(如 Nginx u ps tream)应与 WAF 集群解耦:流量先经 Nginx 分发到多实例 WAF,再由 WAF 转发至业务节点,避免单点瓶颈 对加密流量中的 SNI 或 ALPN 字段可做初步分流,例如将特定域名流量导向专用 WAF 实例(用于合规审计或高敏业务) 绕过风险与加固建议 即使完成 SSL 卸载,攻击者仍可能尝试混淆绕过。常见手法及应对方式包括: URL 编码/十六进制编码(如
%55%4e%49%4f%4e%20%53%45%4c%45%43%54
)→ WAF 必须在规则匹配前做自动解码(Lua 中用
ngx.unescape_uri
) HTTP 参数污染(
?id=1&id=2'--
)→ 检测时需合并所有同名参数值后再分析,而非只取第一个 利用注释符或空格变形(
UNI/**/ON SEL/**/ECT
)→ 规则应兼容常见绕过变体,或引入轻量语法树解析替代纯正则 静态资源不经过 WAF → 明确 Nginx location 分流逻辑,确保所有
/api/
、
/admin/
等敏感路径强制走 WAF,而
/static/
可直连后端或 CDN 缓存

相关文章