クラシック 規則またはファイアウォール ポリシーを使用して、NAT 規則、ネットワーク規則、およびアプリケーション規則を使用して Azure Firewall を構成できます。 既定では、トラフィックを許可するように規則を手動で構成するまで、Azure Firewall はすべてのトラフィックを拒否します。 規則を終了しているところです。そのため、一致した時点で規則の処理が停止します。
クラシック ルールを使用したルール処理
ファイアウォールは、ルールの種類別に、小さい数値から大きい数値 (100 から 65,000) までの優先順位でルール コレクションを処理します。 ルール コレクション名には、文字、数字、アンダースコア、ピリオド、またはハイフンのみを含めることができます。 先頭は文字または数字、末尾は文字、数字、またはアンダースコアでなければなりません。 名前の最大長は 80 文字です。
最初に、ルール コレクションの優先順位番号を 100 単位 (100、200、300 など) に配置して、必要に応じてルール コレクションをさらに追加する領域を用意します。
ファイアウォール ポリシーを使用したルール処理
ファイアウォール ポリシーを使用すると、ルール コレクションとルール コレクション グループ内のルールを整理できます。 ルール コレクション グループには、0 個以上のルール コレクションが含まれています。 規則コレクションは、NAT、ネットワーク、またはアプリケーションの種類です。 1 つのルール グループ内に複数の規則コレクションの種類を定義できます。 ルール コレクションには、0 個以上のルールを定義できます。 規則コレクション内の規則は、同じ種類 (NAT、ネットワーク、またはアプリケーション) である必要があります。
システムは、ルール コレクション グループの優先度とルール コレクションの優先順位に基づいてルールを処理します。 優先度は、100 (最高) から 65,000 (最低) のいずれかの数字で表されます。 システムは、最も優先度の高い規則コレクション グループを最初に処理します。 ルール コレクション グループ内では、優先度が最も高い (最も低い番号) ルール コレクションが最初に処理されます。
親ポリシーからファイアウォール ポリシーを継承する場合、子ポリシーの優先順位に関係なく、親ポリシーのルール コレクション グループが常に優先されます。
Note
システムは常にネットワーク ルールの後にアプリケーション ルールを処理し、ルール コレクション グループまたはルール コレクションの優先順位とポリシーの継承に関係なく、DNAT ルールの後にネットワーク ルールを処理します。
要約すると、次のようになります。
- 親ポリシーは常に子ポリシーよりも優先されます。
- システムは、優先順位でルール コレクション グループを処理します。
- システムは、優先順位でルール コレクションを処理します。
- システムは DNAT ルール、ネットワーク ルール、アプリケーション ルールを処理します。
4 つのルール コレクション グループを含むポリシーの例を次に示します。 BaseRCG1 と BaseRCG2 は親ポリシーから継承されます。 ChildRCG1 と ChildRCG2 は 子ポリシーに属しています。
ヒント
次の表で使用される省略形: RCG = 規則コレクション グループ、RC = 規則コレクション。 優先度の数値の範囲は、100 (最も高い優先度) から 65,000 (最も低い優先度) です。
ポリシー構造:
| レベル | Name | タイプ | 優先度 | ルール | Policy |
|---|---|---|---|---|---|
| グループ | BaseRCG1 | 規則コレクション グループ | 200 | 8 | 親 |
| 徴収 | DNATRC1 | DNAT | 6:00 | 7 | 親 |
| 徴収 | DNATRC3 | DNAT | 6:10 | 3 | 親 |
| 徴収 | NetworkRC1 | Network | 800(八百) | 1 | 親 |
| グループ | BaseRCG2 | 規則コレクション グループ | 3:00 | 3 | 親 |
| 徴収 | AppRC2 | アプリケーション | 1200 | 2 | 親 |
| 徴収 | NetworkRC2 | Network | 1300年 | 1 | 親 |
| グループ | ChildRCG1 | 規則コレクション グループ | 3:00 | 5 | 子供 |
| 徴収 | ChNetRC1 | Network | 七百 | 3 | 子供 |
| 徴収 | ChAppRC1 | アプリケーション | 900 | 2 | 子供 |
| グループ | ChildRCG2 | 規則コレクション グループ | 6:50 | 9 | 子供 |
| 徴収 | ChNetRC2 | Network | 1100 | 2 | 子供 |
| 徴収 | ChAppRC2 | アプリケーション | 2000 | 7 | 子供 |
| 徴収 | ChDNATRC3 | DNAT | 3000 | 2 | 子供 |
ファイアウォールは、すべてのルール コレクション グループを 3 回反復処理します。ルールの種類ごとに DNAT、ネットワーク、アプリケーションの順に 1 回です。 各パス内では、優先度順にグループを処理し、次に各グループ内のルール コレクションを優先順位で処理します。 次の表に、この例の完全な処理シーケンスを示します。
処理順序:
| Step | 規則集合 | タイプ | 親 RCG |
|---|---|---|---|
| 1 | DNATRC1 | DNAT | BaseRCG1 (200) |
| 2 | DNATRC3 | DNAT | BaseRCG1 (200) |
| 3 | ChDNATRC3 | DNAT | ChildRCG2 (650) |
| 4 | NetworkRC1 | Network | BaseRCG1 (200) |
| 5 | NetworkRC2 | Network | BaseRCG2 (300) |
| 6 | ChNetRC1 | Network | ChildRCG1 (300) |
| 7 | ChNetRC2 | Network | ChildRCG2 (650) |
| 8 | AppRC2 | アプリケーション | BaseRCG2 (300) |
| 9 | ChAppRC1 | アプリケーション | ChildRCG1 (300) |
| 10 | ChAppRC2 | アプリケーション | ChildRCG2 (650) |
ファイアウォール ポリシー規則セットの詳細については、「Azure Firewall ポリシー規則セット」を参照してください。
脅威情報
脅威インテリジェンスベースのフィルター処理を有効にした場合、それらのルールの優先度が最も高くなります。 Azure Firewall では、ネットワークとアプリケーションの規則の前に、常に最初に処理されます。 脅威インテリジェンスベースのフィルター処理では、Azure Firewall が構成済みのルールを処理する前にトラフィックをブロックできます。 詳細については、「Azure Firewall の脅威インテリジェンスベースのフィルター処理」を参照してください。
侵入検知および防止システム (IDPS)
アラート モードで IDPS を構成すると、IDPS エンジンはルール処理ロジックと並行して動作します。 受信フローと送信フローの両方について、一致する署名に関するアラートが生成されます。 IDPS 署名が一致する場合、Azure Firewall はファイアウォール ログにアラートを記録します。 ただし、IDPS エンジンはルール処理エンジンと並行して動作するため、アプリケーションまたはネットワーク ルールが拒否または許可するトラフィックによって、別のログ エントリが生成される可能性があります。
アラート モードと拒否モードで IDPS を構成すると、IDPS エンジンはインラインで動作し、ルール処理エンジンの後にアクティブになります。 そのため、両方のエンジンがアラートを生成し、一致するフローをブロックする可能性があります。
IDPS によるセッションのドロップはフローを静かにブロックします。 つまり、TCP レベルで RST は送信されません。 IDPS は、ネットワークまたはアプリケーションルールが一致 (許可または拒否) され、ログにマークされた後、常にトラフィックを検査するため、IDPS が署名の一致のためにセッションを拒否することを決定したときに別の ドロップ メッセージがログに記録される可能性があります。
TLS 検査を有効にすると、暗号化されていないトラフィックと暗号化されたトラフィックの両方が Azure Firewall によって検査されます。
暗黙の戻りトラフィックのサポート (ステートフル TCP/UDP)
トラフィックを一方向のみに許可するようにファイアウォール規則を構成できます。 たとえば、Azure Firewall では、オンプレミス ネットワークから Azure 仮想ネットワークへの接続を許可できますが、Azure 仮想ネットワークからオンプレミスへの新しい接続をブロックする必要があります。 このポリシーを適用するには、Azure 仮想ネットワークからオンプレミス ネットワークへのトラフィックに対して明示的な拒否規則を追加します。
Azure Firewall では、この構成がサポートされています。 Azure Firewall はステートフルであるため、明示的な拒否規則が逆方向に存在する場合でも、確立された TCP または UDP 接続のリターン トラフィック (たとえば、オンプレミスから開始した接続の SYN-ACK/ACK パケット) を許可します。 明示的な拒否規則は、Azure 仮想ネットワークからオンプレミスへの新しい接続を引き続きブロックします。
送信接続
ネットワーク ルールとアプリケーション ルール
ネットワーク規則とアプリケーション 規則を構成する場合、Azure Firewall では、アプリケーション 規則の前に優先順位でネットワーク規則が適用されます。 その後、これらのルールが終了します。 そのため、Azure Firewall がネットワークルールで一致するものを見つけた場合、他のルールは処理されません。 IDPS を構成した場合、Azure Firewall は、すべてのトラバーサルされたトラフィックで IDPS を実行します。 IDPS は、署名の一致を検出すると、IDPS モードに応じてアラートを生成したり、疑わしいトラフィックをブロックしたりできます。
ネットワーク ルールが一致しない場合、およびプロトコルが HTTP、HTTPS、または MSSQL の場合、アプリケーション ルールはパケットを優先順位で評価します。
HTTP については、Azure Firewall で Application 規則への一致を調べるとき、ホスト ヘッダーの情報を使用します。 HTTPS については、Azure Firewall で Application 規則への一致を調べるとき、SNI のみを使用します。
HTTP および TLS インスペクションが有効である HTTPS では、ファイアウォールでパケットの宛先 IP アドレスが無視され、ホスト ヘッダーからの DNS 解決済み IP アドレスが使用されます。 実際の TCP ポートとホスト ヘッダー内のポートの間にポートの不一致がある場合、ファイアウォールはトラフィックを破棄します。 ファイアウォールで構成した Azure DNS またはカスタム DNS は、DNS 解決を実行します。
Note
Azure Firewall では、HTTP プロトコルと HTTPS プロトコル (TLS 検査) の両方に、元のソース IP アドレスに設定された XFF (X-Forwarded-For) ヘッダーが常に入力されます。
アプリケーション規則に TLS 検査が含まれている場合、ファイアウォール規則エンジンは、SNI、ホスト ヘッダー、および規則に一致する URL も処理します。
アプリケーションルール内で一致するものが見つからない場合、Azure Firewall はインフラストラクチャルールコレクションに対してパケットを評価します。 それでも一致するものが見つからない場合、Azure Firewall は既定でパケットを拒否します。
インフラストラクチャ ルールのコレクション
Azure Firewall には、既定で許可されるインフラストラクチャ FQDN 用の組み込みのルール コレクションが含まれています。 これらの FQDN はプラットフォームに固有であり、他の目的には使用できません。 インフラストラクチャ ルール コレクションは、アプリケーション ルールの後、最終的な「全て拒否」ルールの前に処理されます。
組み込みのインフラストラクチャ 規則コレクションには、次のサービスが含まれています。
- ストレージ プラットフォーム イメージ リポジトリ (PIR) へのコンピューティング アクセス
- マネージド ディスクのストレージ アクセスの状態
- Azure Diagnostics and Logging (MDS)
インフラストラクチャ規則コレクションのオーバーライド
組み込みのインフラストラクチャ ルール コレクションをオーバーライドするには、最後に処理されるすべてのアプリケーション ルール コレクションを拒否します。 インフラストラクチャ ルールの収集前に常に処理されます。 インフラストラクチャ 規則コレクションに含まれていないものは、既定で拒否されます。
Note
TCP、UDP、ICMP、または任意の IP プロトコルのネットワーク 規則を構成できます。 Any IP プロトコルには、インターネット割り当て番号機関 (IANA) プロトコル番号のドキュメントで定義されているすべての IP プロトコルが含まれています。 宛先ポートを明示的に構成した場合、規則は TCP+UDP 規則に変換されます。 2020 年 11 月 9 日より前には、Any は TCP、UDP、または ICMP を意味していました。 そのため、この日より前に設定した規則では、Protocol = Any かつ destination ports = '*' となっていることがあり得ます。 現在定義されている IP プロトコルを許可しない場合は、必要なプロトコル (TCP、UDP、または ICMP) を明示的に構成するように規則を変更します。
受信接続
DNAT ルールとネットワーク ルール
受信インターネットまたはイントラネット接続を有効にするには、「 Azure portal を使用して Azure Firewall DNAT を使用して受信インターネットまたはイントラネット トラフィックをフィルター処理する」の説明に従って宛先ネットワーク アドレス変換 (DNAT) を構成します。 NAT 規則は、ネットワーク 規則の前に優先順位で適用されます。 Azure Firewall で一致するものが見つかると、DNAT ルールに従ってトラフィックが変換され、許可されます。 そのため、トラフィックは他のネットワークルールによるさらなる処理の対象にはなりません。 セキュリティ上の理由から、ネットワークへの DNAT アクセスを許可する特定のインターネット ソースを追加し、ワイルドカードを使用しないようにします。
Azure Firewall では、受信接続のアプリケーション規則は適用されません。 そのため、受信 HTTP/S トラフィックをフィルター処理する場合は、Web アプリケーション ファイアウォール (WAF) を使用します。 詳しくは、「Azure Web アプリケーション ファイアウォールとは」を参照してください。
例
次の例は、これらのルールを組み合わせた結果を示しています。
例 1
ネットワーク ルールが一致するため、google.com への接続は許可されます。
ネットワーク ルール — アクション: 許可
| Name | プロトコル | 変換元の型 | 参照 | 変換先の型 | 宛先アドレス | 宛先ポート |
|---|---|---|---|---|---|---|
| Allow-web | TCP | IP アドレス | * | IP アドレス | * | 80,443 |
アプリケーション ルール — アクション: 拒否
| Name | 変換元の型 | 参照 | プロトコル:ポート | ターゲットの FQDN |
|---|---|---|---|---|
| Deny-google | IP アドレス | * | http: 80、https: 443 | google.com |
結果
パケットが Allow-web ネットワーク ルールと一致するため、google.com への接続は許可されます。 ここで、ルール処理が停止します。
例 2
優先順位の高い "拒否" ネットワーク ルール コレクションによってブロックされるため、SSH トラフィックは拒否されます。
ネットワーク ルール コレクション 1 — 名前: 許可コレクション、優先度: 200、アクション: 許可
| Name | プロトコル | 変換元の型 | 参照 | 変換先の型 | 宛先アドレス | 宛先ポート |
|---|---|---|---|---|---|---|
| Allow-SSH | TCP | IP アドレス | * | IP アドレス | * | 22 |
ネットワーク ルール コレクション 2 — 名前: Deny-collection、優先度: 100、アクション: 拒否
| Name | プロトコル | 変換元の型 | 参照 | 変換先の型 | 宛先アドレス | 宛先ポート |
|---|---|---|---|---|---|---|
| Deny-SSH | TCP | IP アドレス | * | IP アドレス | * | 22 |
結果
SSH 接続は、優先順位の高いネットワーク 規則コレクションによってブロックされるため、拒否されます。 この時点で、ルールの処理が停止します。
ルールの変更
以前に許可されたトラフィックを拒否するようにルールを変更した場合、Azure Firewall は関連する既存のセッションをすべて削除します。
3 方向ハンドシェイクの動作
ステートフル サービスとして、Azure Firewall では、送信元から送信先への許可されたトラフィックに対する TCP 3 方向ハンドシェイクを行います。 たとえば、VNet-A から VNet-B などです。
VNet-A から VNet-B への許可ルールを作成しても、VNet-B から VNet-A への新しく開始された接続が許可されるわけではありません。
そのため、VNet-B から VNet-A への明示的な拒否規則を作成する必要はありません。