reflexive ACL
reflexive ACL は、内側から開始した通信を記録し、その戻り通信だけを一時的に許可するACLである。
通常のACLはステートを持たない。reflexive ACL は reflect で一時エントリを作り、evaluate で戻り通信を評価することで、簡易的なステートフル制御を行う。
基本の考え方
Section titled “基本の考え方”sequenceDiagram
participant In as Inside host
participant R as Router
participant Out as Outside server
In->>R: outbound TCP
R->>R: reflect creates a temporary ACL entry
R->>Out: forward outbound TCP
Out-->>R: return TCP
R->>R: evaluate checks the temporary ACL entry
R-->>In: permit return TCP
Note over R: New inbound sessions without a temporary entry are denied
外側から新規に開始された通信は、一時エントリがないため許可されない。内側から開始した通信の戻りだけを通したい場合に使う。
reflect
Section titled “reflect”reflect は、許可した通信をもとに一時的な戻り通信用エントリを作る。
ip access-list extended OUTBOUND permit tcp any any reflect TCP-TRAFFICexitこの例では、OUTBOUND ACLで許可されたTCP通信をもとに、TCP-TRAFFIC というreflexive listへ一時エントリを作る。
evaluate
Section titled “evaluate”evaluate は、作られた一時エントリに一致する戻り通信を評価する。
ip access-list extended INBOUND evaluate TCP-TRAFFIC deny ip any any logexit戻り通信を受ける方向のACLで evaluate を使う。
ZBFとの違い
Section titled “ZBFとの違い”reflexive ACL はACLを拡張した簡易的なセッション制御である。ZBF はゾーン、class-map、policy-map、inspectを使う、より構造化されたステートフルファイアウォールである。
| 項目 | reflexive ACL | ZBF |
|---|---|---|
| 設定単位 | ACLとinterface | zoneとzone-pair |
| 戻り通信 | reflect / evaluate |
inspect |
| ポリシー構造 | 比較的単純 | class-map / policy-map |
| 複数セキュリティ領域 | 管理しにくい | 管理しやすい |
学習用にはreflexive ACLでステートの考え方を掴みやすい。複数ゾーンを扱う構成ではZBFの方が整理しやすい。