ARP・DHCPスプーフィングとSnooping・DAI
VLAN10の社員端末WS-41がDHCPで10.20.10.41を取得し、ゲートウェイ10.20.10.1のMACアドレスをARPで調べます。攻撃者が同じVLANに不正DHCPサーバと偽ARP応答を置いた場合、何が変わるのでしょうか。DHCP SnoopingとDAIを含め、IP・MAC・ポート・時刻を結んで読む記事です。
読む順序は、用語と配置→正常な処理→異常ログ→調査と対策→復旧→演習です。接続・検知・遮断・被害を別々の事実として扱います。以下の構成、時刻、アドレス、ログ、設定値は教材用の架空例です。
1. 用語と役割を構成に結び付ける
用語 | この事例での意味と限界 |
|---|---|
ARP | 同一L2領域でIPv4アドレスに対応するMACを問い合わせる。ARPの応答は暗号学的に送信者を認証しない。IPv6ではNDPを使い、ARPとは別。 |
ARPスプーフィング | 攻撃者が10.20.10.1を自分のMACだと主張し、端末の対応表を誤らせる。攻撃者が同じブロードキャスト領域にいることが典型的な前提。 |
DHCP | Discover、Offer、Request、AckでIPv4設定を配る。IP、ゲートウェイ、DNS、リース期間を渡す。Offerを受けただけでは確定しない。 |
DHCPスプーフィング | 不正サーバが先にOffer/Ackを返し、偽ゲートウェイやDNSを配る。端末の既存リースが直ちに変わるとは限らない。 |
DHCP Snooping | SWの信頼ポートから来たサーバ応答だけを通し、正規リースからIP-MAC-VLAN-ポートのbindingを作る機能。実装と設定に依存する。 |
DAI | Dynamic ARP Inspection。未信頼ポートからのARPをbinding等と照合し、偽の対応を破棄する。静的IP端末は別途登録が必要になり得る。 |
2. 構成と信頼境界
WS-41はGi1/0/4、攻撃者端末はGi1/0/9、正規DHCPサーバへの上りはGi1/0/48です。全端末はVLAN10にあり、正規DHCPはWS-41へ10.20.10.41/24、GW10.20.10.1、DNS10.20.10.53を配ります。Gi1/0/48だけをDHCP応答の信頼ポートにし、端末ポートは未信頼にします。
- 1. DiscoverとARP
- 2. 偽Offerと偽ARP
- 3. 正規DHCPと通信
- 4. GW宛て通信
不正Offerと偽ARPは端末側未信頼ポートで検査する。
図の矢印は物理・論理上の接続を示し、攻撃パケットが通過したことを保証しません。Gi1/0/9からの偽Offerと偽ARPはSWの未信頼ポートで拒否される設計です。
3. 正常な処理を順に追う
WS-41がUDP68→67のDHCPDISCOVERを送る。正規サーバがDHCPOFFERで候補IPと設定を返す。
WS-41がDHCPREQUESTで使う候補を選び、サーバがDHCPACKを返してリースを確定する。
SWは通過したDHCP交換から10.20.10.41、WS-41のMAC、VLAN10、Gi1/0/4、期限をbindingへ記録する。
WS-41がGW10.20.10.1のMACをARP要求し、正規GWの応答を得る。DAIは未信頼ポート発のARPをbinding等で照合する。
DHCPの標準プロトコルだけで、Offerを出したサーバが正規か自動的に保証されるわけではありません。Snoopingはスイッチでの配置制御です。ARPの偽応答も同じVLAN内で起こるため、VLAN境界だけでなく端末が接続するSW上の検査が重要です。
4. 設定値・ログの読み方
項目 | 値の意味と判断の限界 |
|---|---|
message_type/xid | Discover/Offer/Request/AckとトランザクションIDを対応させる。Offerだけでリース確定としない。 |
server_id/gateway/dns | DHCPが指示する値。攻撃者はDNSだけを差し替えて誘導する場合もある。 |
binding | IP-MAC-VLAN-ポート・リース期限の組。DAIの照合元だが、古い・欠けたbindingなら正規通信も落ちる。 |
arp sender_ip/mac | ARPで主張された対応。受け取った事実と正当なGWであることは別。 |
trust_state | DHCPサーバへの上りだけを信頼し、端末ポートを未信頼にする。信頼を広げると偽Offerが通る。 |
次の架空ログでは、正規リースを得た後、攻撃者ポートからの偽Offerと偽ARPを破棄しています。
13:00:00 dhcp xid=0x41 type=ACK ip=10.20.10.41
gw=10.20.10.1 dns=10.20.10.53 lease=3600
13:00:01 sw binding=10.20.10.41/02:00:00:00:10:41
vlan=10 port=Gi1/0/4
13:02:00 sw port=Gi1/0/9 type=DHCPOFFER action=drop
13:02:01 sw port=Gi1/0/9 arp_ip=10.20.10.1
arp_mac=02:00:00:00:10:66 action=DAI-drop`DAI-drop`はこの偽ARPがSWを通らなかったことを示します。WS-41がすでに偽のARP情報を持っていたか、別ポートで不正応答を受けたかは端末のARPキャッシュと時刻付き記録で確認します。
5. 攻撃・障害時の差分
異常・攻撃条件 | 観測、成立条件、対策の位置 |
|---|---|
偽DHCP Offer | 同じL2領域の攻撃者が先にDNSやGWを提示。端末ポートのOfferをSnoopingで止める。 |
偽ARP Reply | GWのIPに攻撃者MACを対応付ける。DAIで未信頼ポートの主張をbinding等と照合。 |
信頼ポートの誤設定 | 攻撃者ポートをtrustedにすると検査を迂回。物理ポートと対向を確認する。 |
静的IP端末 | DHCP bindingがないためDAIで正規ARPを落とす可能性。承認済みの静的bindingやARP ACLを準備。 |
SW再起動 | binding消失後すぐDAIを有効にすると通信断。リース再取得とbinding復元を計画する。 |
DAIが守るのは設定されたVLANとスイッチの未信頼ポートで観測するARPです。別SWや別VLAN、IPv6 NDP、端末自体の侵害まで一つで止めるわけではありません。
6. 切り分けに必要な証拠
WS-41のリース、GW、DNSとARP表を時刻付きで取得する。
SWのbindingとtrust設定をGi1/0/4、Gi1/0/9、Gi1/0/48で比較する。
DHCPサーバのACK、スイッチのdrop、端末の実通信先を照合する。
不正なDNSが配られていれば、アクセスした名前と宛先、認証情報入力の有無を調べる。
偽OfferのdropはそのOfferによる更新を防いだ証拠ですが、別時刻や別経路からの配布は不明です。ARP表の現在値だけで過去の傍受や改ざんを断定しません。
6.1 判断を誤りやすい境界と詳しい確認
確認点 | 具体的な判断 |
|---|---|
DHCPのDORA | Discoverをブロードキャストし、ServerがOffer、ClientがRequest、ServerがACKを返す。初回はUDP 68→67、サーバ応答は67→68。リレーを使う場合は転送位置を区別する。 |
偽DHCP Offer | 端末に偽ゲートウェイやDNSを配ると、通信の盗聴・誘導・障害が起こる。早い応答だけでは正規と判定できず、server_id、割当値、接続ポートを見る。 |
Snoopingの境界 | 正規サーバまたはリレーへ向かうポートをtrusted、端末向けをuntrustedにする。trustedを広げ過ぎると偽サーバを止められず、狭過ぎると正規DHCPも落ちる。 |
bindingの内容 | ACKからIP、MAC、VLAN、ポート、リース等の対応を記録する。スイッチ再起動時の保存、リース更新、移動端末の古い記録を確認する。 |
ARPの機能 | 同一L2内でIPv4宛先または次ホップIPのMACを解決する。ARP応答を無条件に受けると、攻撃者がゲートウェイIPを自分のMACと誤認させ得る。 |
DAIの検査 | untrusted側のARPをbinding等と照合する。静的IP端末はDHCP bindingがないので、検証済みのARP ACL等を用意し、単純にtrustへ逃がさない。 |
IPv6は別 | ARPとDHCP Snooping/DAIの説明は主にIPv4。IPv6の近隣探索やRAの攻撃には別の制御が必要で、IPv4対策だけで完全とは言えない。 |
架空の端末WS-41が偽Offerを受けた場合、DNSだけが悪意あるサーバへ変わることもあります。ゲートウェイIPが正しくても安全とは言えません。端末のDHCPリース、DNS設定、Offerのserver_id、スイッチのポート、正規DHCPのログを時刻で結びます。
ARPスプーフィングでは、攻撃者が『ゲートウェイIPは自分のMAC』というARP応答を繰り返します。被害端末のARPキャッシュが攻撃者MACへ変われば通信が攻撃者を経由し得ますが、実際の盗聴や改ざんには攻撃者側の転送やTLS検証の失敗など追加条件が要ります。キャッシュ変化だけで資格情報の漏えいを断定しません。
DAI導入後に通信が止まった場合、即座に全ポートをtrustedにするのは危険です。dropされたARPのIP/MAC/VLAN/ポートを確認し、静的アドレス機器、DHCPリレー、スイッチ間接続の設計と照合します。例外は対象ポートと対応関係を限定し、期限と承認記録を残します。
7. 設定変更と例外運用
変更・例外 | 失敗しやすい点と確認 |
|---|---|
DHCPサーバ移設 | 新しい上りポートだけをtrustedへ変更し、端末ポートを誤って信頼しない。 |
静的IP追加 | DAI用binding・ARP ACLとポートを事前登録。DHCPを使わない端末を漏らさない。 |
端末移設 | MACとIPが変わらなくてもポート・VLANが変わる。旧bindingを消し、新リースで更新する。 |
DHCP Relay | L3を跨ぐ場合はrelayとOption82の扱い、信頼ポート、サーバ側の許可を確認する。 |
段階導入ではSnoopingを先に有効にしてbindingを確認し、その後DAIを有効化します。いきなりDAIを全VLANへ適用すると、既存リースのbinding欠落で正常端末が通信不能になり得ます。
8. 封じ込めと復旧条件
偽Offer・ARPの原本、SWのdrop、端末の設定・キャッシュを保全する。
攻撃者ポートを隔離し、trusted設定とVLAN適用範囲を修正する。
WS-41のリースを正規サーバから更新し、ARPキャッシュを正しいGWへ戻す。
DNS経由の誘導や中間者による認証情報・セッション漏えいを調査する。
正規Offerは通り偽Offerと偽ARPは落ちること、静的IP端末も通信できることを確認する。
IP設定が戻っただけで被害は終わりません。不正GWやDNSを使っていた時間帯の通信を調べ、必要なら資格情報を更新します。
9. 科目B(午後)での解答手順
DORAの順序、OfferとAckの違い、ARPの主張者、SWのtrust位置、DAIのbinding元を順に読みます。攻撃者がどのL2領域にいるかを先に示すと成立条件が明確になります。
DHCPのIP・GW・DNSを分ける。
ARPのIP-MAC対応とDHCP bindingを混同しない。
静的IPとSW再起動の例外を確認する。
10. 短答演習
演習1:Offerの意味
条件:偽Offerを受け取った。 質問:リース確定か。
解答:まだ。Request/Ackを確認する。 誤答の理由:OfferとAckを混同している。
演習2:ARP応答
条件:10.20.10.1が攻撃者MACと主張。 質問:成立条件は。
解答:同じL2領域で端末がその情報を採用すること。 誤答の理由:別VLANを無条件で越えると考えている。
演習3:Snooping
条件:Gi1/0/9がuntrustedでOffer送信。 質問:どうなるか。
解答:SWが破棄する設計。 誤答の理由:端末ポートをtrustedと仮定している。
演習4:DAI binding
条件:静的IP機器にbindingなし。 質問:どうなるか。
解答:正規ARPもdropされ得る。 誤答の理由:DAIが自動で全静的IPを知ると誤解している。
演習5:SW再起動
条件:binding DBが消失。 質問:先に何を確認するか。
解答:復元またはリース再取得。 誤答の理由:DAIだけ有効にすれば安全と考えている。
演習6:復旧
条件:正しいDHCP設定へ戻した。 質問:調査終了か。
解答:違う。不正設定中の通信と漏えいを調べる。 誤答の理由:設定復旧と被害調査を同一視している。
11. 一次資料
この記事についてAIに深掘り質問する
ChatGPT、Claude、Perplexityにこの記事を参照させ、要点の確認や疑問点を自由に質問できます。
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る