Zone-Based Firewall
ZBF は、インターフェースをゾーンに所属させ、ゾーン間の通信にポリシーを適用するCisco IOSのファイアウォール機能である。
ACL はインターフェース単位で通信を制御する。ZBF はゾーン間の通信を制御する。inspect を使うと、内側から開始した通信の戻りを自動的に許可できる。
| 要素 | 役割 |
|---|---|
zone security |
セキュリティゾーンを作る |
zone-member security |
インターフェースをゾーンに所属させる |
class-map type inspect |
対象通信を分類する |
policy-map type inspect |
classごとの動作を決める |
zone-pair security |
送信元ゾーンと宛先ゾーンの組を作る |
service-policy type inspect |
zone-pairへpolicyを適用する |
flowchart LR
subgraph membership["インターフェースのゾーン所属"]
inif["inside interface"] --> inz["zone INSIDE"]
outif["outside interface"] --> outz["zone OUTSIDE"]
end
subgraph zp_policy["INSIDE から OUTSIDE への zone-pair"]
zp["zone-pair security"]
pmap["policy-map type inspect"]
cmap["class-map type inspect"]
act["action: inspect, pass, or drop"]
state["inspect creates return-flow state"]
end
inz --> zp
outz --> zp
zp --> pmap
pmap --> cmap
cmap --> act
act --> state
ゾーン間の通信は、source zone と destination zone の zone-pair で評価される。該当する zone-pair や policy がなければ、ゾーン間通信は許可されない。
inspect / pass / drop
Section titled “inspect / pass / drop”| action | 意味 |
|---|---|
inspect |
通信を許可し、戻り通信用の状態を作る |
pass |
通信を許可するが、戻り通信の状態は作らない |
drop |
通信を破棄する |
内側から外側へのTCP/UDP/ICMPを許可し、戻り通信も通したい場合は inspect を使う。
self zone
Section titled “self zone”ルータ自身宛、またはルータ自身が生成する通信は、通常のinside/outside間通信とは別に考える。ZBFでは self zone を使って、ルータ自身への SSH、ICMP、routing protocol などを制御できる。
学習初期のZBFでは、まず inside から outside への通信を扱い、ルータ自身への管理通信は別途整理する方が分かりやすい。
ACLとの使い分け
Section titled “ACLとの使い分け”| 場面 | 向いている機能 |
|---|---|
| 単純に特定IPやportを止める | ACL |
| PBRやroute-mapの条件に使う | ACL |
| 内側から開始した通信の戻りだけ通す | reflexive ACL または ZBF |
| 複数ゾーンの通信ポリシーを管理する | ZBF |
ZBF はACLより構造が多い。その代わり、ゾーン単位で通信の方向と状態を管理できる。