几种反制网站恶意代理的手段

几种反制网站恶意代理的手段

发表于 2023/06/15 更新于 2023/06/15 694 字 3 分钟
AI 摘要 由 AI 自动生成

|

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 规则示例

iptables -A INPUT -s 101.100.xxx.xx -p tcp -j DROP

以及,nginx 规则示例

location / {
    deny 101.100.xxx.xx;
    ……
}

被 cdn 代理

cdn 厂商会有一批回源节点,而且无法保证这批 IP 不变化,这种封 IP 就不大优雅了,所以我们优先不考虑封禁 IP。

一般 cdn 在回源的时候,到原站的请求都会有特征,这些特征是无法去除的,比如 cloudflare 的 cf-xxx 之类的 Header。我们可以对带这些 Header 的请求进行封禁。

HTTP request headers

以下是通过 nginx 方式,禁止携带 cf-ray Header 的请求访问我们的 nginx。

http {
    map $http_cf_ray $has_cf_ray {
        default 0;
        ''      0;
        ~.      1;
    }

    server {
        ...
        if ($has_cf_ray) {
            return 403;
        }
        ...
    }
}

使用 js 方式跳转的显性 url 代理

这种其实不算是代理,只是你访问他的域名,会重定向到你的域名上,但是可气的是他可能搞一个奇奇怪怪的域名转给你。就比如前几年 3q 大战的时候,f**kqq 会转到 360 上。

这时候你可以抓一下请求,如果访问他的域名会出现一个 200 OK 的 Response,并且这个 Response 里面是通过 js 方式进行跳转的,那我们可以使用 Referer 进行限制,把指定 Referer 的请求干掉。

例如下面的 nginx 配置,我们把带 https://XXXXXXX/ Referer 的请求跳转到 http://localhost 上。

if ($http_referer = "https://XXXXXXX/") {
    return 301 http://localhost;
}

使用 iframe 嵌入方式实现的代理

这种情况以及很少了,浏览器出于对安全的考虑,在逐步限制跨域 iframe 的能力。

在我们的网站中插入这段 js,可以使得再被 iframe 嵌套时,跳转到 iframe 的域名上。

<script type="text/javascript">
if (top.location != self.location)top.location=self.location;
</script>

暂时无法使用技术手段解决的方法

域名服务商的显性 url 转发,这种转过来的请求没有特征,不好限制。

作者: 小谈谈
声明: 本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。