AWS再入門ブログリレー2022 Network Firewall 編
こんにちは!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』の予定です。お楽しみに!!