You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

CloudFlare已封禁IP仍持续连接攻击NodeJS服务器的解决方法咨询

CloudFlare已封禁IP仍持续连接攻击NodeJS服务器的解决方法咨询

结合你遇到的情况,我整理了几个实际排查和解决的方向,都是踩过类似坑的经验:

一、先排查CloudFlare WAF规则的核心问题

  • 优先级与执行顺序:CloudFlare的WAF规则是按数字越小优先级越高来执行的,如果你的封禁规则优先级低于其他允许类规则,会被直接覆盖。去WAF规则列表里把你的IP封禁规则调到最高优先级试试。
  • 匹配字段是否正确:你用的ip.src其实是CloudFlare节点的IP,不是访客的真实IP!服务器日志里显示的::ffff:3.8.236.120是真实访客IP,应该用cf-connecting-ip这个字段来匹配,这大概率是规则不生效的核心原因。修改后的规则条件应该是:
    (cf-connecting-ip 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"})
    
  • 规则动作是否正确:确认规则的动作是Block(直接拦截),而不是Challenge(人机验证)或者Log(仅记录),别手滑选错了动作。

二、验证请求是否绕过了CloudFlare

  • 检查域名解析状态:确认你的ginja.org所有A/AAAA记录都是CloudFlare的橙色云朵状态,有没有漏掉的解析(比如某个子域名直接指向了服务器真实IP)?如果爬虫直接解析到了你的服务器IP,CloudFlare的防护完全起不到作用。
  • 服务器端临时封禁测试:直接在服务器用防火墙封禁这个IP,验证是否还能收到请求:
    # 封禁IPv4
    iptables -A INPUT -s 3.8.236.120 -j DROP
    # 若有对应IPv6,同样封禁
    ip6tables -A INPUT -s [对应IPv6地址] -j DROP
    
    如果这样就没有请求了,说明CloudFlare的规则确实没生效;如果还有,那可能是爬虫换了代理或者IP。

三、检查CloudFlare其他防护层设置

  • 安全级别调整:把域名的安全级别从“本质无害”调到“中等”,过低的安全级别可能会绕过部分WAF规则。
  • 开启机器人管理:CloudFlare的Bot Management功能可以识别恶意爬虫,你可以把这个爬虫标记为“恶意”,或者开启Managed Ruleset里的爬虫防护规则,从源头拦截这类请求。

四、针对你补充信息的额外建议

  • robots.txt跟踪:既然已经开始跟踪了,等看到爬虫是否遵守robots.txt后,如果它完全无视,那基本可以确定是恶意爬虫,更要强化拦截策略。
  • 服务器资源监控:在每天3:32左右用tophtop监控CPU、内存和带宽使用,确认是不是这个爬虫的请求占满了资源,还是服务器本身有内存泄漏等其他问题。

备注:内容来源于stack exchange,提问作者ginjaemocoes

火山引擎 最新活动