我有一个带有 HTTPS 和证书的 NodeJS 服务器。DNS 在 CloudFlare 上。
该主机每天凌晨 3:32 都会从位于英国的 AWS 主机接收连接3.8.236.120
。爬虫会在这段时间反复向相同的 4 个页面发起请求,5 分钟内共发送 26 个请求。虽然这个数字似乎可以控制,但这是最有可能的罪魁祸首,也是 Web 服务器每天此时显示的唯一活动。
我在 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 秒一个请求似乎确实很少。但我每天同一时间都会从这个爬虫程序获得流量,有些日子我的服务器在那个时候宕机了,所以我想先排除这个机器人。此外,我还有另一台服务器每分钟检查这台服务器是否正常运行,在我认为受到攻击的日子里,服务器没有记录健康检查器的任何活动,因此有可能爬虫程序同时向我的服务器发送了太多请求,以至于这些请求都没有被记录下来。
答案1
问题是 CloudFlare 上的 DNS 没有代理。它是“仅 DNS”。因此 Web 应用程序防火墙上的规则不适用。
当我更改 DNSroot
并www
通过 CloudFlare 进行代理时,规则开始起作用。
事实证明,正如评论所暗示的那样,这根本不是一次 DoS 攻击,因为每 12 秒发出一次请求非常少。但在排除了这个原因后,我找到了真正的罪魁祸首。
今天我了解到 CloudFlare 流量必须通过代理才能受到保护。