web-dev-qa-db-ja.com

他の人が自分のドメインを自分のドメインにproxy_passするのを防ぐ方法は?

人々は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を使用するだけの場合を防ぐにはどうすればよいですか?

1
datdinhquoc

理論的には可能ですが、多くの努力が必要です。

おそらく、あなたは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クエリを実行して、リクエストが既知のホスティングプロバイダーからのものであるかどうかを確認できます。

1