我们的服务器目前正面临攻击(可能是 DDOS)。传入的网络流量在短短 2-3 分钟内从平均 20Mbps 上升到 1Gbps。我们的日志文件中的行通常如下所示:
101.101.101.101 - - [23/Nov/2020:01:01:01 +0200] "GET /wp-content/uploads/image.png HTTP/1.0" 200 425 "https://mypage.com/" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/604.1.15 (KHTML, like Gecko) GSA/100.00 Mobile/15E100 Safari/604.1"
然而,在攻击的时间范围内,这些行看起来像这样:
101.101.101.101 - - [23/Nov/2020:01:01:01 +0200] "GET / HTTP/1.0" 200 18710 "https://www.qq.com" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/604.1.15 (KHTML, like Gecko) GSA/100.00 Mobile/15E100 Safari/604.1"
因此,除了我的页面之外,其他一些网站也以某种方式被调用。除了 qq.com 之外,reddit.com、baido.com 和其他一些网址也被调用了数千次。
我的问题是:
- 第二项到底是什么意思,以及这会在我们的服务器上产生什么流量?
- 我们如何阻止这样的请求(防火墙、fail2ban 等已经设置)?
答案1
检查您的网络服务器配置了什么日志格式,您就会知道日志文件中每一行的每个字段代表什么。
例如,查看 Apache http 可以记录的字段:https://httpd.apache.org/docs/2.4/mod/mod_log_config.html
请注意,有些字段填充的是服务器提供的数据,但有些字段填充的是客户端在请求中包含的数据。客户端数据可能是真实的,但也可能是发送请求的人伪造的,虽然很有趣,但可能并不可靠。
Web 服务器通常会记录客户端标头Referrer
和User-Agent
浏览器标识字符串。在有效流量中,这些内容大多是真实的,代表用户如何找到您的内容以及他们使用哪种浏览器访问您的网站。
值得注意的是:即使对于有效流量,一些真正的浏览器和插件也允许调整其身份(移动或非移动以及隐藏操作系统和浏览器的其他方式)或简单地省略 Referrer 标头以防止跟踪。