As pessoas podem usar o Nginx paraproxy_passno meu domínio e no navegador o conteúdo é meu, mas na barra de endereço são os domínios deles.
Como detectar quando as solicitações passam por proxy_pass e negá-las?
Por exemplo, quando eu propositadamente proxy_pass para google.com, recebo o erro 404.
server {
listen 80;
server_name test.com;
location / {
proxy_pass https://google.com;
}
}
Parece que não é possível evitar isso, por exemplo, essas pessoas fazem o proxy se comportar como um navegador normal. Porém, como prevenir se eles usarem apenas um simples proxy_pass Nginx?
Responder1
Teoricamente, você pode, mas não sem muito esforço.
Supostamente, você está executando um site compatível com HTTP/2.
A detecção proxy_pass
do seu site pode basear-se no fato de que essas conexões sempre serão originadas por HTTP/1.x
e nunca por meio de HTTP/2
.
Então você pode combinar isso com os recursos do navegador.
Então, essencialmente, se você vir um navegador compatível com HTTP/2 conectando-se ao seu site por meio de um protocolo HTTP/1.x mais antigo, você pode presumir com segurança que ele é por meio do NGINX proxy_pass
ou de algumoutroproxy (diferente do NGINX).
Então, embora isso possa funcionar, você cortaria todos os clientes que apenas navegam por algum tipo de proxy ...
Essa é a abordagem passiva.
A abordagem ativa consiste simplesmente em verificar várias conexões do mesmo endereço IP. Você verificaria os logs (por exemplo, Fail2ban ou outros scanners de log) para muitas conexões do mesmo endereço IP, com diferentes agentes de usuário (ou nenhum).
Um endereço IP com muitos agentes/acessos de usuário variados provavelmente será algum tipo de proxy.
Finalmente, você pode fazer consultas de verificação/whois RDNS para ver se uma solicitação vem de um provedor de hospedagem conhecido.