社内LANを構築したあと「STPってデフォルトで有効だし、そのままで大丈夫でしょ」と放置していませんか。スパニングツリープロトコル(STP)はL2ループを防ぐ重要な仕組みですが、設定を放置すると攻撃者が偽のBPDUフレームを1本送りつけるだけでルートブリッジを乗っ取り、社内ネットワーク全体のトラフィックを傍受できます。
この記事では、STPを狙った攻撃手口と、BPDUガード・ルートガード・PortFastを組み合わせたL2スイッチ堅牢化の実践設定を、情シス1人でも即日着手できるレベルで解説します。
STP(スパニングツリープロトコル)とは?なぜ攻撃対象になるのか
STPはIEEE 802.1Dで標準化されたL2プロトコルで、スイッチ間に物理ループが存在しても「ブロードキャストストームが発生しないよう一部ポートを論理的にブロック」する役割を持ちます。現在は高速版のRSTP(802.1w)やMSTP(802.1s)が主流ですが、基本的なセキュリティ課題はどれも共通しています。
STPが攻撃対象になる根本的な理由は、BPDUフレームに認証機能がない点です。BPDUとはBridge Protocol Data Unitの略で、スイッチ同士がトポロジー情報を交換するための制御フレームです。どのスイッチがルートブリッジ(STPツリーの頂点)になるかは、送信されたBPDUに含まれるブリッジIDの優先度値で決まります。攻撃者がPCから優先度0(最強値)のBPDUを送信するだけで、そのPCが新たなルートブリッジとして選出されてしまいます。
ネットワークの規模や機器によって呼称や細部は異なりますが、多くの現場で使われているCisco IOS / IOS-XEを例に解説します。他ベンダー(Juniper・HPE Aruba等)でも機能名と設定コマンドが異なるだけで、概念は同じです。
・ルートブリッジ: STPツリーの起点となるスイッチ。全経路計算の基準になる
・BPDU: スイッチ間でトポロジー情報を伝えるL2制御フレーム
・ブリッジID: プライオリティ(0~65535)+MACアドレスで構成される識別子
・ポートステート: Blocking → Listening → Learning → Forwarding の状態遷移(STP)
STPを悪用した攻撃の仕組み
1. ルートブリッジ乗っ取り攻撃(BPDU Spoofing)
最も基本的な攻撃です。攻撃者がPCにSTP対応ツール(Yersinia等)をインストールし、プライオリティ0・ブリッジID最小のBPDUをフラッドします。既存ルートブリッジより強い優先度を持つBPDUを受信したスイッチ群はトポロジー再計算を開始し、攻撃者のPCが新ルートブリッジに選出されます。
この結果、ネットワーク内の通信が攻撃者のPCを経由するようになるため、中間者攻撃(MITM)と同等の状態が実現します。STP収束(トポロジー確定)まで数秒から数十秒の通信断も生じます。
2. TCN Flood攻撃(トポロジー変更通知の氾濫)
Topology Change Notification(TCN)BPDUを大量に送信する攻撃です。TCNを受信したスイッチはMACアドレステーブルを短時間でフラッシュし、正規の宛先が不明になるためフラッドが発生します。これを繰り返すことでネットワーク全体に不要なトラフィックを氾濫させ、帯域の枯渇やスイッチのCPU負荷増大(DoS)を引き起こします。
3. 物理ループによるブロードキャストストーム
BPDUガードが無効なポートに攻撃者がスイッチやハブを接続し、意図的に物理ループを形成する手口です。STPが正常機能している場合は自動収束しますが、設定ミスや接続タイミングによってはブロードキャストストームが発生し、社内ネットワーク全体が数分で使用不能になります。
STPセキュリティ機能の設定手順
1. BPDUガードでエッジポートを保護する
BPDUガードは、エンドユーザーのPCやサーバーが接続されるアクセスポートでBPDUを受信した瞬間にそのポートを自動シャットダウン(err-disabled状態に移行)する機能です。STPトポロジーに参加すべきでない機器からのBPDUを遮断します。
全ポートにグローバルで有効化するか、ポート単位で設定するかを選べます。推奨はグローバル有効化+PortFast設定ポートへの自動適用です。
# BPDUガードのグローバル有効化(PortFast有効ポートに自動適用) Switch(config)# spanning-tree portfast bpduguard default # 特定ポートに個別適用する場合 Switch(config)# interface GigabitEthernet0/1 Switch(config-if)# spanning-tree bpduguard enable # err-disabledポートの確認 Switch# show interfaces status err-disabled # err-disabledポートの自動回復設定(オプション・300秒後に復旧) Switch(config)# errdisable recovery cause bpduguard Switch(config)# errdisable recovery interval 300
重要: BPDUガードはスイッチ間接続ポート(アップリンクポート)には適用しないでください。スイッチ間のBPDUが遮断されてしまい、STPが正常動作しなくなります。エンドデバイス(PC・プリンター・サーバー)が接続されるポートのみに適用します。
2. ルートガードでトポロジーを安定させる
ルートガードは、指定ポートで「現在のルートブリッジより強い優先度を持つBPDU」を受信した場合にそのポートをroot-inconsistent(不整合)状態にブロックする機能です。BPDUガードとの違いは、ポートをシャットダウンせず、上位BPDUが来なくなれば自動的に復旧する点です。
ルートブリッジとして「ここは絶対に変更させたくない」というアップリンクポートや、境界スイッチの外向きポートに設定します。
# ルートガードを特定ポートに適用 Switch(config)# interface GigabitEthernet0/24 Switch(config-if)# spanning-tree guard root # ルートガードの状態確認 Switch# show spanning-tree inconsistentports # ルートブリッジを意図した機器に固定(優先度を最低値に設定) Switch(config)# spanning-tree vlan 1 priority 4096 # ※ デフォルト32768。小さい値ほど優先。0は原則使わず4096または8192を推奨
3. PortFastでエッジポートを高速化する(正しい使い方)
PortFastはSTPのListening→Learning状態をスキップし、接続直後にForwarding状態へ移行させる機能です。PCやサーバーが接続されたポートでSTP収束待ち(最大30秒)によるDHCP取得失敗などを防ぎます。
PortFastはエンドデバイス接続ポートのみに使用し、スイッチ間接続ポートには絶対に設定しないことが原則です。スイッチ間接続ポートに設定するとループ発生時のブロードキャストストームリスクが高まります。
# PortFastのグローバル有効化(アクセスポートのみに自動適用) Switch(config)# spanning-tree portfast default # 特定ポートに個別適用する場合 Switch(config)# interface GigabitEthernet0/1 Switch(config-if)# spanning-tree portfast # PortFastの設定状態確認 Switch# show spanning-tree detail | include portfast
4. ループガードで片方向リンク障害を検知する
ループガードは、BPDUを受信しなくなったポートが誤ってForwarding状態に移行するのを防ぐ機能です。光ファイバーの片方向断線(送信は生きているが受信が死んでいる状態)などでSTPが正常動作しなくなる障害に対応します。
# ループガードのグローバル有効化 Switch(config)# spanning-tree loopguard default # 設定確認 Switch# show spanning-tree detail | include loop
注意: ループガードはBPDUガードと同一ポートに設定すると動作が競合する場合があります。アップリンクポートにはループガード、エッジポートにはBPDUガードと使い分けるのが基本です。
中小企業でも今日からできること
スイッチの設定変更は本番影響が出やすい作業です。以下の優先度順で段階的に進めることをおすすめします。
・【優先度:高】ルートブリッジを意図した機器に固定する: 最初の一手。コアスイッチに spanning-tree vlan X priority 4096 を設定し、ルートブリッジを確定させる。変更後は show spanning-tree で「This bridge is the root」が表示されることを確認
・【優先度:高】エッジポートにPortFast + BPDUガードを適用する: PortFastはPCが接続されるポートに段階適用。BPDUガードをセットで有効化することでセキュリティを確保する
・【優先度:中】コアスイッチのアップリンクポートにルートガードを設定する: ルートブリッジが固定できたら、外部からのトポロジー変更を防ぐためルートガードを追加
・【優先度:中】ループガードをアップリンクポートに設定する: 光ファイバー接続のアップリンクで特に効果的。BPDUガード適用ポートとは分けて設定
・【優先度:低】STPログをSIEMやsyslogサーバーへ転送する: spanning-tree logging を有効化し、トポロジー変更イベントを監視対象に加える
L2スイッチ全体の堅牢化については、スイッチングセキュリティ実践ガイド|Port Security・DHCP Snooping・DAIもあわせてご覧ください。Port SecurityによるMACアドレス制限やDHCP Snoopingとの組み合わせでL2防御の多層化が実現できます。
ネットワーク全体のセグメント設計については、VLANによるネットワークセグメンテーションが参考になります。VLANとSTPを組み合わせることで、VLAN単位でSTPトポロジーを制御できます(PVST+やMSTPの活用)。
スイッチ以外のネットワーク機器全般のハードニングについては、ネットワーク機器のハードニング実践ガイドで初期設定変更からアクセス制御まで網羅しています。
よくある誤解と注意点
「STPは古い技術だから最新スイッチには関係ない」は誤り
RSTPやMSTPも基本的な認証なしBPDU交換という弱点を継承しています。BPDUガード・ルートガードはRSTP/MSTP環境でも同様に機能し、設定が必要です。
「BPDUガードを全ポートに入れれば安全」は誤り
スイッチ間接続(トランクポート・アップリンクポート)にBPDUガードを設定すると、正規のBPDUを受信するたびにポートがシャットダウンされ、ネットワーク断が発生します。エッジポートとアップリンクポートを明確に区別して設定してください。
「PortFastを設定するとSTPが無効になる」は誤り
PortFastはListening/Learningをスキップするだけで、STP自体は動作し続けます。ただしBPDUガードをセットで使わない場合、そのポートから接続されたスイッチのBPDUに無防備になります。
「管理VLAN(VLAN 1)はそのまま使っていい」は誤り
VLAN 1はほとんどのスイッチのデフォルトVLANであり、STP攻撃の標的になりやすいです。管理VLANを別の番号に変更し、未使用ポートはVLAN 999等の隔離VLANに割り当てることを検討してください。
「100%ループを防げる」とは言えない
BPDUガードやSTPはあくまでソフトウェア的な対策です。物理ループが発生した瞬間から収束するまでの数百ミリ秒でもブロードキャストが拡大します。物理的なケーブリング管理と組み合わせた多層防御が不可欠です。
本記事のまとめ
STPセキュリティ対策の要点を整理します。
| 機能 | 対象ポート | 防御する脅威 | 設定コマンド(Cisco) |
|---|---|---|---|
| BPDUガード | エッジポート(PC・サーバー接続) | BPDUスプーフィング・不正スイッチ接続 | spanning-tree portfast bpduguard default |
| ルートガード | アップリンク・境界ポート | ルートブリッジ乗っ取り | spanning-tree guard root(ポート単位) |
| PortFast | エッジポート(PC・サーバー接続) | STP収束待ちによるDHCP失敗 | spanning-tree portfast default |
| ループガード | アップリンクポート | 片方向リンク障害によるループ | spanning-tree loopguard default |
| ルートブリッジ固定 | コアスイッチ全体 | TCN Flood・トポロジー不安定化 | spanning-tree vlan X priority 4096 |
STPの脆弱点は「認証なしのBPDU交換」という仕組み上の制約に由来します。物理ポートへのアクセスを制限するハードウェア的な対策(施錠・ケーブル管理)と、BPDUガード・ルートガードのソフトウェア的な対策を組み合わせることで、現実的なレベルのL2セキュリティを実現できます。
まず「ルートブリッジの固定」と「エッジポートへのPortFast + BPDUガード適用」だけでも、よくある攻撃の大半を防げます。今日の作業時間30分で着手できる対策です。
PR
実践 パケット解析 第3版(Chris Sanders/オライリー・ジャパン)
Wireshark・tcpdumpを使ったパケット解析の決定版。STPのBPDUフレームを実際にキャプチャして攻撃の痕跡を読み解く技術を身につけたい方に最適な一冊です。
