Stone Stone

防止机器扫描网站,被恶意全字匹配拦截域名的方法(JS挑战)

in 运维人生 read (402) 文章转载请注明来源!

首先我们得知道机器扫描的原理

模拟一个真实的客户端一直向服务器发送访问请求,
一个完整的域名请求可以理解为-- 用户访问域名---域名解析ip地址---如果上境外ip地址就会从境外出口防火墙---服务器。

例如你在服务器上进行 curl https://66cto.cn 返回的页面就是你的网站的首页代码。

假如你的服务器无法在境内访问,或者说你进行 curl 域名 返回的为 tcp 无法链接或者被重置,那么应该是被运营商拦截了。

从上面的链路我们可以知道,你的域名如果能在国外正常访问,中国境内无法访问,可能是由于境外出口防火墙将你的域名加入黑名单,注意这不是说一级域名加入黑名单,而且一串完整的类似 https://66cto.cn 这样的url加入黑名单。

那么根据近期的大量域名被拉入境外防火墙黑名单,猜测可能是由爬虫机器对网站抓代码,并且针对网站的代码或者特征代码,进行匹配,从而实现将url加入黑名单。

**我们可以使用免费的 CF 针对这些恶意扫描客户端进行 JS挑战:

这里不介绍如何使用 CF,而是教大家怎么去使用Firewall 配置。**

C5B37090-26CC-414D-B873-55F07F2BF14C.png

这里配置的意思是:来源url 不包含 mu=1 (订阅请求),key= (mukey) 全部进行 js 挑战,这样就不会被恶意机器爬到代码了。
084CEDC9-9A20-472E-BD05-A8FCD6D6AF14.png

最后大家可以在Firewall Event Log 中查看被拦截的请求。

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://blog.66cto.cn/index.php/archives/125/ (转载时请注明本文出处及文章链接)

运维人生
发表新评论
仅有 1 条评论
  1. ANHR
    ANHR 7Chrome 77
    回复

    大佬,不用CF,服务器上能自主配置吗?

❋该站点已苟活
© 2019 Stone博客 沪ICP备19015953号-1

前篇 后篇
雷姆
拉姆