Amazon ELB ネットワークロードバランサーの背後には複数のウェブサーバーがあります。ロードバランサは、クライアントパケットの送信元IPアドレスを独自の送信元IPアドレスに置き換えます。
たとえば、IPを持つクライアントが203.0.113.1
マイロードバランサーに接続されています。ロードバランサーは送信元IPを使用してクライアントトラフィックをWebサーバーに転送します172.16.1.1
。これにより、クライアントIPを選択的にブロックすることが困難になります。
Amazon Network Load Balancerには2つのソリューションがあります。
- IP予約はロードバランサーを介してIPv4 IPを透過的に予約しますが、IPv6アドレスはまだ変換されているため、デフォルトではIPv6をサポートしていません。
172.16.1.1
TCP DATA
アドレス指定情報を含むフィールドの前にヘッダーを追加するプロキシプロトコルV2をロードバランサーで有効にできます。 IPv4とIPv6をサポートし、Apache Webサーバーでサポートされています。 IPパケットの送信元IPアドレスは172.16.1.1
まだ実際のソースIPv4 / 6アドレスは、プロキシプロトコルV2ヘッダー内のTCPデータフィールドにあります。。
通常、私のサーバーのファイアウォールログは、誤動作するアドレスをブロックするFail2Banから読み取られます。私の問題は、次のプロキシプロトコルV2を使用してカプセル化された誤動作トラフィックをブロックする方法がわからないことです。IPTablesはプロキシプロトコルV2ヘッダーを直接チェックできないようです。それ以外の場合は、この目的のためにFail2BanとIPtablesを使用してください。
次の回避策は、IPアドレスをLambdaスクリプトに送信して、VPCのネットワークACLまたはルーティングテーブルからIPをブロックすることです。ただし、これにより Network Load Balancer へのトラフィックがブロックされるように見えるため、初期の複雑さが追加されます。トラフィックを取得する唯一の方法。
Apache、IPTables、またはその他のツールがプロキシプロトコルV2ヘッダーのIP値に基づいてトラフィックを動的にブロックする簡単な方法はありますか?