Nginxを使うとプロキシパス私のドメインとブラウザではコンテンツは私のものですが、アドレスバーでは彼らのドメインになります。
リクエストが proxy_pass を経由するかどうかを検出し、それを拒否するにはどうすればよいでしょうか?
たとえば、意図的に google.com に proxy_pass すると、404 エラーが発生します。
server {
listen 80;
server_name test.com;
location / {
proxy_pass https://google.com;
}
}
これを防ぐのは不可能のようです。たとえば、プロキシを通常のブラウザと同じように動作させる人もいます。ただし、単純な Nginx proxy_pass を使用する場合、どうすれば防ぐことができますか?
答え1
理論的には可能ですが、多大な努力が必要です。
おそらく、HTTP/2 対応の Web サイトを実行していると思われます。
ウェブサイトの検出は、これらの接続が常に 経由で行われ、 経由で行われないproxy_pass
という事実に基づいて行われます。HTTP/1.x
HTTP/2
次に、それをブラウザの機能と一致させることができます。
つまり、HTTP/2対応ブラウザが古いHTTP/1.xプロトコル経由でウェブサイトに接続しているのを見たら、それはNGINXproxy_pass
か何かのプロトコル経由で接続していると考えて間違いない。他のプロキシ(NGINX以外)。
したがって、これは機能する可能性がありますが、何らかのプロキシを介して参照するすべてのクライアントを遮断することになります...
それが受動的なアプローチです。
アクティブなアプローチは、同じ IP アドレスからの接続の数を単純にチェックすることです。ログ (Fail2ban やその他のログ スキャナーなど) をチェックして、異なるユーザー エージェント (またはユーザー エージェントなし) を持つ同じ IP アドレスからの多数の接続を確認します。
さまざまなユーザー エージェント/アクセスを持つ IP アドレスは、何らかのプロキシである可能性があります。
最後に、RDNS チェック/whois クエリを実行して、リクエストが既知のホスティング プロバイダーからのものであるかどうかを確認できます。