记一次服务器不明流量排查兼Nginx防盗链Referer屏蔽实践

记一次服务器不明流量排查兼Nginx防盗链Referer屏蔽实践

背景

我在德国的服务器近两个月以来一直流量消耗非常大,750G的流量每个月都能使用接近80%,但是就算我自己和身边的朋友抛开其他的服务器不用,只用这台德国的服务器,流量消耗应该也就在100G,双向两百G左右,这很不正常。过年3月份前后,这台服务器曾经遭受了CC攻击,月流量使用彪上六七百G,光是Nginx的日志文件在硬盘里就塞了好几个G。后来我调整防火墙策略,基本将这部分攻击流量降得很低了。然而,最近两个月流量使用量又再飙升,上个月使用了568G流量,而这个月才过一半多,还剩下十多天呢,已经用的比上个月流量多了,有一天一天就用了接近100G。今天决定再次进行排查,查查到底是怎么回事。(再不排查,这样下去流量耗尽就要suspend了...

VPS流量图

开始排查

首先登录到服务器,使用iftop命令排查当前服务器中的流量。当时的截图并没有保存,但就像下面的截图一样,看上去很正常:跑着的广播加速服务连接到的是Cloudflare的CDN和电台官方直播源源站的IP;下方持续了几个月不停的CC攻击没带来多少网络流量,连一个字节都不到。我观察了很长时间,都没有看到有什么可疑的、传送大流量的IP出现。除了总体的流量消耗有点快,广播加速服务消耗的流量有些多之外并没有异常。我这时已经没有头绪了,失去了排查的方向。

这时候我偶然间打开了服务器上的PHP探针,服务器的CPU、硬件负载并不高(AMD YES!)。突然,随着页面的下滑,一个爆红的指标进入了我的视野——硬盘要满了!还有一个G多一点硬盘就满了。什么把硬盘填满了呢?

来看看吧。使用du --max-depth=1 -h /,先看看根目录下面有啥。emm,/data文件夹,里面只有几近是静态网站和网站日志文件的文件夹占了接近4个G。在往下看看,du --max-depth=1 -h /data,wwwlogs文件夹吃了近3个G。又被攻击了?怎么日志文件这么大?我的博客主站几个月的日志文件才只有100多M,一台梯子加广播加速服务器怎么这么多日志文件?

果然最大的日志是加速服务器虚拟主机的文件,3个G。咋一看都是正常的访客数据,就像下图一样的:

Nginx日志

我博客主站都没这么大的流量,为什么广播加速站流量会这么大呢?我登录了Cloudflare CDN后台,看到统计数据傻眼了,近一周80G+的流量,很多来自于一个“gbtv.sinaapp.com”的网站:

Cloudflare统计

再回头一看Nginx日志,其中有很多来自于“http://gbtv.sinaapp.com/bfq/rfazb.php”的请求。打开这个网站,我更...傻了:

网站截图

这TM不是拿着我的服务器资源卖钱的吗?没经过我允许,直接这么干?!虽然后来查这个网站的时候,风评还算不错,这网站收费也不高,但没经过我的允许,用盗用我的资源,服务他这么多访客...感觉还是气不打一处来。当即决定反击回去。

Nginx层面拦截

我打算在Nginx层面上对他们网站的Referer进行拦截,告知他们的访客事情的原委。怎么做呢?

Nginx中有一个内置的模块,叫做ngx_http_referer_module,默认这个模块会被在编译的时候自动编译到Nginx中的,不编译进去的话还要添加--without-http_referer_module的编译参数。因此大多数编译好的Nginx中已经有这个模块了,无需再次进行编译。

我的设想是判断Referer中来自“中文视听网”的请求,如果是来自“中文视听网”的请求,则301到一段用谷歌娘的声音录制好的,告知访客事情原委的音频,这样,"中文视听网"的受害者就能在播放器中听到这段录音了;而Referer中不包含"gbtv.sinaapp.com"的正常访客则不会受到影响。

经过一番查找和摸索,相关的Nginx配置文件如下:

    if ($http_referer ~* "gbtv") { #利用正则表达式(其实这里只需要模糊匹配就好了,所以实际上不用写正则)进行匹配
      return 301 https://bbx.xmgspace.me/zwstw.mp3; #进行301
    }

很简短,但是能解决问题,这就够了。

此外,我还在访问日志中发现了大量useragent为"okhttp"的请求。okhttp是一个HTTP请求框架,广泛用于移动开发中。这应该是有人开发了APP,把我的直播源放到了APP中;然而又没来得及改UA。因为流量同样很大,也不是本站的访客直接使用的,因此还是决定一起Ban掉。因为流量的来源不明,这次不用在Nginx层面上大动干戈了,直接从Cloudflare防火墙中添加一条Deny规则就可以了。

去年我也曾经因为流量过大,存在滥用行为,暂时关停了加速服务;后来服务器多了起来,于是将流量相对较多的一台拿出来重新上线了这一服务,还请且用且珍惜。

再下一步的行动就是继续多加监测,防止滥用,而又不会影响到正常的使用者;多服务器负载均衡,平衡流量消耗。有时觉得时候再慢慢做吧。这次事件就先记录到这里。

本文永久链接:https://blog.xmgspace.me/archives/traffic-check-and-nginx-anti-theft.html
本文文章标题:记一次服务器不明流量排查兼Nginx防盗链Referer屏蔽实践
如文章内无特殊说明,只要您标明转载/引用自Xiaomage's Blog,您就可以自由的转载/引用文章。禁止CSDN/采集站采集转载。
授权协议:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)

评论

  1. xiaoyu
    Windows Chrome
    1周前
    2021-7-20 5:53:56

    hhhh.,随着学习的深入,看学长的博客越来越不吃力了~ ̄﹃ ̄

    • Xiaomage 博主
      Windows Edge
      1周前
      2021-7-21 22:04:13

      加油!以后会越来越轻松的~

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇