💬
【Azure】Front Door WAF ポリシーのカスタムルールでIP制限をする際の注意点
目的
Azure Front Doorに関連付けられたWAFにおいて、0.0.0.0/0(IPv4)からのトラフィックを拒否する設定を行っていたにもかかわらず、Azure Front Doorのエンドポイントにアクセスできたため、その原因を調査しました。
結論
IPv6(::/0)からのトラフィックを拒否するカスタムルールが設定されていなかったため、IPv6経由でのアクセスが許可されていたことが原因でした。
Wi-Fi環境のIPアドレスはIPv4でしたが、インターネット上でIPv6に変換され、Front Doorのエンドポイントにアクセスしていたと推測しています。(ログにはIPv6のアドレスによるアクセスが確認できました。)その結果、IPv6のトラフィックを拒否するカスタムルールがなかったため、暗黙的にアクセスが許可されている状態になっていました。
詳細
以下のようにカスタムルールを変更しました。
変更前:
優先度 | カスタムルール名 | 一致の種類 | 一致変数 | 演算 | IPアドレスまたは範囲 | 結果 |
---|---|---|---|---|---|---|
10 | AllowXXInbound | IPアドレス | RemoteAddr | 含まれる | X.X.X.X | トラフィックを許可する |
20 | AllowXInbound | IPアドレス | SocketAddr | 含まれる | X.X.X.X | トラフィックを許可する |
100 | DenyAllInbound | IPアドレス | RemoteAddr | 含まれる | 0.0.0.0/0 | トラフィックを拒否する |
変更後:
優先度 | カスタムルール名 | 一致の種類 | 一致変数 | 演算 | IPアドレスまたは範囲 | 結果 |
---|---|---|---|---|---|---|
10 | AllowXXInbound | IPアドレス | RemoteAddr | 含まれる | X.X.X.X | トラフィックを許可する |
20 | AllowXInbound | IPアドレス | SocketAddr | 含まれる | X.X.X.X | トラフィックを許可する |
100 | DenyAllIpv4Inbound | IPアドレス | RemoteAddr | 含まれる | 0.0.0.0/0 | トラフィックを拒否する |
200 | DenyAllIpv6Inbound | IPアドレス | RemoteAddr | 含まれる | ::/0 | トラフィックを拒否する |
※優先度100と200のカスタムルールは、統合して1つのルールにまとめても問題ありません。
※'RemoteAddr'は、通常X-Forwarded-Forヘッダーを介して送信される元のクライアントのIPアドレスを指します。
※'SocketAddr'は、WAFが認識するソースIPアドレス(通常はプロキシサーバーのアドレス)を指します。
補足
次のような単一のカスタムルールの場合、明示的にIPv6からのアクセスを拒否するカスタムルールは必要ありません。
優先度 | カスタムルール名 | 一致の種類 | 一致変数 | 演算 | IPアドレスまたは範囲 | 結果 |
---|---|---|---|---|---|---|
100 | AllowXXInbound | IPアドレス | RemoteAddr | 次の値を含まない | x.x.x.x | トラフィックを拒否する |
※上記のようなカスタムルールを複数設定する場合は、動作が複雑になるため、検証が必要です。
Discussion