こんにちは!インフラの裏側を覗き見するのが大好きな、技術メディアの主筆ライターです。
ネットワークの世界へ足を踏み入れたばかりの頃って、次から次へと専門用語が出てきてクラクラしちゃいますよね。「OSI参照モデル?」「TCP/IP?」「MACアドレス?」……大丈夫です、一歩ずつ、身近な例から紐解いていけば必ず理解できるようになりますよ!
今回は、ネットワークの心臓部である「スイッチングハブ」の意外な弱点と、そこに潜むセキュリティの闇「MACアドレスフラッディング攻撃」について、郵便配達のストーリーになぞらえて徹底解説していきます。現場のエンジニアが思わず「うわ、懐かしいな、あるいは怖いな」と唸るリアルな挙動を覗いてみましょう!
—
1. そもそもスイッチはどうやって通信相手を見つけているの?
オフィスのフロアにあるネットワーク機器「スイッチングハブ(L2スイッチ)」を思い浮かべてみてください。たくさんのLANケーブルがブスブスと刺さっていますよね。
スイッチは、非常に優秀な「郵便配達員」のような働きをしています。この配達員、最初はどの部屋に誰が住んでいるのか全く知りません。でも、手紙(データ)が届くたびに、次のような学習をします。
1. 「お、部屋番号Aの田中さんから手紙が来たぞ。部屋番号Aへ行くには、ドア番号1番の通路を通ればいいんだな」
2. この「誰がどの通路にいるか」の対応表を、自分の頭の中にメモします。これが「MACアドレステーブル」と呼ばれるものです。
このおかげで、2回目以降は、宛先を見ただけで「あ、鈴木さん宛てだな。それならドア番号3番の通路へ直行だ!」と、宛先の部屋にだけピンポイントで手紙を届けられるようになります。これを「ユニキャスト通信」と呼び、無駄な通信をしないからネットワークがとってもスムーズなんです。
—
2. 悪意ある者が仕掛ける「MACアドレスフラッディング攻撃」とは?
さて、ここからが本題です。この優秀な郵便配達員(スイッチ)の頭脳、実は「記憶できるキャパシティ(容量)に限界がある」という弱点を持っています。
もし、悪意を持った攻撃者が、次から次へと「存在しない適当な名前の差出人」が書かれた偽物の手紙を、1秒間に何万通も送りつけてきたらどうなるでしょうか?
[攻撃者のPC]
│
├─► 「私はMAC-Aです!」(1通目)
├─► 「私はMAC-Bです!」(2通目)
├─► 「私はMAC-Cです!」(3通目)
│ (これが何万回も無限ループで押し寄せる……!)
▼
[スイッチのMACアドレステーブル]
「ひぇ〜!もう覚えきれないよ!メモ帳のページが真っ黒でパンクしちゃう!!」
これがMACアドレスフラッディング攻撃です。スイッチの頭の中(MACアドレステーブル)が、偽物の情報で一瞬にして満杯になってしまうのです。
メモリが溢れたスイッチはどうなるのか?(フェイルオープン / ハブ化)
キャパシティを超えてしまったスイッチは、パニックに陥ります。「もう新しい宛先を覚えられない……。でも、届いた手紙を捨てわけにはいかない!」
そこでスイッチは、安全装置(フェイルオープン)として、次のような苦肉の策に出ます。
「もう宛先が分からないから、届いた手紙を、自分に刺さっているすべてのドア(全ポート)にばら撒いちゃえ!」
……お気づきでしょうか? これにより、スイッチはかつての古い機械である「ただのバカHUB(ハブ)」と同じ状態、つまり「ハブ化」してしまうのです。本来なら特定の2人の間でこっそりやり取りされるべき機密データが、フロア中のすべてのPCにダダ漏れになってしまいます。攻撃者は、この隙を突いて流れてくる機密情報を盗み見る(盗聴する)わけですね。
—
3. 実務でどう防ぐ? シスコ機器における「ポートセキュリティ」の設定
「うわ、じゃあスイッチがハブ化しちゃったら、オフィス全体のセキュリティが丸裸じゃないか!」と不安になりますよね。実務の現場では、この攻撃を防ぐために「ポートセキュリティ」という鉄壁の機能を使います。
例えば、CiscoのL2スイッチでは、各ポートに「覚えることができるMACアドレスの数」を厳しく制限する設定を入れます。
実際のCisco IOSでの設定サンプルを見てみましょう。インフラ構築の現場でそのまま使える実用的なコードです。
! --- 接続するポートの設定モードに入ります ---
Switch> enable
Switch# configure terminal
Switch(config)# interface gigabitethernet 0/1
! --- ポートをアクセスポート(端末接続用)として明示的に指定します ---
Switch(config-if)# switchport mode access
! --- ポートセキュリティ機能を有効化します ---
Switch(config-if)# switchport port-security
! --- このポートに接続できるMACアドレスの最大数を「2個」までに制限します ---
Switch(config-if)# switchport port-security maximum 2
! --- MACアドレスを動的に学習させつつ、違反があった場合の動作を「シャットダウン」に設定します ---
Switch(config-if)# switchport port-security violation shutdown
! --- 設定を保存します ---
Switch(config-if)# end
Switch# write memory
この設定のポイント
switchport port-security maximum 2: 予期せぬ大量の偽装MACアドレスが送り込まれてきても、最大数(ここでは2つ)を超えた瞬間に「おや、おかしいぞ?」と検知できます。violation shutdown: 攻撃や不正な機器の接続を検知した瞬間、スイッチ側がそのポートをピシャリと閉鎖(シャットダウン)し、ネットワーク全体の安全を守ります。
現場では、このように「信頼できる限界値」をあらかじめ定めておき、それを超える異常値を検知したら即座に遮断する仕組みを組み合わせて、日々のネットワークを守っているのです。
—
4. まとめ:基本の理解が最強のセキュリティを生む
今回は、ネットワークの基礎であるMACアドレスの学習メカニズムから、それが悪用される「MACアドレスフラッディング(ハブ化)」の恐怖、そして現場での具体的な防御策まで一気に駆け抜けてみましたがいかがだったでしょうか?
派手なサイバー攻撃のニュースを見ると身構えてしまいますが、その本質は「郵便配達の仕組みの悪用」という非常にシンプルな物理的・論理的限界にあります。
OSI参照モデルのレイヤー2(データリンク層)という泥臭いレイヤーの挙動をしっかりイメージできるようになると、セキュリティ対策の引き出しが一気に広がります。ぜひ、今日の知識をあなたのインフラ設計や日々の運用に役立ててくださいね!
それでは、また次回のテクニカル・ラウンジでお会いしましょう!
コメント