現在の設定は
ALB -> Target Group -> EC2 instances
現時点では、ALBのIPアドレス、DNS名(例:xxxx-5555555555.eu-west-1.elb.amazonaws.com)、およびで指定されたドメインを使用して、ロードバランサーの背後にあるEC2サーバーにアクセスできます。 DNS(例:aaa.bbbbbbb.com)。
IPアドレスまたはDNS名が使用されている場合にALBへのアクセスをブロックし、ドメイン名(aaa.bbbbbbb.com)が使用されている場合にのみアクセスを許可することは可能ですか?もしそうなら、私はこれをどのように設定しますか?
オプション1。
ALBのデフォルトのターゲットグループを、インスタンスのない空のターゲットグループにします。これは有効な構成です。
そのターゲットグループに送信されたリクエストは常に100%失敗するため、これらのリクエストには503 Service Unavailable
が表示されます。
次に、インスタンスがアタッチされた2番目のターゲットグループ「実際の」グループを追加し、目的のHost
に一致するリクエストのみをそのグループに送信するようにバランサーを構成します。
https://serverfault.com/a/868017/153161 は似ていますが、デフォルトのグループがほとんどのリクエストを処理し、ダミー/ブラックホールのターゲットグループが必要なリクエストを処理するこの場合の反対ですブロックすると、同じ動作になります。ブロックされたリクエストがインスタンスに送信されることはありません。
オプション2。
Amazon Web Application Firewall (WAF)は、着信リクエストのHost
ヘッダーと比較するための文字列照合ルールを作成することにより、これを行うこともできます。 WAFはALBと統合されています。
WAF(100万のWebリクエストあたり$ 0.60、現在すべての地域で利用できるわけではありません)を支払う必要があるため、この設定はおそらくコストの増加を意味します...しかし、すでに他の目的(レート制限、XSS、SQL、文字列照合など)でこのALBでWAFを使用すると、現在の構成に応じて、追加のルールのコストは無視できるかゼロになります。
トラフィックがWAFを「通過」するという誤解がありますが、そうではありません。 ALBは、各要求から最初の数KBを複製し、WAFにパケットを送信して、要求を許可するかどうかの判定を要求します。合格した場合、要求は許可され、WAFはトラフィックループに含まれません。失敗した場合、ALBは403
を返します。 ALBがWAFからの応答をまったく取得できない場合(たとえば、システム障害のため)、要求は常に許可されます。これにより、WAFが障害点になるのを防ぎます。
オプション3。(h/t @ceejayoz)
着信リクエストに予期しない/不明なHost
ヘッダーがある場合にエラー応答を返すように、デフォルト構成でWebサーバーの仮想ホスティング動作を構成します。ベストプラクティスの問題として、サーバーはそのような要求に好意的に応答するべきではありません。
これらのオプションは特定の順序ではありません。