三歩あるけば物も忘れる

お腹のお肉がメタボックル

ユーザ用ツール

サイト用ツール


Aws:NetworkFirewall:StatefulDefaultAction

21.ステートフルエンジンのデフォルトアクションの注意点

ファイアウォールポリシーにある、ステートフルエンジンのデフォルトのドロップアクションについての注意点になります。

先に結論

デフォルトアクションごとそれぞれ以下になります。

 すべてをドロップ

・アプリケーション層とトランスポート層の両方を含むルールの記載が必要。
・3wayハンドシェイクを利用したポートスキャン対策ができる。

 確立された接続のパケットをドロップ

・アプリケーション層のルールのみの記載で良い。
・3wayハンドシェイクを利用したポートスキャン対策はできない。

説明

TCPはコネクション型プロトコルになるので、データ転送が行われる前にトランスポート層で3wayハンドシェイクが行われ、コネクションの確立を行います。
https://www.infraexpert.com/study/tcpip9.html

デフォルトのドロップアクションは「すべてをドロップ」or「確立された接続のパケットをドロップ」から選択しますが、「すべてをドロップ」はコネクション確率前のトラフィックも検査対象となります。
デフォルトを「すべてをドロップ」とした場合に、ルールでアプリケーションプロトコルを許可したい場合はトランスポート層のコネクション用にTCPプロトコルでも許可する必要があります。
デフォルトを「確立された接続のパケットをドロップ」とする場合は、コネクションの確立後のパケットを検査するので個別に許可する必要がありません。

なんのこっちゃわからんと思うので例をあげます。

例:SSHを許可したい場合

以下を例に記載します。
・接続元CIDR:192.168.0.0/24
・接続先ポート:ANY
・接続先CIDR:192.168.1.0/24
・接続先ポート:22
・プロトコル:SSH

すべてドロップとした場合

×以下のルールを登録しても3wayハンドシェイクのコネクションの確立ができずSSHが利用できない。

接続元IP 接続元ポート 接続先IP 接続先ポート プロトコル アクション
192.168.0.0/24 ANY 192.168.1.0/24 22 SSH パス

じゃあ「すべてドロップ」としたい場合どうしたらいいの?って話なんですが、以下の通りトランスポート層の許可を入れる必要があります。
なのでデフォルトアクションを「すべてドロップ」の場合は、トランスポート層のルールで管理を行うと思えばいいのかなと思います。

接続元IP 接続元ポート 接続先IP 接続先ポート プロトコル アクション
192.168.0.0/24 ANY 192.168.1.0/24 22 TCP パス

確立された接続のパケットをドロップとした場合

〇以下のルールを登録すると、3wayハンドシェイクのコネクションの確立はドロップ対象でないのでSSHが利用できます。

接続元IP 接続元ポート 接続先IP 接続先ポート プロトコル アクション
192.168.0.0/24 ANY 192.168.1.0/24 22 SSH パス
Aws/NetworkFirewall/StatefulDefaultAction.txt · 最終更新: 2023/06/22 by admin