【Cisco】Zone-Based Firewall(ZBFW)の仕組みと設定手順

  • URLをコピーしました!
目次

はじめに

Cisco ルータを「ただのパケット中継機」から「高機能なセキュリティゲートウェイ」へと変貌させる機能、それが Zone-Based Firewall(ZBFW)です。

従来、ルータでのアクセス制御といえば ACL(アクセスコントロールリスト) が一般的でした。しかし、ACL はパケットの中身や通信の状態を記憶しない「ステートレス」な仕組みであるため、「行き」の通信を許可しても、「戻り」の通信まで個別に許可設定を書く必要があり、設定が複雑化しやすいという課題がありました。

ZBFW は、これを解決するために 「ステートフル・インスペクション(状態監視)」 をルータ上で実現します。これにより、「内部から外部への通信を許可すれば、その戻り通信(Reply)は自動的に許可する」といった、専用のファイアウォール製品(ASA や Firepower 等)と同等のセキュリティ制御が可能になります。

▼ ステートフルインスペクションの仕組みについてはこちらも参照

この記事でわかること
  • ZBFW の基本概念(ゾーンとポリシーの考え方)
  • 設定の全体フロー(Class-map / Policy-map / Zone-pair の3階層)
  • 具体的な設定コマンドと確認方法

ZBFW(Zone-Based Firewall)の基本概念

ZBFW を理解する上で最も重要なのが、機能名にもなっている 「ゾーン(Zone)」 という考え方です。

ゾーン (Zone) とは?

従来のファイアウォール(ACL)は「物理的なインターフェース(Gi0/0 など)」ごとにルールを決めていましたが、ZBFW ではインターフェースを論理的なグループである 「セキュリティゾーン」 に割り当てて管理します。

  • INSIDE: 社内 LAN などの信頼できるネットワーク
  • OUTSIDE: インターネットなどの信頼できないネットワーク
  • DMZ: 公開サーバーなどを配置する緩衝地帯

インターフェースがどのゾーンに属するかを決めることで、「Gi0/0 から Gi0/1 へ」ではなく、「INSIDE から OUTSIDE へ」といった、より直感的で管理しやすいポリシー適用が可能になります。

デフォルトの動作(重要)

ここが ZBFW の最大の特徴であり、初心者が最もハマりやすいポイントです。 ゾーンを作成し、インターフェースを割り当てた瞬間、ゾーン間の通信はデフォルトですべて「遮断(Drop)」されます。

  • 同一ゾーン内の通信: デフォルトで 許可(例: INSIDE の PC 同士)
  • 異なるゾーン間の通信: デフォルトで 拒否(例: INSIDE から OUTSIDE)

つまり、「通信させたいペア(ゾーンペア)」に対して明示的に「許可」の設定を入れない限り、一切通信ができなくなります。 これにより、意図しない通信漏れを防ぐ「ホワイトリスト形式」の強固なセキュリティが実現します。

ステートフルインスペクション

ZBFW で通信を許可する場合、単に pass(通過)させるのではなく、通常は inspect(検査) というアクションを指定します。

これを行うことで、ルータは通信の状態(セッション)を記憶し、「戻りの通信(Reply)」を自動的に許可 します。 ACL のように「行き」と「帰り」の両方を書く必要はありません。これにより設定行数が大幅に削減され、ミスも減ります。

設定の全体像(3つの構成要素)

ZBFW の設定は、CPL(Class, Policy, Zone-pair)と呼ばれる 3階層構造 になっています。 いきなりコマンドを打ち始めるのではなく、まずこの「3つの箱」の役割と関係性を理解することが成功への近道です。

STEP
Class-map(クラスマップ)
  • 役割: 「誰を」(通信の識別)
  • 内容: 「どのトラフィックを対象にするか」を定義します。
  • 設定: ACL(IPアドレスで指定)や、プロトコル(HTTPなど)を指定して、通信を分類・抽出します。

イメージは「赤い服を着た人」を選別するフィルターです。

STEP
Policy-map(ポリシーマップ)
  • 役割: 「どうするか」(アクションの定義)
  • 内容: Class-map で識別した通信に対して、どのような処理を行うかを定義します。
  • 主なアクション:
    • Inspect: ステートフルインスペクションを行う(基本はこれ)戻り通信を許可し、ログを取得する。
    • Drop: 通信を遮断する(ログを残すことも可能)
    • Pass: 検査せず、そのまま素通しする(ステートレス)

イメージは「赤い服の人」を「検査して通す」というルールブックです。

STEP
Zone-pair(ゾーンペア)
  • 役割: 「どこからどこへ」(適用の方向)
  • 内容: 作成した Policy-map を、具体的な「ゾーン間の移動」に適用します。
  • 設定: 「Source(送信元)ゾーン」と「Destination(宛先)ゾーン」の組み合わせを指定し、そこにポリシーを紐付けます。

イメージは「INSIDE から OUTSIDE へ向かうゲート」にルールブックを設置です。

実践設定例(Inside から Outside への通信許可)

ここからは、実際にルータに設定を投入する手順をステップバイステップで解説します。

【シナリオ】

  • INSIDE (Gi0/0): 社内ネットワーク (192.168.1.0/24)
  • OUTSIDE (Gi0/1): インターネット側
  • 要件: 社内からインターネットへの通信(Web 閲覧など)は許可し、戻りの通信も通す。それ以外の通信(インターネット側からの開始など)は拒否する。
STEP
ゾーンの作成と割り当て

まずは「箱(ゾーン)」を作り、インターフェースをその箱に入れます。

! 1. セキュリティゾーンの定義
conf t
zone security INSIDE
zone security OUTSIDE

! 2. インターフェースへの割り当て
interface GigabitEthernet0/0
 zone-member security INSIDE
!
interface GigabitEthernet0/1
 zone-member security OUTSIDE

ポイント: zone-member security コマンドを入れた瞬間から、そのインターフェースは ZBFW の管理下に入り、ポリシー未設定の状態では通信が遮断されます(一時的な通信断が発生するため、リモート作業時は注意してください)

STEP
通信対象の定義(Class-map)

次に、「どの通信を制御するか」を定義します。 通常は ACL(アクセスコントロールリスト)を作成し、それを class-map に読み込ませる方法が一般的です。

! 1. 通信対象を特定する ACL の作成
ip access-list extended ACL-INSIDE-TO-OUTSIDE
 permit ip 192.168.1.0 0.0.0.255 any

! 2. クラスマップの作成(ACLを紐付け)
class-map type inspect match-all CM-INSIDE-TO-OUTSIDE
 match access-group name ACL-INSIDE-TO-OUTSIDE
  • type inspect: ZBFW 用のクラスマップであることを宣言します。
  • match-all: 条件にすべて一致した場合(ここでは ACL のみ)にヒットします。
STEP
ポリシーの定義(Policy-map)

Step 2 で定義した通信に対して、「どうするか(アクション)」を決定します。 ここで最も重要なのが inspect アクションです。

policy-map type inspect PM-INSIDE-TO-OUTSIDE
 ! 定義したクラスに対してアクションを指定
 class type inspect CM-INSIDE-TO-OUTSIDE
  inspect
 !
 ! それ以外の通信(デフォルト)は破棄
 class class-default
  drop

inspect の重要性: 単なる許可(Pass)ではなく inspect を指定することで、ルータは「戻りの通信(Reply)」を動的に許可するためのテーブルを作成します。これにより、ステートフルなファイアウォールとして動作します。

STEP
ゾーンペアの作成と適用(Zone-pair)

最後に、作成したポリシーを「どのゾーンから、どのゾーンへ向かう通信に適用するか」を定義します。これが「橋」を架ける作業です。

! ゾーンペアの作成
zone-pair security ZP-IN-TO-OUT source INSIDE destination OUTSIDE
 ! 作成したポリシーマップを適用
 service-policy type inspect PM-INSIDE-TO-OUTSIDE
  • source / destination: 通信の「開始方向」を指定します。

結果: これで「INSIDE から始まり OUTSIDE へ向かう通信」は検査(Inspect)され、許可されます。逆に「OUTSIDE から始まり INSIDE へ向かう通信」は、対応するゾーンペアがないため、デフォルトの動作(Drop)により遮断されます。

動作確認コマンド

設定が完了したら、実際に通信を行い、ZBFW が正しく機能しているか(ステートフルインスペクションが働いているか)を確認しましょう。

セッション情報の確認

最も役に立つのが、「現在確立されているセッション」 を表示する以下のコマンドです。 社内の PC からインターネットへ Ping や Web アクセスを行いながら、ルータで実行してみてください。

show policy-map type inspect zone-pair sessions

▼ 出力例

Router# show policy-map type inspect zone-pair sessions

policy exists on zp INSIDE-TO-OUTSIDE
 Zone-pair: ZP-IN-TO-OUT

  Service-policy inspect : PM-INSIDE-TO-OUTSIDE

    Class-map: CM-INSIDE-TO-OUTSIDE (match-all)
      Match: access-group name ACL-INSIDE-TO-OUTSIDE
      Inspect
        Number of Established Sessions = 1
        Established Sessions
          Session 81E48480 (192.168.1.10:54321)=>(8.8.8.8:53) icmp SIS_OPEN

▼ 見るべきポイント

Established Sessions: ここにセッションが表示されていれば、「行き」の通信が検査され、「戻り」の通信枠が確保されている証拠です。

もしここが 0 のままで通信が通らない場合は、ACL の設定やゾーンの割り当て(zone-member)が間違っている可能性があります。

まとめ

本記事では、Cisco ルータを強力なセキュリティデバイスに変える Zone-Based Firewall(ZBFW)について解説しました。

  • ACL との違い: ステートフルインスペクションにより、戻り通信の許可設定が不要。
  • ゾーンの概念: インターフェース単位ではなく、セキュリティレベル(Inside/Outside)で直感的に管理
  • 3階層の設定: Class-map(識別)→ Policy-map(アクション)→ Zone-pair(適用)の流れ。

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次