几种反制网站恶意代理的手段
A 公司近期发现一个问题,他们的新闻网站在互联网上出现了一个李鬼网站。该网站的域名已经更换,但网站内容与 A 公司的新闻网站完全一致。不幸的是,该仿冒网站中插入了恶意的 JavaScript,给 A 公司的声誉造成了严重的负面影响。经过分析,发现 A 公司的网站遭到了恶意代理的攻击。
鉴于这一情况,我整理了之前遇到的几次恶意代理事件,有的解决了也有的情况不好解决,供大家共同分析参考。
被固定的代理服务器代理
这种比较好处理,你可以构造一个路径去访问这个恶意代理域名。有针对性的去找代理服务器的源 IP 是谁。
101.100.xxx.xx - - [09/Jun/2023:09:55:37 +0800] “GET /whomi/xxxx HTTP/1.1”
根据请求的源 IP,我们可以使用 iptables 或者 nginx 的策略对访问进行禁封。
例如,iptables 规则示例
1 | iptables -A INPUT -s 101.100.xxx.xx -p tcp -j DROP |
以及,nginx 规则示例
1 | location / { |
被 cdn 代理
cdn 厂商会有一批回源节点,而且无法保证这批 IP 不变化,这种封 IP 就不大优雅了,所以我们优先不考虑封禁 IP。
一般 cdn 在回源的时候,到原站的请求都会有特征,这些特征是无法去除的,比如 cloudflare 的 cf-xxx 之类的 Header。我们可以对带这些 Header 的请求进行封禁。
以下是通过 nginx 方式,禁止携带 cf-ray Header 的请求访问我们的 nginx。
1 | http { |
使用 js 方式跳转的显性 url 代理
这种其实不算是代理,只是你访问他的域名,会重定向到你的域名上,但是可气的是他可能搞一个奇奇怪怪的域名转给你。就比如前几年 3q 大战的时候,f**kqq 会转到 360 上。
这时候你可以抓一下请求,如果访问他的域名会出现一个 200 OK 的 Response,并且这个 Response 里面是通过 js 方式进行跳转的,那我们可以使用 Referer 进行限制,把指定 Referer 的请求干掉。
例如下面的 nginx 配置,我们把带 https://XXXXXXX/ Referer 的请求跳转到 http://localhost 上。
1 | if ($http_referer = "https://XXXXXXX/") { |
使用 iframe 嵌入方式实现的代理
这种情况以及很少了,浏览器出于对安全的考虑,在逐步限制跨域 iframe 的能力。
在我们的网站中插入这段 js,可以使得再被 iframe 嵌套时,跳转到 iframe 的域名上。
1 | <script type="text/javascript"> |
暂时无法使用技术手段解决的方法
域名服务商的显性 url 转发,这种转过来的请求没有特征,不好限制。