【実務・中級編】 Ciscoポートセキュリティ(Port Security)機能の動作モードと違反処理 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

こんにちは、インフラエンジニアの皆さん。日々のネットワーク運用、本当にお疲れ様です。

新しいオフィスのフロア増床や、フリーアドレス導入に伴う配線の見直し、あるいはデータセンターでのラック増設など、ネットワークの「入り口」であるL2アクセスレイヤーのセキュリティ管理は、いつの時代もインフラエンジニアの頭を悩ませる定番のテーマです。

特に、会議室の床にぽつんと口を開けているLANポートや、誰でも手が届く共用スペースのスイッチポート。ここに悪意を持った第三者や、勝手に持ち込まれた野良ルーターが接続された瞬間、あなたの管理するネットワークは一巻の終わり……なんて事態は絶対に避けたいですよね。

今回は、Cisco Catalystスイッチの古くからある、しかし今なお現場で強烈な存在感を放つ鉄板機能「ポートセキュリティ(Port Security)」について、その深淵を覗いてみましょう。教科書的なコマンドの羅列ではなく、ASIC内部のMACアドレス表の挙動や、現場のトラシューで役立つリアルな知見を交えて徹底解説します。

—

ポートセキュリティとは何か? 本質的な役割と仕組み

ポートセキュリティは、一言で言えば「スイッチのポートごとに、接続を許可するMACアドレスの数を物理的・論理的に縛り上げる機能」です。

IEEE 802.1Xのような認証基盤(RADIUS/TACACS+や証明書配布など)を導入するのが理想ですが、プリンターやIP電話、あるいはレガシーな組込み機器など、認証エージェントを載せられないデバイスが混在する環境では、802.1Xの導入はハードルが高くなります。そんな時、「このポートには、あらかじめ登録された(あるいは最初に学習した)MACアドレスの端末しか繋がせない」というシンプルかつ強力なガードマンとして機能するのが、このポートセキュリティなのです。

スイッチのASICとMACアドレス学習の裏側

通常、Ciscoスイッチは受信したフレームの送信元MACアドレス(Source MAC)を動的に学習し、MACアドレステーブル(CAMテーブル)に登録します。
ポートセキュリティを有効にすると、スイッチはこの動的学習の挙動を監視・制限し、設定された上限値を超えたMACアドレスからのフレームが入ってきた瞬間に「違反(Violation)」と判定します。

ここで注意が必要なのは、ポートセキュリティはL2のレイヤー、つまりASICのハードウェアレベルで処理されるということです。CPUに処理が回る前にパケットがドロップまたは制御されるため、コントロールプレーンを圧迫することなく高速に不正アクセスをブロックできます。

—

3つの違反処理モード(Violation Modes)を完全理解する

上限を超えるMACアドレスが検出されたとき、スイッチがどう振る舞うかを決めるのが違反処理モードです。現場のセキュリティポリシーに合わせて、以下の3つから選択します。

+------------------------------------------------------------+
|                Cisco Port Security 違反モード               |
+------------------------------------------------------------+
  1. Protect   : 静かにドロップ(ログなし・通知なし)
  2. Restrict  : ドロップ + カウンタ加算 + Syslog/SNMP通知
  3. Shutdown  : ポートを即座にerr-disabled化(デフォルト・最強)
+------------------------------------------------------------+

1. Protect モード

上限を超えた未知のMACアドレスからのトラフィックを単にサイレントドロップします。
既存の正当な通信には影響を与えませんが、Syslogも出力されず、違反カウンタも増加しないため、運用者泣かせのモードです。「知らぬ間にパケットが消えている」という状況になるため、トラブルシューティングの難易度が跳ね上がります。本番環境での採用はあまりおすすめしません。

2. Restrict モード

Protectモードの進化系です。未知のMACアドレスからのトラフィックをドロップしつつ、違反カウンタをインクリメントし、Syslogを出力、さらにSNMPトラップを送信します。
「不正な接続があったことは検知したいが、ポート自体を落として業務を止めるわけにはいかない(可用性重視)」というポリシーの現場で検討されることがあります。

3. Shutdown モード(デフォルト)

違反を検知した瞬間、該当ポートを強制的に err-disabled ステータスへ落とし、物理ポートをシャットダウンさせます。
セキュリティインシデント発生時の二次被害(ループの発生やスキャン攻撃など)を物理的に断ち切るため、実務ではほとんどのケースでこの「Shutdown」が選ばれます。ただし、正当なユーザーがケーブルを別のハブ経由で繋ぎ変えただけでフロア全体のポートが落ちるなどの「爆弾」になるリスクもある諸刃の剣です。

—

実践!Cisco IOSでの設定と実務的プロファイル

それでは、実際のCisco Catalystスイッチ(Catalyst 9300や2960-Xなど)での設定例を見ていきましょう。
ここでは、アクセスポートにおいて「最大2台までのMACアドレスを許可し、違反時はポートをシャットダウンする」という最も標準的な構成を組んでみます。

!
interface GigabitEthernet1/0/1
 description === 1st Floor General User Access Port ===
 switchport mode access
 switchport access vlan 10
 ! --- ポートセキュリティの有効化 ---
 switchport port-security
 ! --- 学習する最大MACアドレス数を「2」に制限(デフォルトは1) ---
 switchport port-security maximum 2
 ! --- MACアドレスの学習方法を「スティッキー(Sticky)」に設定 ---
 switchport port-security mac-address sticky
 ! --- 違反時の動作を Shutdown に指定(実はデフォルトもこれ) ---
 switchport port-security violation shutdown
!

スティッキーMACアドレス(Sticky MAC)の魔法

上記の switchport port-security mac-address sticky は、インフラエンジニアの作業負担を劇的に軽減する神機能です。
通常、静的(Static)にMACアドレスをバインドする場合、1台ずつ端末のMACアドレスを調べ、switchport port-security mac-address xxxx.xxxx.xxxx と手動で設定しなければなりません。端末が替わるたびにコンフィグ変更が必要になります。

しかし、sticky を有効にすると、最初にポートに接続されたデバイスのMACアドレスをスイッチが自動的に動的学習し、それをランニングコンフィグ(Running-config)に書き込みます。
あとは write memory(または copy running-config startup-config)を叩くだけで、そのMACアドレスが永続的な設定として保存されるのです。

—

現場のトラブルシューティング:err-disabledからの生還

ポートセキュリティの運用で最も遭遇するトラブルが、「気づいたらポートが落ちている(err-disabled)」という現象です。

ユーザーが「ネットに繋がらなくなった!」と駆け込んできたとき、シニアエンジニアが確認すべき手順とコマンドを整理しておきましょう。

1. 状態の確認

まず、対象ポートが本当にポートセキュリティによって落とされたのかを確認します。

Switch# show port-security interface GigabitEthernet1/0/1
Port Security          : Enabled
Port Status            : Secure-shutdown  <-- ここが重要
Violation Mode         : Shutdown
Maximum MAC Addresses  : 2
Total MAC Addresses    : 1
Configured MAC Addresses : 0
Sticky MAC Addresses   : 1
Last Source Address:Vlan : aabb.cc00.1234:10
Security Violation Count : 1

Port Status が Secure-shutdown になっていれば、ポートセキュリティ違反によってポートが物理的に遮断されています。

2. 原因の特定

なぜ違反が起きたのか? show errdisabled recovery やログ(Syslog)を確認します。

Switch# show log | include PM
*Mar 10 05:22:10.123: %PM-4-ERR_DISABLE: psecure-violation error detected on Gi1/0/1, putting Gi1/0/1 in err-disable state

犯人は、ユーザーが勝手に持ち込んだ小型の卓上スイッチングハブ(L2スイッチ)であったり、IP電話の下に複数のPCをぶら下げて最大数(この場合は2台)を超過させたケースがほとんどです。

3. 復旧手順(Recovery)

原因を取り除いた(不正なハブを抜かせた、あるいは設定のmaximum数を見直した)後、ポートを復旧させます。

手動で復旧する場合:
一度ポートを明示的に落としてから、再有効化します。

Switch# configure terminal
Switch(config)# interface GigabitEthernet1/0/1
Switch(config-if)# shutdown
Switch(config-if)# no shutdown
Switch(config-if)# end

自動復旧(Err-disable Recovery)を設定する場合:
深夜に勝手にポートが落ちて翌朝まで復旧しない、といった事態を防ぐため、一定時間後に自動でポートを復活させるタイマーを設定することも可能です。

Switch# configure terminal
! 違反によるerr-disableからの自動復旧を有効化
Switch(config)# errdisable recovery cause psecure-violation
! 復旧までのインターバルを300秒(5分)に設定
Switch(config)# errdisable recovery interval 300

—

まとめ:モダンネットワークにおける位置づけと心構え

今回は、Ciscoポートセキュリティの動作モード、設定、そして現場のトラブルシューティングまでを深く掘り下げて解説しました。

1. Protect / Restrict / Shutdown の違いを理解し、ポリシーに合ったモードを選ぶこと。
2. Sticky MAC を活用して、運用の手間を最小限にしつつ強固な縛りを実現すること。
3. err-disabled からの復旧フローや、自動復旧タイマーの設計を怠らないこと。

SDNやゼロトラストネットワーク(ZTNA)が叫ばれる現代においても、L2スイッチの物理ポートにおけるセキュリティは、不正アクセスの第一線を守る「城壁の門」です。クラウドやAPIの設計だけでなく、こうした足回りの基礎技術をしっかりと固めることが、全体として揺るぎない堅牢なインフラストラクチャを作り上げます。

皆さんの日々のネットワーク運用が、平穏で安定したものになることを願っています。それでは、また次回の深淵でお会いしましょう!

コメント

タイトルとURLをコピーしました