web-dev-qa-db-ja.com

リバースプロキシパスは、バックエンドサーバーを匿名のままにしますか?

1.1.1.1にNGINXサーバーがあり、NGINXサーバーにhttpトラフィックを2.2.2.2に転送する構成がある場合:

upstream 123 {
    server 2.2.2.2;
}

server {
    listen 80 default_server;
    location / {
        proxy_pass http://123;
        proxy_set_header        Host            $Host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

アドレス1.1.1.1のみを知っている部外者向け。 IPアドレス2.2.2.2がリダイレクト先のアドレスであることを彼らが知ることは可能ですか?

2
maxisme

適切に構成されている場合、はい、バックエンドサーバーのIPアドレスは非表示になります。これは Cloudflare のようなDDoS保護サービスの背後にある動作原理です:不正な要求を除外しながら大量のトラフィックを許容できるプロキシサーバーの背後に実サーバーを隠します。

とはいえ、バックエンドサーバーのIPを非表示にしておくことが不可欠な場合は、Webアプリケーションまたは所有しているDNSレコードのいずれかによって、IPが漏洩していないことを確認する必要があります。バックエンドサーバーがパブリックに到達可能な場合は、プロキシサーバーからの要求のみを受け入れるようにファイアウォールを構成する必要があります。これにより、すべてのパブリックIPアドレスをスキャンして、プロキシと同じWebページを提供するサーバーを探して検出されるのを防ぎます。

2
tlng05

2.2.1.1サーバーのIP /ロケーションを匿名にしようとして、1.1.1.1がすべてのリクエストを2.2.2.2に転送していると言っていると思います。正しい?

その場合、ユーザーは1.1.1.1と通信していると考えます。静的なhtmlまたは正常なドキュメントのみを提供している限り。この問題は、PHPなどのバックエンド処理を行うものをミックスにスローすると発生します。攻撃者が$ _SERVER ['SERVER_ADDR']を実行するために利用できるPHPに脆弱性がある場合、ユーザーには1.1.1.1が非表示の2.2.2.2 IPアドレスを報告することがわかります。

注:私はこの回答を編集しましたが、この質問を誤解したため、以前の回答は正しくありませんでした。

1
Daisetsu

Webサーバーでリバースプロキシを使用すると、多くの機能が可能になります。これらの1つは、リバースプロキシとロードバランサーを介した複数のサーバーへの自動データトラバーサルです。この時点で、サーバーは完全に匿名である必要があります。攻撃者がプロキシされたサーバーを見つける唯一の方法は、フレームワークにIPアドレスを漏らすコードを実行できる脆弱性があったかどうかです。これはあなたが答えを得ようと試みるべきもっと大きな質問につながります:

バックエンドサーバーはインジェクション攻撃に対して安全ですか?

  • はい:バックエンドサーバーは匿名です
  • いいえ:次に、バックエンドサーバーが非常に断固とした個人に漏洩する可能性があります
0
Robert Mennell