AWSのファイアウォールとトラフィック制御

セキュリティグループ、ネットワークACL、AWS Network Firewall、AWS WAF、Route 53 Resolver DNS Firewall、AWS Shield、Firewall Managerの役割と、ステートフル/ステートレスの違いを学びます。

学習順Step 63 / 101サービスネットワーク試験ドメインセキュリティ

AWSのファイアウォールとトラフィック制御

ファイアウォールは、ネットワークやアプリケーションへ届く通信をルールに照らして通過または遮断する仕組みです。AWSでは、VPC内のサブネットや個々のネットワークインターフェイスから、Webリクエスト、DNSクエリ、DDoS攻撃まで、守る対象に応じたサービスを組み合わせます。

「どのサービスが最適か」を選ぶときは、まず何を検査したいかを特定します。IPアドレスやポートによる通信制御、HTTPリクエストの内容の検査、名前解決先ドメインの制御、大量トラフィックによるサービス妨害への対応は、それぞれ別の役割です。また、ファイアウォールが通信の状態を追跡するかどうかも重要な比較軸です。

防御対象と制御位置

AWSの防御機能は、OSI参照モデルの層だけで機械的に分類するよりも、「どの通信をどの位置で評価するか」で考えると選びやすくなります。たとえば、AWS WAFはWebリクエストを評価し、Route 53 Resolver DNS FirewallはDNSの名前解決要求を評価します。どちらもアプリケーションが外部サービスへ到達する前後の動作に関わりますが、検査するデータと適用場所が異なります。

AWSのファイアウォールとトラフィック制御の適用位置

制御対象 主なサービス 主な適用範囲・役割
リソースに届くIP通信 セキュリティグループ EC2などのネットワークインターフェイスに関連付け、許可する通信を定義する
サブネットを通るIP通信 ネットワークACL(ネットワークアクセスコントロールリスト) サブネット境界で受信・送信ルールを評価し、許可と拒否を行う
VPCを通過する通信 AWS Network Firewall VPCのルートにファイアウォールエンドポイントを組み込み、集中して検査する
HTTP/HTTPSリクエスト AWS WAF Web ACLを対応するAWSリソースに関連付け、Webリクエストをルールで評価する
DNSクエリ Route 53 Resolver DNS Firewall VPCのResolverが受け取るDNSクエリをドメインルールで評価する
DDoS攻撃 AWS Shield AWS上の対象リソースを分散型サービス妨害攻撃から保護する
複数アカウントのポリシー AWS Firewall Manager AWS Organizations配下などへ対応する防御ポリシーをまとめて適用・監査する

これらは同じ通信に対して重ねて使えます。たとえば、公開Webアプリケーションでは、WebリクエストにWAF、VPC内の通過トラフィックにNetwork Firewall、アプリケーションのネットワークインターフェイスにセキュリティグループを適用する構成が考えられます。ひとつのサービスで全ての制御を代替するのではなく、要求された制御点ごとに組み合わせます。

ステートフルとステートレス

ステートフルファイアウォールは、通信の接続状態を追跡します。たとえばクライアントから始まった接続を許可すると、その接続に対応する応答通信は、別の新規接続として一から許可ルールを作らなくても通過できます。この「状態」は、直前の通信と結び付いたセッションの情報を指します。

ステートレスファイアウォールは、各パケットを独立して評価し、過去にどの通信を許可したかを判断に使いません。受信方向と送信方向は別々に判定されるため、要求だけでなく戻りのパケットも通せるルールが必要です。VPCのネットワークACLでは、応答に使うエフェメラルポートを含め、往路・復路の条件をそれぞれ設計します。

観点 ステートフル ステートレス
判定単位 接続やセッションの状態と関連付けて通信を評価 パケットごとにルールを評価
応答通信 許可した通信に対応する応答を自動的に扱う 応答側の方向・ポートについてもルールが必要
代表的なAWS機能 セキュリティグループ、Network Firewallのステートフルエンジン ネットワークACL、Network Firewallのステートレスエンジン
設計上の要点 どの通信開始を許可するかを明確にする 双方向の通信条件とルール順序を確認する

ステートフルとステートレスの通信評価の違い

ステートレス方式が常に高速、またはステートフル方式が常に安全という単純な優劣ではありません。ステートフル方式は通信の文脈に沿った制御を行いやすく、ステートレス方式は方向ごとに明示的なルールを適用できます。必要な制御粒度や運用方法に合わせて選び、どのサービスのどの機能を使っているかを確認します。

セキュリティグループとネットワークACL

セキュリティグループは、EC2インスタンスなどのネットワークインターフェイスに適用する仮想ファイアウォールです。ステートフルで、許可ルールを定義します。受信通信を許可すれば、その応答は接続状態に基づいて扱われます。セキュリティグループ自体に明示的な拒否ルールを設定する仕組みはありません。

ネットワークACLは、サブネットに関連付けるファイアウォールです。ステートレスで、受信と送信の両方について許可または拒否のルールを設定できます。ルール番号の順に評価され、最初に一致したルールが適用されるため、広い許可ルールが先に一致して後続の拒否ルールに届かない、といった順序にも注意が必要です。ステートレスなので、アプリケーション側のポートを許可するだけでなく、応答が戻る方向のポートも考慮します。

セキュリティグループはリソースに近い位置で許可する通信を定義し、ネットワークACLはサブネット境界で通信を許可または拒否します。特定の接続だけをリソース単位で認める場合と、サブネット全体に拒否ルールを適用する場合では、適切な制御点が異なります。

AWS Network Firewall

AWS Network Firewallは、VPCを通過するネットワークトラフィックを検査・制御するマネージド型ファイアウォールです。各アベイラビリティゾーンにファイアウォールエンドポイントを配置し、ルートテーブルで対象通信をそのエンドポイントへ向けます。サービスを作成しただけで、VPC内の全トラフィックが自動的に検査されるわけではありません。対象の通信経路がファイアウォールを通るようにルーティングを設計します。

Network Firewallのポリシーは、ステートレスとステートフルの両方のルールグループを組み合わせます。ステートレスルールはパケットの送信元・宛先アドレス、ポート、プロトコルなどを評価し、転送・破棄などの動作を決めます。ステートフルルールは接続を追跡し、プロトコルやドメインなど、より広い文脈を使って検査できます。設定したポリシーの評価方法に従って判定されるため、「Network Firewallはステートフルだけ」と決めつけず、両方のルールエンジンを理解してください。

ルールグループの種類とルール内容に応じて、5タプル(送信元IP、宛先IP、送信元ポート、宛先ポート、プロトコル)による制御、ドメインリストによる制御、侵入検知・防止(IDS/IPS)に利用できます。ドメイン条件による制御はNetwork Firewallの対応するステートフル機能で行います。WebアプリケーションのURLパスやHTTPリクエスト本文を検査するAWS WAFと同じ機能ではありません。HTTPの詳細なリクエスト条件を扱う要件では、WAFなど対象に合った機能を選びます。

たとえば、VPC内のワーカーから外部のパッケージ保管先へ出る通信を特定の宛先ドメインに制限したい場合、Network Firewallのエンドポイントへ外向き経路を通し、対応するステートフルルールを設定できます。一方、利用者が送るHTTPリクエストのURIやヘッダーを条件にしたい場合はWAFが適しています。

AWS WAFとRoute 53 Resolver DNS Firewall

AWS WAFはWebアプリケーションファイアウォールです。対応するAWSリソースにWeb ACLを関連付け、受信するHTTP/HTTPSリクエストをルールで検査します。IPアドレス、URI、ヘッダーなどの条件や、レートベースのルール、AWSが管理するルールグループを使って、Webアプリケーション層の不審なリクエストを許可・遮断できます。WAFはVPC内の任意のIPパケットを制御する汎用ファイアウォールではありません。対応リソースと関連付け単位をAWS WAFのドキュメントで確認します。

Route 53 Resolver DNS Firewallは、VPC内のアプリケーションからRoute 53 VPC Resolverを通って外向きに送信されるDNSクエリを、ルールグループに照らして評価します。特定のドメイン名への名前解決を許可・遮断・監視するため、たとえばワークロードから既知の不正ドメインを解決させたくないときに使います。遮断したクエリに対してカスタム応答を返す構成もできます。DNS FirewallはDNSクエリを制御する機能であり、解決後の任意のIP通信やWebページのURLパスを検査するものではありません。ドメインを解決できても、そのIPアドレスへの接続可否はセキュリティグループやNetwork Firewallなど別の制御で決まります。

要件に含まれる言葉 まず検討する機能
Webリクエスト、URI、HTTPヘッダー、レート制御 AWS WAF
VPCのDNSクエリ、不正ドメインへの名前解決を防止 Route 53 Resolver DNS Firewall
IP、ポート、プロトコル、VPC内の通過トラフィックを検査 AWS Network Firewall
個々のAWSリソースに対する許可通信を定義 セキュリティグループ
サブネット境界で許可と明示的拒否を設定 ネットワークACL

AWS ShieldとAWS Firewall Manager

AWS Shieldは、ネットワーク層・トランスポート層やアプリケーション層を狙う分散型サービス妨害(DDoS)攻撃からAWS上のリソースを保護するサービスです。Shield Standardは対象となるAWSサービスを利用する環境に自動的に提供される基本的な保護です。より高度な保護、可視性、対応支援が必要な場合はShield Advancedを検討します。対象リソースや追加機能、料金条件は変わり得るため、導入時には公式のShield説明と料金ページで確認します。Shieldはアプリケーションのアクセス許可を細かく定義する一般的なファイアウォールと同一ではなく、大量トラフィックなどのDDoS脅威への対策として位置付けます。

AWS Firewall Managerは、複数アカウントやリソースに対する対応サービスのファイアウォールポリシーを一元管理するサービスです。AWS Organizationsと連携した環境で、対象アカウントやリソースにポリシーを展開し、組織内の適用状況を確認できます。管理対象にはAWS WAF、Shield Advanced、Network Firewall、Route 53 Resolver DNS Firewall、セキュリティグループ、ネットワークACLのポリシーなどがあります。利用できるポリシー種別や前提条件はサービスごとに異なります。

Firewall Manager自体がパケットを検査して遮断するファイアウォールではありません。防御機能を持つサービスの設定を組織横断で適用・監査する管理レイヤーです。数十のアカウントへWAFルールを個別配布する代わりに、Firewall Managerのポリシーで対象範囲と適用内容を管理する、といった使い方ができます。

要件から制御点を選ぶ

ファイアウォール関連の要件を読んだら、最初に遮断または許可したい対象を特定します。

  1. WebアプリケーションへのHTTPリクエストか — URI、ヘッダー、リクエストレートなどを評価するならAWS WAFを検討します。
  2. DNSで問い合わせるドメインか — VPCの名前解決要求を制御するならRoute 53 Resolver DNS Firewallを検討します。
  3. VPCを流れるIP通信か — ルートを通るパケットを集中的に検査するならAWS Network Firewallを検討します。
  4. 特定リソースへの接続許可か — リソースに関連付けたステートフルな許可ルールならセキュリティグループを検討します。
  5. サブネット全体の許可・拒否か — 双方向ルールと評価順を管理するならネットワークACLを検討します。
  6. DDoS対策か、組織横断の配布か — 攻撃緩和ならAWS Shield、複数アカウントへのポリシー適用ならAWS Firewall Managerを検討します。

公開Webアプリケーションでの組み合わせ

公開された予約APIを例にすると、WAFでWebリクエストの条件を評価し、ShieldでDDoS対策を行い、Network FirewallでVPCの通過経路を検査できます。APIを処理するタスクやデータベースにはセキュリティグループを割り当て、サブネットに追加の境界ルールが必要な場合はネットワークACLを使います。ワークロードから名前解決するドメインに制限を設けるなら、Resolver DNS Firewallを別途適用します。どの制御も実際に対象通信の経路または関連付け先に有効化されている必要があります。

公開Webアプリケーションでのファイアウォールの組み合わせ

学習の要点

  • 制御対象を基準に選ぶ:WebリクエストはWAF、DNSクエリはRoute 53 Resolver DNS Firewall、VPCを通る通信はNetwork Firewall、リソース単位の許可はセキュリティグループ、サブネット境界の制御はネットワークACLで考える。
  • ステートフルは接続状態を追跡する:セキュリティグループはステートフルで、許可した通信の応答を状態に沿って扱う。
  • ステートレスはパケットを個別に評価する:ネットワークACLは受信・送信を別々に判定し、明示的な拒否と優先順位付きルールを利用できる。
  • Network Firewallは両方式を持つ:ポリシーでステートレスとステートフルのルールグループを組み合わせる。VPCの経路にエンドポイントを挿入しないと対象通信を検査できない。
  • Network FirewallとWAFの検査内容を区別する:Network FirewallはVPCトラフィック向けのファイアウォールであり、Webリクエストの詳細なURI条件などはWAFの領域。
  • ShieldとFirewall Managerの役割は異なる:ShieldはDDoS対策、Firewall Managerは複数アカウントでの対応ポリシーの一元管理を担う。

公式ドキュメント

重要ポイント

  • ▸セキュリティグループはリソース単位のステートフル制御、ネットワークACLはサブネット単位のステートレス制御
  • ▸AWS Network FirewallはVPCの経路に配置し、ステートレスとステートフルのルールグループで通信を検査する
  • ▸AWS WAFはWebリクエスト、Route 53 Resolver DNS FirewallはDNSクエリを評価し、それぞれ異なる段階で通信を制御する
  • ▸AWS ShieldはDDoS対策を提供し、AWS Firewall Managerは対応する防御ポリシーを複数アカウントへ一元展開する
  • ▸ステートフル/ステートレスは通信状態を記憶するかどうかの分類であり、適用範囲や検査対象のレイヤーとは別の軸である

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます