AWS再入門ブログリレー2022 Network Firewall 編

2022.03.11

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です!

当エントリは弊社コンサルティング部による『AWS再入門ブログリレー 2022』の27日目のエントリです。

このブログリレーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

AWSをこれから学ぼう!という方にとっては文字通りの入門記事として、またすでにAWSを活用されている方にとってもAWSサービスの再発見や2022年のサービスアップデートのキャッチアップの場となればと考えておりますので、ぜひ最後までお付合い頂ければ幸いです。

では、さっそくいってみましょう。27日目のテーマは『AWS Network Firewall』です。

はじめに

Network Firewall攻略のポイントは、「ルールグループ」と「ルートテーブル設計」の理解です。

この2つの概念を理解できれば、自ずと必要な設定値が見えてくると思います。

なるべく図解ベースで作成しました!ご参考にしていただけますと幸いです。

Network Firewallとは

一言で表すと「VPC向けのファイアーウォール、IDS・IPSを提供するマネージドサービス」です。

Network ACLやSecurity Groupに比べ、ディープパケットインスペクション(DPI)、アプリケーションプロトコル検出、ドメイン名フィルタリング、侵入防止システム(IPS)などより高度な機能を提供するサービスです。

Network Firewallの構成要素

AWS Network Firewallは、3つのコンポーネントで構成されています。

  • ファイアウォール
  • ファイアウォールポリシー
  • ルールグループ

ファイアウォール

ファイアーウォールは、指定したサブネット(ファイアウォールサブネット)に、ゲートウェイロードバランサー型のVPCエンドポイントを作成し、ファイアウォールポリシーと関連付けます。ログの設定もこのコンポーネントで行います。

ファイアウォールポリシー

ファイアーウォールの動作を定義するコンポーネントです。

ルールグループの順序付け、デフォルトアクションを管理します。

ルールグループ

詳細なフィルタリングルールを定義するコンポーネントです。

なお、ルールグループは3種類提供されています。(2022年3月現在)

  • アンマネージドステートフルルールグループ
  • マネージドステートフルルールグループ
  • アンマネージドステートレスルールグループ

アンマネージドステートレスルールグループ

アンマネージドステートレスルールグループは、文字通りステートレスなトラフィックを制御するルールグループです。

送信元IP、送信元ポート、送信先IP、送信先ポート、プロトコルの5つのタプル(組み合わせ)でトラフィックを精査します。

2022年3月現在、後述のマネージドステートフルルールグループのような、マネージドなステートレスルールグループは提供されていません

ステートフルルールグループルールグループの詳細を学ぶ前に

ステートフルルールグループルールグループの詳細を学ぶ前に、「アクション」と「順序」を押さえておくと理解が進みやすいです。

アクション

アクションでは、「検知したトラフィックの処理方法」を定義します。

アクションは、3種類から1つ選択できます。

  • パス:宛先への送信を許可
  • ドロップ:宛先への送信をブロック
  • アラート:宛先への送信をパスし、ログとしてAlertを出力

順序

順序では、「評価するルールの順番決め」を定義します。

順序は、2種類から1つ選択できます。

  • デフォルト
  • 厳格

デフォルト

デフォルトは、「アクションの種類」で評価順序が異なります。

具体的には、「パス」、「ドロップ」、「アラート」の順番でルールの評価を行います。

上記の例だと、「80番ポートを使用した192.168.0.0/24宛の通信」は、「パス」されます。

それ以外のポートとCIDRを使用した通信」は、「ドロップ」されます。

デフォルトでは、「ドロップ」が先に評価されるため、「アラート」は評価されません

もし、「アラート」を優先したい場合は、以降の「厳密」の評価タイプを使用する必要があります。

厳密

厳密では、評価順序をカスタムできます。

ルールは、上から下へ評価されます

そのため、「アラート」が評価された後に、「ドロップ」を処理できます。

ちなみに、アンマネージドステートレスルールグループでは、「優先度」を用いて評価順序を決定します。

アンマネージドステートフルルールグループ

アンマネージドステートフルルールグループは、Suricataルールエンジンを使用したルールグループです。

Suricataは、ステートフルネットワークトラフィック向けのオープンソースネットワークIPSです。

ルールをカスタムするためアンマネージドなルールグループとなっています。

3つのオプションの中からルールを定義します。

  • 5-tuple:送信元IP、送信元ポート、送信先IP、送信先ポート、プロトコルの5つのタプル(組み合わせ)でトラフィックを精査します
  • Domain list:ドメインベースでトラフィックを精査します
  • Suricata compatible IPS rules:Suricata互換のIPSルールでトラフィックを精査します

注意点として、「Domain list」ルールは、厳密評価で使用できません。

大替手段として、厳密評価では、「Suricata compatible IPS rules」でドメインベースのフィルタリングを行います。

マネージドステートフルルールグループ

マネージドステートフルルールグループは、2021年12月より提供開始されたAWS管理のステートフルルールグループです。

最大の特徴は、一般的なアプリケーションセキュリティにおける新しい脆弱性や脅威が出現すると、自動的にマネージドルールグループを更新し、新バージョンのルールグループが提供されます。

ただし、検知時のデフォルトアクションは、drop(ブロック)のため注意が必要です。

導入前に、テストモードでデフォルトアクションをalartに書き換え、入念な検証をおすすめします。

ファイアーウォールポリシーから見た評価

ファイアーウォールポリシーで、「ファイアーウォールポリシーは、ルールグループの順序付け、デフォルトアクションを行うコンポーネント」とご説明しました。

もう少し深掘りすると、ファイアーウォールには複数のルールグループを関連付けできます。

各ルールグループには、「優先度」が存在し評価が決定します。

少し脱線しますが、「ステートフルルール評価の順序とデフォルトのアクション」と「ステートフルルールグループ」で使用している「ルールの順序」は合わせる必要があります。

ルール評価順を総復習

これまでのルール評価の順番を図にすると以下になります。

かなり複雑なので、十分な時間を設計することをお勧めします。

ルートテーブル設計

Network Firewallは、NAT Gatewayと併用してよく使われます。

アップデートでNAT Gatewayとの位置関係が変わってるのでご説明します。

MSR以前の設計

More Specific Routing(以後、MSR)とは、サブネットルートテーブル内で、localルートとは別に具体的なルートを指定する機能です。

詳しくは、以下のブログをご覧ください。

More Specific Routing(以後、MSR)が登場する前までは、VPC Ingress Routingを使用してInternet Gatewayでルーティングを制御していました。

この構成の場合、NAT Gatewayを経由してからFirewall Endpointへ到達するため、送信元がNATのIPになってしまう問題がありました。

MSR以降の設計

MSRが登場して以来、Firewall Endpointが先に経由して外部通信可能になったため、NAT GatewayのIPに集約される問題が解決されました。

今後、Network Firewallを実装する機会があれば、後者のMSRを使用したルート設計を行うことをお勧めします。

終わりに

以上、『AWS 再入門ブログリレー 2022』の27日目のエントリ『AWS Network Firewall』編でした。

来週月曜(3/14)は、inomasoさんによる『Amazon SNS』の予定です。お楽しみに!!