~~NOCACHE~~ ## 21.ステートフルエンジンのデフォルトアクションの注意点 [[Aws:NetworkFirewall:FirewallPolicy|ファイアウォールポリシー]]にある、ステートフルエンジンのデフォルトのドロップアクションについての注意点になります。 ### 先に結論 デフォルトアクションごとそれぞれ以下になります。 #### すべてをドロップ ・アプリケーション層とトランスポート層の両方を含むルールの記載が必要。 ・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 | パス | {{tag>AWS NetworkFirewall}}