web-dev-qa-db-ja.com

server.domain.comを使用してユーザーがWebサイトにアクセスするのを防ぎ、vip.domain.comを介して許可する方法は?

Playフレームワークで実行するようにWebサイトをセットアップします。 9000でhttpを実行しています。 http://servername.domain.com:90 にアクセスすると、サイトにアクセスできます。ここで、servernameはWebサーバーの名前です。

また、すべてのトラフィックをhttpからhttpsにリダイレクトし、トラフィックをポート443から9000にリダイレクトするように、F5ロードバランサーを設定します。バックエンドでこのウェブサーバーに接続するF5のドメイン名vip.domain.comを設定します。デバッグのためにプールから他のWebサーバーを取り出したため、現在プールにはサーバーが1つしかありません。

Chromeのサイトにアクセスしたときに、 http://vip.domain.com にアクセスすると、F5は https://vip.domain.com にリダイレクトします。 =緑色の南京錠が表示され、「安全」と表示されます。

http://server.domain.com:90 と入力すると、「安全ではありません」と表示され、南京錠が取得されません。

誰かがセキュリティスキャンを行い、暗号化されていない状態で送信していると言いました。すべてのテストを完了し、全員に http://vip.domain.com にアクセスするように指示しましたが、スキャンに使用されたと思います http://servername.domain.com: 90

http://servername.domain.com:90 は機能しませんが、ポート9000を開いたままにする方法はありますか http://vip.domain.com ?サーバーとVIP)の両方に必要に応じて変更を加えるためのアクセス権があります。

1
Classified

最も簡単な方法は、ロードバランサーIP以外のホストからポート9000をブロックするファイアウォールを設定することです(動的でない場合)。

簡単なルール:

iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'allow LB traffic' -s LB.IP.ADDR.HERE -j ACCEPT
iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'drop all other requests to 9000' -j DROP

これらは:

  • lBマシンからのポート9000を許可します(より多くのLBにルールを追加できます
  • ポート9000への他のトラフィックをブロックする

さらに良い方法は、接続で使用されているドメインをアプリケーションで検出し、間違ったドメインが使用された場合に安全なアドレスにリダイレクトすることです。あなたのフレームワーク/アプリケーションについてはよくわかりませんが、より大きなもののほとんどはそのようなメカニズムを提供します。

2
bocian85

これはiRuleで簡単に行えます。

when HTTP_REQUEST {
  if { [HTTP::Host] equals "servername.domain.com" } {
    # send a TCP reset
    reject

    # alternatively, redirect somewhere else
    # HTTP::redirect "http://www.somedomainyoufindentertaining.com"
  }     
}

(ほぼ逐語的に https://devcentral.f5.com/questions/block-domain-redirect

ポート9000トラフィックを処理する仮想サーバーでこれを参照するだけです。また、接続を拒否するかどうかを決定する条件を使用して、より創造的になることもできます。

3
Brandon Xavier