Cisco Discovery Protocol (CDP) は、Cisco製ネットワーク機器の運用およびトラブルシューティングにおいて長年にわたり中心的な役割を果たしてきたプロトコルである。しかし、その利便性の裏側には、設計上の特性に起因する重大なセキュリティリスクが存在する。本報告書は、CDPの技術的詳細、高度な設定方法、およびネットワークエンジニアが考慮すべき実践的なセキュリティ対策について、専門的かつ詳細な解説を提供する。
I. Cisco Discovery Protocol (CDP) の基礎知識とネットワークにおける戦略的位置づけ
A. 定義とネットワーク内での役割
CDPは、隣接するCiscoデバイス間で重要な構成情報(デバイスID、ポートID、プラットフォーム、IPアドレス、ソフトウェアバージョンなど)を自動的に交換するために開発された、Cisco独自のレイヤ2プロトコルである。このプロトコルの主要な目的は、ネットワーク管理者が手動による設定やトポロジの文書化を行うことなく、接続されている機器の種類と接続インターフェースを迅速に把握し、トラブルシューティングを容易にすることにある。CDPの動作モデルは、定期的なCDPアドバタイズメントパケット(マルチキャスト)を送信し、受信した情報をローカルキャッシュに保持する仕組みに基づいている。さらに、CDPは、Cisco IP Phoneへの電力供給やVLAN設定の自動配布など、一部のCisco固有機能の連携基盤としても機能する。
B. 標準規格LLDP (IEEE 802.1AB) との技術的比較
CDPはCisco独自機能であり、このことが標準規格であるLLDP(Link Layer Discovery Protocol, IEEE 802.1AB)との間で決定的な違いを生んでいる。CDPはCiscoデバイス間でのみ情報交換が可能であるのに対し、LLDPは規格化されているため、マルチベンダー環境においても情報交換が可能である。両プロトコルは互換性がない。CDPを標準プロトコルと比較した場合、スタンドアロンでのメリットは「ほぼない」と評価されることが多いが、ODR(On-Demand Routing)などの特定のCisco独自機能と連携して使用される場合に、その価値が発揮される可能性がある。
C. デフォルト有効化と情報漏洩リスクの予兆
Cisco IOSデバイスにおけるCDPの最も重要な運用上の側面は、そのデフォルト設定にある。CDPは、デバイス全体で有効化されており、かつインターフェースごとにもデフォルトで有効になっている。このデフォルト設定は、管理者が意識的に設定を変更しない限り、内部ネットワークのトポロジ情報が継続的に外部に流出し続けるという重大なセキュリティ上の含意を持つ。CDPパケットは隣接デバイスに対し、ホスト名、OSバージョン、プラットフォーム、そしてデバイスが保有する全てのIPアドレスなどの機密情報を認証なしに自動送信する。その結果、ネットワーク境界に面したポートや非セキュアなLANポートからCDPパケットが漏洩した場合、攻撃者はパケットを傍受するだけで、ネットワーク構成を完全にマッピングできてしまう。このため、CDPがデフォルトで有効であることは、セキュリティ対策の観点から見ると、内部ネットワーク構造を暴露する最大の脆弱性の一つとして認識されるべきである。
II. CDPプロトコル詳細と情報伝達のメカニズム (TLV構造の深度分析)
A. CDPフレームフォーマットの構造
CDPはレイヤ2で動作するプロトコルであり、一般的なDIX仕様とは異なるEthernetフレームフォーマットを使用する。フレーム内のType/Lengthフィールドには、プロトコルタイプではなくフレーム長 (Length) が格納される。この後に続くLLC (Logical Link Control) フィールド、そしてPID (Protocol Identifier) フィールドが、フレームをCDPパケットとして識別するために使用される。CDPのPIDには特定の値 0x2000 が使用される。TLVフィールドのデータ群の前には、Version、TTL (Time To Live)、および Checksum を含むCDP独自のヘッダが存在する。
B. TLV (Type, Length, Value) 形式によるデータ伝達
CDPパケットのペイロードは、情報を構造化するためにTLV(Type, Length, Value)形式を採用している。
| Type (種別) | 意味 | 送信される情報とセキュリティ上の意味合い |
| Type=1 | Device ID | デバイスのホスト名。ネットワーク管理情報に直結する。 |
| Type=5 | Software Version | IOS/OSのバージョン。既知の脆弱性を持つバージョンを特定可能。 |
| Type=6 | Platform | ハードウェアのプラットフォーム(モデル名)。資産管理情報。 |
| Type=2 | Address | 保有している全てのIPアドレス。サブネット設計の露出。 |
| Type=3 | Port ID | 接続ポートのID(インターフェース名)。トポロジマッピングの基礎。 |
| Type=4 | Capabilities | 機器が持つ機能(ルータ、スイッチ、端末など)。 |
C. 機能表示の限界とIPアドレスの広範な露出
CDPが伝達する情報の中でも特にセキュリティ上のリスクを増大させているのが、IPアドレス情報の取り扱いである。Type=2 (Address) TLVは、単一の管理IPアドレスに限定されることなく、そのデバイスが保有する全てのIPアドレス(例:ループバック、SVI、セカンダリアドレス)を伝送する。この動作は、攻撃者がルータの管理インターフェースに直接アクセスできない場合でも、CDPパケットを傍受するだけで、内部ネットワークのIPアドレススキーム全体、つまりネットワーク設計図の一部を容易に把握できることを意味する。これにより、次にターゲットとする隠蔽されたセグメントの推測が極めて容易となり、攻撃経路の特定に大いに寄与してしまう。
また、Type=4で示されるCapabilities情報についても注意が必要である。CDPのCapabilities TLVは、デバイスが持つ機能(ルータ、スイッチ、IGMP機能など)を示すが、その機能が現在アクティブに有効になっているかどうかまでは示さない 1。これは、LLDPが「有効な機能」を示すのと比較すると、CDPは運用ステータスの動的な確認においては情報が不足しており、特に自動化された運用環境での判断材料としては限定的であることを示している。
III. CDPの基本設定と動作制御(設定方法)
CDPの設定は、グローバル(デバイス全体)またはインターフェースごとに制御される。また、CDPの動作を調整するために、タイマー値を変更することが可能である。
A. グローバルな有効化/無効化の手順
Cisco IOSではCDPはデフォルトで有効であるため、セキュリティ上の要件からネットワーク全体でCDPを停止する場合、グローバルコンフィグレーションモードで以下のコマンドを実行する。
-
デバイス全体での無効化:
Router(config)# no cdp run
CDPを再度グローバルに有効化する場合は、以下のコマンドを使用する。
-
デバイス全体での有効化:
Router(config)# cdp run
B. インターフェースごとの設定とセキュリティのベストプラクティス
デバイス全体でCDPを稼働させる場合でも、外部に面したインターフェースや信頼できない機器が接続されるアクセスポートでは、インターフェースレベルでCDPを無効化することがセキュリティ上の必須事項となる。
-
特定のインターフェースでの無効化(例: FastEthernet 0):
Router(config)# interface FastEthernet 0 Router(config-if)# no cdp enable -
特定のインターフェースでの有効化:
Router(config-if)# cdp enable
C. CDPタイマーの調整と運用上の注意点
CDPが有効なデバイスは、デフォルトで60秒ごとにアドバタイズメントパケットを送信し、学習した情報はデフォルトで180秒間キャッシュ(ホールドタイム)される。これらの値は、運用要件に応じて調整できる。
-
CDPアドバタイズメント送信間隔の設定 (cdp timer)
デフォルト値は60秒である。
Router(config)# cdp timer 30 -
CDPホールドタイムの設定 (cdp holdtime)
デフォルト値は180秒である。
Router(config)# cdp holdtime 90
タイマーを設定する際の重要な技術的制約として、CDPのホールドタイマー値は、CDP送信間隔 (cdp timer) よりも必ず長い時間に設定する必要がある。ホールドタイムが送信間隔より短いか同等であった場合、隣接デバイスからの次の更新パケットが到着する前にキャッシュ情報が期限切れとなり、トポロジ情報が不安定に更新される状態(フランキング)が発生する。これはネットワークの安定性を損なうため、ホールドタイムを送信間隔より長く設定することが情報保持の冗長性を確保するための設計上の必須要件となる。
D. CDP設定コマンドリファレンス
以下に、主要なCDP設定コマンドとデフォルト値をまとめる。
CDP 設定コマンドリファレンスとデフォルト値
| 操作 | 対象範囲 | コマンド構文 | デフォルト値 |
| CDP 無効化 | デバイス全体 | Router(config)# no cdp run |
有効 |
| CDP 有効化 | デバイス全体 | Router(config)# cdp run |
N/A |
| CDP 無効化 | 特定インターフェース | Router(config-if)# no cdp enable |
有効 |
| CDP 有効化 | 特定インターフェース | Router(config-if)# cdp enable |
N/A |
| 送信間隔設定 | グローバル | Router(config)# cdp timer [秒] |
60秒 |
| ホールドタイム設定 | グローバル | Router(config)# cdp holdtime [秒] |
180秒 |
IV. 運用管理と隣接デバイス情報の確認
CDP情報の確認には、主に以下のshowコマンドが使用される。
A. グローバルCDP設定の確認 (show cdp)
このコマンドは、グローバルに有効なCDPのバージョン、CDPパケットの送信間隔(Timer)、およびホールドタイムの設定値を確認するために使用され、設定が期待通りに適用されているかを検証する。
B. 隣接デバイス情報の一覧表示 (show cdp neighbors)
このコマンドは、直接接続された隣接デバイスの主要情報を簡潔に一覧表示する。
-
表示される情報: Device ID(ホスト名)、Local Intrfce(ローカル接続ポート)、Holdtme(残りホールドタイム)、Capability(機能コード)、Platform(モデル)、Port ID(隣接ポート名)などが確認できる。この情報は、ネットワークのトポロジを迅速に把握するための基礎となる。
C. 隣接デバイス情報の詳細分析 (show cdp neighbors detail)
show cdp neighbors detail コマンドを使用することで、単なる一覧情報よりも詳細な、特定の隣接デバイスに関する全てのキャッシュ情報を取得できる。
この詳細情報から、隣接デバイスのIPアドレス、Software Version、およびCapability Codeの全貌を確認できる。特にSoftware Version (Type=5) の確認は、セキュリティパッチの適用状況を把握し、潜在的な脆弱性の有無を識別するための重要な手がかりとなる。また、IPアドレス情報 (Type=2) の確認は、前述のように、そのデバイスが持つ全てのIPアドレスを把握し、ルーティング設計を検証する上で不可欠である。
V. セキュリティリスクと実践的な対策(CDPセキュリティガイドライン)
CDPは、その利便性の高さゆえに、不正利用された場合に内部ネットワークの詳細を暴露するという本質的なセキュリティリスクを持つ。
A. CDP利用に伴う情報漏洩リスクの詳細な評価
CDPはパケットレベルで認証や暗号化の仕組みを持たないため、ネットワークの外部または非信頼セグメントからパケットを傍受されると、以下の機密情報が攻撃者に知られてしまう。
-
トポロジ情報の露出: デバイス名、プラットフォーム、インターフェース名の組み合わせにより、ネットワークの物理的および論理的な接続構造が完全にマッピングされる。
-
アドレス情報の暴露: 全てのIPアドレスが送信されるため、隠蔽されているはずの管理セグメントやサブネットスキームが暴露され、攻撃者が次の標的を特定しやすくなる。
-
脆弱性の特定: ソフトウェアバージョン (
Type=5) やプラットフォーム (Type=6) 情報は、攻撃者が特定の既知の脆弱性を狙った攻撃コード(エクスプロイト)を選択するために悪用される可能性がある。
B. CDP無効化戦略:最小権限の原則
CDPのセキュリティリスクを最小化するためには、「最小権限の原則」を適用し、CDPの利用を厳格に信頼された内部ネットワークのリンクに限定すべきである。
-
外部接続インターフェースの無効化: インターネットやDMZ、または信頼できない他の組織の機器に接続する全てのポートでは、CDPをインターフェースレベルで必ず無効化する (
no cdp enable)。 -
エンドユーザーポートの無効化: サーバーやワークステーションが接続されるアクセスポートにおいても、Cisco IP Phoneが設置されていない限り、CDPの利便性は低く、情報漏洩リスクを排除するために無効化が強く推奨される。
-
L3コアおよびL2トランクリンク: 信頼できる内部ネットワーク内のコア部分でのみ、運用上のメリットを享受するためにCDPを維持する。
C. LLDPへの移行検討とマルチベンダー環境における選択肢
マルチベンダー環境が前提となる場合、Cisco機器間でのみ機能するCDPではなく、IEEE標準であるLLDP (802.1AB) を使用することが必須となる。LLDPは広範な互換性を提供するだけでなく、機能情報においてもCDPより優位性を持つ。LLDPは、デバイスが持つ機能に加え、「どの機能が現在有効になっているか」というアクティブな運用ステータスを提供するため、より高度な運用管理や自動化が可能である。したがって、特定のCisco独自機能との連携が不要であれば、セキュリティと相互運用性の両面からLLDPが推奨される選択肢となる。
VI. 結論:CDPの戦略的利用と将来展望
Cisco Discovery Protocol (CDP) は、Cisco製品によって構築されたネットワーク環境において、迅速なトポロジ把握や特定の機能連携を実現する上で極めて効果的なツールである。しかし、CDPがデフォルトで有効化されていること、および認証なしにデバイスのIPアドレススキーム全体を含む機密情報を広範に送信するという特性は、現代の厳格なセキュリティ要件の下では重大な懸念事項となる。
結論として、CDPの利用は、信頼できる内部ネットワークのコア部分に限定し、外部に面するインターフェースやセキュリティレベルの低いセグメントでは、情報漏洩リスクを排除するためにインターフェースレベルでの無効化を徹底すべきである。ネットワークのマルチベンダー化が進む現在、CDPの価値は特定のCiscoエコシステム連携に限定されつつあり、広範な互換性、セキュリティ、および詳細な運用情報を提供するLLDPの採用が、今後のネットワーク設計の主流となりつつある。ネットワーク管理者は、CDPの利便性を享受しつつも、常にセキュリティリスクが運用上のメリットを上回らないよう、設定とプロトコル選択において慎重な判断を下す必要がある。


コメント