💬

【Azure】Front Door WAF ポリシーのカスタムルールでIP制限をする際の注意点

2024/08/13に公開

目的

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