コンテンツにスキップ

reflexive ACL

reflexive ACL は、内側から開始した通信を記録し、その戻り通信だけを一時的に許可するACLである。

通常のACLはステートを持たない。reflexive ACL は reflect で一時エントリを作り、evaluate で戻り通信を評価することで、簡易的なステートフル制御を行う。


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 は、許可した通信をもとに一時的な戻り通信用エントリを作る。

ip access-list extended OUTBOUND
permit tcp any any reflect TCP-TRAFFIC
exit

この例では、OUTBOUND ACLで許可されたTCP通信をもとに、TCP-TRAFFIC というreflexive listへ一時エントリを作る。


evaluate は、作られた一時エントリに一致する戻り通信を評価する。

ip access-list extended INBOUND
evaluate TCP-TRAFFIC
deny ip any any log
exit

戻り通信を受ける方向のACLで evaluate を使う。


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の方が整理しやすい。