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