如何防止其他人将他们自己的域名通过 proxy_pass 传递到我的域名?

如何防止其他人将他们自己的域名通过 proxy_pass 传递到我的域名?

人们可以使用 Nginx代理密码到我的域名和浏览器上,内容是我的,但在地址栏上它是他们的域名。

如何检测请求何时通过 proxy_pass 并拒绝这些请求?

例如,当我故意将 proxy_pass 传递到 google.com 时,出现 404 错误。

server {
  listen 80;
  server_name test.com;

  location / {
    proxy_pass https://google.com;
  }
}

似乎无法阻止这种情况,例如那些人让代理的行为就像普通浏览器一样。但是,如果他们只是使用简单的 Nginx proxy_pass,该如何防止呢?

答案1

从理论上讲,你可以,但需要付出很多努力。

据称,您正在运行一个支持 HTTP/2 的网站。

检测proxy_pass您的网站可以建立在这样一个事实之上:这些连接将始终通过 发起,HTTP/1.x而绝不会通过HTTP/2

然后您可以将其与浏览器功能进行匹配。

因此,从本质上讲,如果你看到支持 HTTP/2 的浏览器通过较旧的 HTTP/1.x 协议连接到你的网站,你可以放心地认为它是通过 NGINXproxy_pass或某些其他代理(NGINX 除外)。

因此,虽然这可行,但您会切断所有仅通过某种代理浏览的客户端……

这是一种被动的做法。

主动方法只是检查来自同一 IP 地址的连接数量。您将检查日志(例如 Fail2ban 或其他日志扫描程序)以查找来自同一 IP 地址的多个连接,这些连接具有不同的用户代理(或没有)。

具有大量不同用户代理/访问的 IP 地址很可能是某种代理。

最后,您可以执行 RDNS 检查/whois 查询以查看请求是否来自已知托管服务提供商。

相关内容