[アップデート] AWS Network Firewall でフローオペレーションを使ったキャプチャやフラッシュができるようになりました
いわさです。
AWS Network Firewall にはステートレスルールとステートフルルールがあります。
ステートレスルールの場合、各パケットが毎回評価されますが、ステートフルルールの場合は接続が追跡され確立された接続は維持されます。
そのため、ステートフルルールのポリシー変更を行った場合に既に確立されている状態の接続に対して新しいルールを適用できないという問題があります。
先日のアップデートで、フローオペレーションが追加され、ステートフルルールが管理中に状態テーブルに対してのキャプチャとフラッシュができるようになりました。
フローフラッシュを使うことでインシデント発生時などに迅速にルールを適用することができるようになります。
また、その前段階としてフローキャプチャを使うことで、アクティブな接続を確認することが出来ます。
実際に使ってみましたのでその様子を紹介します。
検証構成としては Network Firewall サブネットと EC2 サブネットでインターネットゲートウェイと EC2 間のトラフィックを通すだけの一番シンプルな構成です。
ただし、このフローのチェック機能は前述のようにステート管理テーブルに対するキャプチャやフラッシュになるので、ステートフルルールを構成しておく必要があります。
ステート管理テーブルはステートフルルールが検証されたタイミングで初めて書き込まれるのでステートレスルールで先にドロップしている場合はうまく動かないです。
フローキャプチャ
まず、Network Firewall リソース詳細画面を開いてみると、次のように「ファイアウォールの操作」というものが追加されております。
そこにフローフラッシュとフローキャッシュのボタンがあるので、こちらから操作するようです。
まずはフローキャプチャを試してみます。
フローキャプチャに必要な情報ですが、フィルターを1件以上指定する必要があります。
フィルターで指定するのは送信元アドレスと送信先アドレス、プロトコルの情報です。送信元と送信先はどちらかだけでも OK です。
次のように全ての送信元に対して任意のプロトコルでフィルターを構成しフローキャプチャを実行してみました。
数分時間がかかるようで、ステータスが「進行中」になっています。
少し待って更新してみるとステータスが「完了済み」になりました。
また下部のフローにはキャプチャされたフローに関する情報が列挙されています。
ここを確認して分析や、ルールの有効性を検証したり、トラブルシューティングが出来そうですね。
なお、公式ドキュメントでは次のように言及されており、フィルターを広くしすぎると操作制限が発生する可能性があるようです。そのせいで数分かかっていたのかな。
When using flow capture operations with broad filter criteria (like wide IP ranges), you might encounter operation limits. To stay within these limits, use more specific flow filters, such as narrower IP ranges or additional criteria like ports and protocols.
Capturing traffic in your firewall's state table - AWS Network Firewall より
フローフラッシュ
続いてフローフラッシュです。
フローキャプチャとほぼ同じ使い方なのですが、キャプチャするだけではなくて確立済みの接続がフラッシュされる点が違いです。
ステートレスルールで最新を強制適用したい場合はこちらを使うことになる感じでしょうか。
事前にルールを更新しています。
操作はキャプチャと同じでフィルターを1つ以上指定して実行です。
同じように少し待つとフラッシュされたフローの一覧が表示されました。
事前にクライアントから SSH 接続を確立していたのですが、フラッシュしたタイミングでリモート側から切断されました。なるほどね。
% ssh -i "hoge.pem" ec2-user@ec2-52-195-221-130.ap-northeast-1.compute.amazonaws.com
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Thu Mar 20 22:08:21 2025 from 104.28.228.10
[ec2-user@ip-10-0-110-130 ~]$ ls
:
[ec2-user@ip-10-0-110-130 ~]$ Connection to ec2-52-195-221-130.ap-northeast-1.compute.amazonaws.com closed by remote host.
Connection to ec2-52-195-221-130.ap-northeast-1.compute.amazonaws.com closed.
%
フローオペレーションの履歴を確認
これらの実行したフローキャプチャやフローフラッシュですが、過去12時間以内の操作履歴であれば保存されており、確認することが出来ます。
デフォルトだと何も表示されないのでコンテキストを選択する必要があります。
確認することが出来ました。
タイプでキャプチャとフラッシュどちらが選択されたのかを確認することが出来て、フローオペレーション ID を選択することで先程まで見ていた実行結果の詳細画面を確認することができるので、どのフローがフラッシュされたのかなども後から確認できます。
さいごに
本日は AWS Network Firewall でフローオペレーションを使ってフローテーブル上のステートに対してキャプチャやフラッシュができるようになったので試してみました。
ステートフルルールを使っている場合、運用時にこの機能はお世話になりそうです。