我有一个带有 HTTPS 和证书的 NodeJS 服务器。DNS 位于 CloudFlare 上。
该主机每天凌晨 3:32 都会收到来自3.8.236.120
英国 AWS 主机 的连接。爬虫程序在该时间点反复向相同的 4 个页面发起请求,5 分钟内发出 26 个请求。虽然这个数字似乎是可以控制的,但这是最有可能的罪魁祸首,也是网络服务器每天在该时间显示的唯一活动。
我在 CloudFlare Web 应用程序防火墙中屏蔽了该 IP,以及其他过去攻击过的 IP:
(ip.src in {194.48.199.78 5.43.32.229 92.220.10.100 107.172.137.111 193.169.254.179 149.3.170.66 47.243.233.244 3.8.236.120}) or (ip.geoip.country in {"IN" "ID"})
我检查了该规则是否已启用。然而,这个 IP 地址仍然通过 DNS 连接到服务器。以下是一个连接的服务器日志:
GET /pt/sumario 200 143.483 ms - 13972
[2024-02-16T03:31:18.155Z] /pt/amostras :: ::ffff:3.8.236.120 :: Python-urllib/3.11
[2024-02-16T03:31:18.156Z] Host = ginja.org
我怀疑 CloudFlare 上的某些设置与此规则相冲突。如何阻止来自该 IP 地址的所有请求?
更新
回答评论:
- 我在 CloudFlare 上屏蔽了 IPv6 地址,但仍能从中获得流量。
- 我不知道爬虫是否访问过,
robots.txt
因为它在公共目录中,我没有跟踪它的访问情况。我现在正在追踪他们。 - 每 12 秒一个请求看起来确实很轻。但我每天都会在同一时间从这个爬虫那里获取流量,有时我的服务器当时就宕机了,所以我想先排除这个机器人。另外,我还有另一台服务器每分钟检查该服务器是否已启动并正在运行,并且在我认为受到攻击的日子里,该服务器不会记录来自运行状况检查器的任何活动,因此爬虫程序可能会淹没我的服务器同时发出许多请求,但它们不会被记录。
问题是我在 CloudFlare 上的 DNS 没有被代理。这是“仅限 DNS”。因此 Web 应用程序防火墙上的规则不适用。
当我更改 DNS
root
并www
通过 CloudFlare 进行代理时,规则开始起作用。正如评论所暗示的那样,这毕竟不是 DoS 攻击,因为每 12 秒一个请求是相当轻的。但是,在排除这个原因之后,我找到了真正的罪魁祸首。
今天我了解到 CloudFlare 流量必须经过代理才能受到保护。