「隣の席の人が実は泥棒?」ネットワークの裏側で起きる、DHCPとARPの悪夢を解き明かす
こんにちは。ネットワークセキュリティの世界へようこそ。
「ネットワーク? つながればいいんでしょ?」なんて思っていた時期が、誰にでもありますよね。でも、実は私たちのPCがインターネットと通信する裏側では、目に見えないところで「なりすまし」や「通行妨害」といった、ちょっと怖いことが起きる可能性があるんです。
今回は、インフラエンジニアの卵の皆さんに、「なぜ内部ネットワークは油断ならないのか」を、郵便配達のストーリーに例えてお話しします。
—
1. DHCP:住所を教えてくれる「お節介な案内係」
まず、皆さんのPCがネットワークに参加する瞬間を想像してください。PCは「おーい! ここはどこ? 私のIPアドレス(住所)は何番?」と叫びますよね。これに応答して「君の住所はこれだよ!」と教えてくれるのが DHCPサーバー です。
- 正常な流れ: 役所の窓口(正規の
DHCPサーバー)が、正しい住所を教えてくれる。 - 恐ろしいシナリオ: もし、その窓口の横に、偽物の制服を着た悪者が座っていたら? 「やあ、君の住所はこっちだよ。あ、ついでに郵便物は全部僕のところ経由で送ってね」と、偽の案内係が嘘の情報を教え込んでしまう。
これが「不正DHCPサーバー」による攻撃です。通信の通り道を盗聴したり、悪意のあるサイトへ誘導したりする、まさに「通行妨害」の入り口なんです。
—
2. ARPスプーフィング:ネットワークの「住所録」を書き換えるいたずら
次に、ARP(Address Resolution Protocol)という仕組みを考えましょう。ネットワークの世界では、IPアドレス(例:192.168.1.5)だけでは機械を特定できません。最終的に通信するには、各端末が持つ固有のシリアル番号のような「MACアドレス」が必要です。
ARP は、言わば「IPアドレスとMACアドレスの電話帳」です。
攻撃者は、この電話帳を勝手に書き換えてしまいます。これを ARPスプーフィング と呼びます。
「192.168.1.1(ルーター)の住所は、実は俺のPCだよ!」とネットワーク中に嘘のチラシをばら撒くのです。すると、本来ルーターに行くはずだった皆さんの大切なデータが、すべて攻撃者の手元に届いてしまうことになります。
—
3. どうやって防ぐ? 現場で使える「泥臭い」防御策
「怖い話ばかりしないでよ!」と言われそうですね。大丈夫、しっかりと守るための魔法があります。
対策①:DHCPスヌーピング(DHCP Snooping)
スイッチングハブの設定で、「正規の DHCPサーバー がつながっているポート以外からは、IPアドレスを配るような通信を許可しない!」という制限をかけます。
設定例(Ciscoスイッチの場合):
# スイッチ全体でDHCPスヌーピングを有効化
ip dhcp snooping
# 特定のVLANで有効化
ip dhcp snooping vlan 10
# このポートは信頼できる(正規のサーバーがある)ことを指定
interface GigabitEthernet0/1
ip dhcp snooping trust
※これを設定しておけば、誰かが勝手に無線ルーターを持ち込んで偽のサーバーを立てても、スイッチがその嘘を即座にブロックしてくれます。
対策②:ARPテーブルの監視
ネットワーク機器には「どのIPがどのMACか」という ARPテーブル が記録されています。これを監視して、急激な変化(同じIPなのにMACが変わった、など)があったら警告を出す仕組みを構築します。
簡単なPythonによる監視イメージ:
import os
# 現在のARPテーブルを取得するコマンドを実行
def check_arp_table():
# Windowsなら 'arp -a'、Linuxなら 'arp -n'
stream = os.popen('arp -a')
output = stream.read()
print("--- 現在のARPテーブル状況 ---")
print(output)
# ここに「特定のMACアドレスが急に増えていないか」などの判定ロジックを入れる
check_arp_table()
—
最後に:ネットワークを「信頼」するな
ゼロトラストの基本は、「ネットワークの内側だからといって、絶対に安全ではない」という意識を持つことです。
1. 物理ポートの管理: 使っていないスイッチのポートは必ず閉じましょう。
2. ログを疑う: 「いつもと違う通信」に気づけるよう、監視ツール(ZabbixやPrometheusなど)でトラフィックの異常を可視化しましょう。
3. 暗号化: 万が一データが盗聴されても中身が読めないよう、通信は必ず HTTPS や TLS で保護しましょう。
ネットワークは生き物です。パケットがどう流れ、どこで悪意が介入する余地があるのか。その視点を持つだけで、皆さんはもう立派なセキュリティエンジニアの第一歩を踏み出しています。
「おかしいな?」という直感を大切に、今日も安全なネットワークを構築していきましょう!
コメント