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)の両方に必要に応じて変更を加えるためのアクセス権があります。
最も簡単な方法は、ロードバランサー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
これらは:
さらに良い方法は、接続で使用されているドメインをアプリケーションで検出し、間違ったドメインが使用された場合に安全なアドレスにリダイレクトすることです。あなたのフレームワーク/アプリケーションについてはよくわかりませんが、より大きなもののほとんどはそのようなメカニズムを提供します。
これは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トラフィックを処理する仮想サーバーでこれを参照するだけです。また、接続を拒否するかどうかを決定する条件を使用して、より創造的になることもできます。