服务器运维之 Bytespider 异常流量 时间: 2019-06-18 01:12 分类: 服务器,修仙日记 ####前言 现在是2019年6月18号凌晨1点,本打算洗澡睡觉,刷新了一下自己的网站,打不开了! 于是登上服务器查看,发现 Tomcat 进程直接挂掉了。 查看 Tomcat 日志,并未发现什么异常,难道是机器配置太低导致的? 不管三七二十一,先重启再说。 结果,重启了还是打不开,整个服务器就像阻塞了一般,接受不了请求。 ####分析 既然 Tomcat 没有异常日志,那就查看下 Nginx 的请求日志。 结果发现,日志刷的飞快,心想,大晚上的,怎么会有这么多的流量。 仔细一看,不难发现,大多数请求都是一个叫`Bytespider`爬虫的,网上搜了一下,确实也有人遇到了同样的问题。 IP 主要分布在河北张家口以及广州。 ####解决 对于这种垃圾流量,还是直接过滤掉的好,这次的 Tomcat 进程崩溃,很有可能就是这波异常流量导致的。 最容易想到的就是在 Nginx 中添加拒绝策略,如下: ``` if ($http_user_agent ~* (Scrapy|Curl|HttpClient|linkfluence|Bytespider)) { return 403; } ``` 也可以针对IP段进行封禁,可以用 Nginx 的 IP 拒绝策略,但是我发现,Nginx 虽然是拒绝了请求,但实际上还是会返回 403 状态回去,并且`Nginx`日志中也会有响应的纪录,简直浪费流量,直接让服务器不响应岂不更好? 于是使用`ufw`防火墙添加拒绝策略,最终我的防火墙规则如下: ``` Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 22/tcp ALLOW Anywhere 22/udp ALLOW Anywhere Anywhere DENY 60.8.9.0/24 Anywhere DENY 60.8.165.0/24 Anywhere DENY 111.225.147.0/24 Anywhere DENY 111.225.148.0/24 Anywhere DENY 220.243.135.0/24 Anywhere DENY 220.243.136.0/24 80 ALLOW Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6) 22/udp (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) ``` 最终再次实时查看`Nginx`日志,发现完美抵御 Bytespider 异常流量! 标签: 无
字节跳动