🔥

AWS Network Firewall のルール順序を厳格(Strict Order) にするとドメインリストルールグループが使えない理由

2022/08/18に公開

https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-rule-evaluation-order.html#suricata-strict-rule-evaluation-order
だいぶ前にルール順序で厳格(Strict Order)を選択できるようになり、併せてステートフルでもデフォルトアクションが選択できるようになりました。
ただ、厳格(Strict Order)にすると、当該ファイアウォール(ポリシー)に対し新規作成しようとしてもドメインリストルールグループがグレーアウトして選択できなくなっちゃうんですよね。

じゃあ既存のものを追加すればいいのでは……となりますが、既存のドメインリストルールグループを厳格(Strict Order)に追加すると、下記みたいなエラーが発生します。

ResourceArn has invalid rule order, parameter: [arn:aws:network-firewall:ap-northeast-1:*******:stateful-rulegroup/*******], context: StatefulRuleGroupReferences[1].ResourceArn

理由は簡単。
2022/08/18 時点で、ドメインリストルールグループにはルール順序を選択できる機能がありません。
https://docs.aws.amazon.com/network-firewall/latest/developerguide/stateful-rule-groups-domain-names.html

ということは、ドメインリストルールグループのルール順序はデフォルトのまま、ということ。
上のエラーの通り、ルール順序が異なるステートフルルールグループはファイアウォール(ポリシー)に追加できないから、ファイアウォールポリシー側でルール順序で厳格(Strict Order)を選択した場合はデフォルトのルール順序を利用したドメインリストルールグループをアタッチできないのは……しょうがない話ですね。

「代替策は無いの!?」
となりますよね。あるんです。
Suricata互換IPSルールグループを使って……自分でルールを書けばOK。
https://docs.aws.amazon.com/network-firewall/latest/developerguide/suricata-examples.html
嬉しいことにルールのサンプルを提供してくれてるので、有り難く使わせてもらいましょう。
ただ、サンプルでしかないので検証必須です。

https://zenn.dev/nbxvxb/articles/bfc66206bef75e
ここの下部で既に試してますので、ご参考までに。

ただ、

pass tcp $HOME_NET any <> $EXTERNAL_NET 80 (flow:not_established; sid:4; rev:1;)
pass tcp $HOME_NET any <> $EXTERNAL_NET 443 (flow:not_established; sid:5; rev:1;)

これは

pass tcp $HOME_NET any <> $EXTERNAL_NET [80,443] (flow:not_established; sid:4; rev:1;)

にすればルール一つ節約できることに気づきました。今さら。

Discussion