前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Nginx流量镜像,优雅的接入waf

利用Nginx流量镜像,优雅的接入waf

作者头像
李俊鹏
发布2020-06-15 16:30:14
2.1K0
发布2020-06-15 16:30:14
举报
文章被收录于专栏:运维研习社

之前介绍了Nginx的两种开源waf,Naxsi和ModSecurity,有人担心直接上生产会不会有问题,拦截正常请求,我想说——那是必然会影响的

现在大多WAF都是通过规则匹配请求特征,有规则,肯定就不会那么智能的避开所有正常请求,只拦截恶意请求,虽然现在有百度的openrasp等不依赖于请求特征的运行时攻击检测工具,但是也不能做到完全准确的拦截攻击或恶意请求

怎么才能比较友好的在线上接入Naxsi或ModSecurity开源waf?

这里就要参考网络防火墙,或者入侵检测系统的方法,通过流量镜像的方式,在网络故障处理中,为了更好的分析定位网络问题,我们通常会做流量镜像或者端口镜像,来保存镜像流量,用于分析恶意请求、或抓包故障定位等,我们web上也可以通过这种方式来做

怎么做呢,有很多开源的流量复制/镜像工具,比如gor、tcpcopy等,都可以用来做流量镜像

但是在Nginx下面,你就没必要这么麻烦了,Nginx早在1.13版本的时候就添加了ngx_http_mirror_module模块,就是用来做流量镜像的

Nginx的流量镜像模块,很简单,就两个指令

mirror用来指定请求将被镜像到哪个uri,可以指定多个镜像,uri也可以用相同的,相同的uri就表示将流量放大了一倍,也就是多复制了一份流量到uri,这个也是可以用来测试流量放大的情况下,后端的负载情况,简单演示

先看下不放大的情况下,请求看下

可以看到,是镜像一份请求,接着配置放大一倍,继续监听日志,查看效果

镜像两份请求,所以这个情况就能达到放大流量的效果

这里有个小的问题需要说一下,就是mirror是不支持access_log记录的,所以我这里是通过代理到另外一个server,通过另外一个server记录日志进行查看的,这个是一个需要注意的地方

流量镜像的另外一个指令就是mirror_request_body

该参数是指定是否镜像request_body部分,默认是开启的,官方文档中说,这个指令和

  • proxy_request_buffering
  • fastcgi_request_buffering
  • scgi_request_buffering
  • uwsgi_request_buffering

指令冲突,开启之后会禁用以上指令

使用该指令一定要保证mirror_request_body、proxy_pass_request_body和Content-Length配置一直,比如mirror_request_body或proxy_pass_request_body设置为off,则Content-Length必须设置为“”,因为nginx(mirror_request_body)或tomcat(mirror_request_body)处理post请求时,会根据Content-Length获取请求体,如果Content-Length不为空,而由于mirror_request_body或者proxy_pass_request_body设置为off,处理方以为post有内容,当request_body中没有,处理方会一直等待至超时,则前者为off,nginx会报upstream请求超时

nginx的流量镜像配置就是这么简单,它的流量镜像是只复制镜像,发送到配置好的后端,但是后端响应返回到nginx之后,nginx是自动丢弃掉的,这个在官方文档介绍中就有,这个特性就保证了,镜像后端的不管任何处理都不会影响到正常客户端的请求

结合这个特性,我们就可以把waf配置在镜像流量下

之前介绍waf的文章中有waf配置的方式,这里就不多介绍了,想看的,可以看文章开头,也可以看文章后面推荐

通常waf中,拦截掉之后会返回403给客户端,当然也可以自定义,完后会记录拦截日志,利用这种机制,将waf配置在流量镜像下使用一段时间后,就可以从日志中分析出哪些正常请求会被拦截掉,从而修改waf规则,然后接入到生产数据中,这样可以有效的避免waf的FRR

Nginx的流量镜像当然不只这种用法,反正流量都给你复制出来了,玩法就比较多了,可以用于预生产环境的测试、利用流量放大进行压力测试等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网络入侵防护系统
网络入侵防护系统(Network Intrusion Prevention System,NIPS),是基于腾讯安全服务内部数百条业务线的运维经验积累和大数据处理能力的结合,通过旁路部署的方式,提供了网络层 ACL (访问控制)和日志审计功能,解决云平台监管、ACL 控制、安全治理等问题,并辅助客户满足网安法,合规性要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档