最近,主机帮网站服务器一到晚上就卡得不行,CPU经常占满100%,为了查清楚原因,主机帮进入宝塔网站日志查看后,发现网站每隔几分钟就被来自谷歌数据中心的IP大量抓取。

查了来,这个IP是来自谷歌海数据中心的,原以为是谷歌搜索蜘蛛,结果查了却不是,那说明有人利用谷歌的云服务器来抓取我的网站。
主机帮一开始利用百度云防护自定义访问策略针对这个IP进行了封禁,结果发现根本禁不完,他的IP贼多,基本上每隔半小时就换IP来大量访问。


IP没用,那UA呢?结果也是没用,因为每隔一段时间不仅换了IP还换了UA,而且访问的链接也都没有固定,根本没法通过固定特征来拦截。
那通过设置单IP访问频率呢?其效果是有,误杀大,因为他一秒钟只访问了几个页面,而且访问的URL都不一样,一但你设置了全站访问频率限制,一秒钟只限制访问几次,那么就会出现所有人都会被误拦截的情况,因为他的请求频率几乎是贴着正常用户访问来的。
那要怎么解决呢?答案是JA3指纹拦截。
何为JA3指纹拦截呢?
JA3指纹是一种识别服务器设备的指纹技术,通过提取TLS Client Hello报文中的以下字段生成:
- TLS版本
- 加密套件列表
- 扩展字段
- 椭圆曲线类型
- 椭圆曲线格式
这些字段的组合被规范化后拼接成字符串,再进行MD5哈希,最终生成32位的JA3指纹。
只要同一浏览器、同一版本、同一操作系统,那么最终生成的JA3指纹大概率是一样的,也就是说,只要黑客的服务器系统没有变更,浏览器、浏览器版本等参数没有变更的话,那么这个JA3指纹是不变的,我们只要通过这个JA3指纹进行拦截就可以了,就算对方不停换IP,换浏览器UA也是没用的。
那么要如何知道对方的JA3指纹呢?
自助方法是,通过全站设置全站访问观察,然后通过日志查看对应IP的JA3指纹。


如果你不会怎么办?那可以提交工单让提供黑客工具的其中一个IP给百度,让百度技术给你查询对应的JA3指纹,比如主机帮就是这样干的。

得到JA3指纹后,我们进入web规则,CC防护,添加规则。
规则名:主机帮JA3
防护类型:精准自定义CC
匹配条件:JA3 等于 d39e1be3241d516b1f714bd47c2bc968(从访问IP中或者对应的JA3指纹)
统计信息:IP
统计时长:10 阈值:2 处置时长:3600
选定域名 保存即可。

通过上述设置,只要对方机器10秒钟内访问超过2秒 就会封禁1小时。
设置完规则后,我们晚上9点左右,果然这黑客又来抓取主机帮网站了,结果被拦截了,我们通过攻击日志来看:


期间对方换了多个IP,依然被拦截,如34.174.187.250、34.174.186.2、34.174.68.24、34.174.226.216,都被拦截。

成功拦截这起针对网站多日的恶意抓取!
这里推荐主机帮推荐大家使用百度云防护来拦截这类低频恶意请求,当传统IP、UA、URI特征限制都无法拦截时,采用JA3指纹技术拦截是非常帮的手段,可以做到0误杀。JA3指纹拦截功能目前只有少数的WAF服务商支持,而以主机帮的了解,这个功能往往都是在高级版本里开发,百度云防护目前连基础专业版都支持,非常的有性价比。
有需要的同学,欢迎联系主机帮购买。