其他博主的教程已经很多了 我基本都看了一下 分享一下最终我反复测试觉得还可以的规则
其中大量参考这位博主写的教程 确实非常有用 因为他的规则经过了我的测试 误报最少 然后我在此基础上针对我网站被攻击的一些特征 新增了几条 不建议开启任何阻止规则 因为误报太高了 除非一些特定路径啥的 如果你是网站 不是api啥的 强烈不建议使用阻止规则
https://www.nodeseek.com/post-221850-1
先说我的需求 尽可能的减少质询的出现 让正常用户避免看到质询页面
绕过规则详细的我就不发了 怕黑客看到使劲干我 总之是放行了所有经过验证的一些自动程序 蜘蛛啥的
规则有以下几个优点:
- 极少误判 中国大陆不受影响(因为我博客已做国内外分流 国内线路崩了 dns全自动删除解析 cf这条线路会全自动介入)
- 经过本人验证 适用于大部分网站(api别搞 包影响的兄弟 只适合网站!!!)
- 删掉了原博主的几条规则 让itdog那样的测速网站不触发质询 请求状态码正常返回200 (网站崩的时候全靠这个观察全球访问情况 我听了其他博主 开启了http限制 结果测试网站 全部报403状态码 这让我如何测试全球访问情况?)
- asn我添加了全球拿来攻击网站频率最高的一些服务提供商的系统编号 就是那种无限流量 IP被各种玩坏的服务商 让gpt推荐了一些给我 我被攻击的时候查看分析日志 专门看了攻击我网站频率最高的asn编号 都给添加了进去 如果你觉得对你有影响 删掉就完事
此规则我会因为后续的调整进行更新 目前体验来看 没啥大的问题 因为还有速率那一关 速率那一关只能大不能小 不然误报很难受!!!我之前网站全在一个cloudflare域名下的时候 设置300才不会有影响 我推荐40-100起步吧 根据你网站的实际情况来 也根据你源站服务器性能来设置 具体说不清楚 我只知道反正不能设置小了!
威胁分我设置成40 也是尽可能的减少误报 其实设小一点也没关系 这个误报很少
黑客可以研究这份规则来继续打我网站了 但我觉得你是斗不过我的
国内线路的防火墙规则大部分由我根据实际情况写的规则才能起点作用 大部分都是很基础的规则 并不完善 故不做分享(其实很简单很垃圾 怕发出来丢人)
你可以用itdog 连续多点几次测试 大量请求我的网站就会发现 他们ip都被拉黑了
我的cc频率是 单IP在6秒内请求超过60次 就会被拉黑10分钟 个人觉得很难触发误判了吧?
我的网站是允许被黑客打崩的 但是不能在我醒着的时候持续崩了 我还修不好 这是我给自己定的规矩
目前网站崩了都会全自动给我发邮件 cdn健康监测过不了也会发邮件 黑洞更是会发短信
黑客们加油 说不定后续我玩上硬件防火墙 还得多亏你们天天光顾我的网站 给我上压力
我直接发表达式 直接复制粘贴快速创建
(http.user_agent contains "MSIE") or (not http.request.method in {"GET" "POST" "HEAD"}) or (http.request.full_uri contains "well-known") or (len(http.request.headers["via"]) > 0) or (http.user_agent contains "; +") or (http.request.uri.path contains "//") or (http.x_forwarded_for contains ".") or (len(http.request.headers["x-forwarded-host"]) > 0) or (len(http.request.headers["cdn-loop"]) > 0) or (len(http.request.headers["cf-ew-via"]) > 0) or (http.user_agent contains "\\x09") or (http.user_agent contains "Trident") or (http.user_agent contains "Headless") or (http.request.uri contains "--+") or (http.user_agent contains "{") or (http.user_agent contains "$") or (http.user_agent contains "<") or (http.user_agent contains "script") or (http.request.uri contains "\\x") or (any(http.request.headers["sec-fetch-site"][*] contains "cr") and any(http.request.headers["sec-fetch-mode"][*] contains "no")) or (ip.src.country in {"T1"}) or (not starts_with(http.user_agent, "Mozilla/5.0")) or (http.user_agent contains "bot") or (http.user_agent contains "Bot") or (http.user_agent contains "rawler") or (http.user_agent contains "pider") or (ip.src.asnum in {16276 14061 53667 20473 63949 15169 16509 52173 46475 202425 9009 209242 20278 49505 13335 4788 19551 197422 141718 63023 399296}) or (http.user_agent contains "Go-http-client") or (not starts_with(http.user_agent, "Mozilla/5.0")) or (http.user_agent contains "bot") or (http.user_agent contains "Bot") or (ip.src.country in {"T1"}) or (cf.threat_score ge 40)