こんにちは。ネットワークの深淵を覗くインフラエンジニアの皆さん、日々の運用や設計でお疲れ様です。
LANスイッチのレイヤ2(L2)の世界は平和に見えますよね。VLANを切り、STPでループを防ぎ、トランクポートでパケットを流せば通信は成立する。しかし、その「平和」は非常に脆い基盤の上に成り立っています。そう、すべての元凶はARP(Address Resolution Protocol)の「性善説」にあります。
ARPには、認証という概念がありません。「私はこのIPアドレスを持っている、MACアドレスはこれだ」と誰かが叫べば、周囲のホストはそれを疑いもせずARPキャッシュを書き換えてしまう。この脆弱性を突いたARPスプーフィング(ARPポイズニング)が行われると、通信は一瞬で攻撃者の端末を通過するようになり、SSL/TLSを強制しないかぎり、パスワードやセッションIDは丸見えのまま中間者攻撃(MitM)の餌食になります。
今回は、この古典的かつ極めて厄介なARPスプーフィングを根絶するための強力なソリューション、DAI(Dynamic ARP Inspection)と、その相棒であるDHCPスヌーピングの連携メカニズムについて、実務の現場で即座に使える知識として徹底解説します。
—
1. なぜARPスプーフィングは防ぎにくいのか?
ARPプロトコルには、状態を保持するステートフルな仕組みがありません。自分がARPリクエストを出していなくても、誰かからGARP(Gratuitous ARP)や一方的なARPリプライが飛んできたら、OSのARPテーブルは有無を言わせず上書きされます。
攻撃者はこれを利用し、「デフォルトゲートウェイのIPは、俺のMACアドレスだ」と偽りの情報をネットワーク内にブロードキャスト/ユニキャストでばら撒きます。結果、クライアントからの外部向けトラフィックはすべて攻撃者経由となり、パケットを転送しつつ中身を覗き見(あるいは改ざん)することが可能になります。
この脅威を防ぐために、L2スイッチ側で「流れてくるARPパケットが本当に正しいものか」をインスペクション(検査)する仕組みが必要になります。それが DAI です。
—
2. DAIの核心:DHCPスヌーピングDBとの連携
DAI単体では、どのIPとMACの組み合わせが正当なのかを知りません。そこで不可欠となるのが、DHCPスヌーピング(DHCP Snooping)です。
DHCPスヌーピングは、スイッチのポートを「信頼できるポート(Trusted)」と「信頼できないポート(Untrusted)」に分類し、信頼できないポートを流れるDHCPトランザクション(DORA)を監視して、どのクライアント(MAC)がどのIPリースを受けたかをデータベース化します。これをDHCPスヌーピング・バイディング・データベースと呼びます。
DAIの動作フロー
1. ARPパケットの傍受: クライアントが発信した、あるいは受信したすべてのARPパケット(リクエスト/リプライ)を、DAI有効化されたVLAN上でスイッチのハードウェア(ASIC)がインターセプトします。
2. データベースとの照合: パケットに含まれる「送信元IPアドレス」と「送信元MACアドレス」のペアが、DHCPスヌーピングのバインディングデータベースに存在するかをリアルタイムで検証します。
3. 判定とアクション:
- 一致する場合: パケットを正常に転送します。
- 一致しない(あるいは不正なフォーマットの)場合: パケットを即座に破棄(Drop)し、ログを出力、必要に応じてポートをエラーディスブレーク(Err-disable)させます。
この仕組みにより、静的IPアドレスを手動設定した不正端末や、ARPスプーフィングツールを走らせた攻撃者のパケットをピンポイントで排除できます。
—
3. 実務におけるCisco Catalystでの設定例
それでは、実際のエンタープライズネットワーク環境(Cisco IOS)を想定した設定手順を見ていきましょう。現場でありがちな「設定したが通信できなくなった」というトラブルを防ぐためのポイントも押さえます。
ステップ1: DHCPスヌーピングの有効化と信頼ポートの定義
まず、大前提となるDHCPスヌーピングを有効化します。ここを間違えると、正当なクライアントのIPすらDBに登録されず、DAIで全滅します。
! DHCPスヌーピングをVLAN 10および20で全体有効化
ip dhcp snooping
ip dhcp snooping vlan 10,20
! アップリンク(ルータや上位スイッチにつながるポート)は信頼ポートに設定
interface GigabitEthernet0/1
description Connected-to-Core-Router
ip dhcp snooping trust
! サーバ接続ポートなども必要に応じて信頼ポートにする
interface GigabitEthernet0/2
description DHCP-Server-Port
ip dhcp snooping trust
ステップ2: DAIの有効化と信頼ポートの定義
次に、DAIを有効化します。こちらも上位へのアップリンクはARPを信頼する必要があるため、必ず trust を設定します。これを忘れると、デフォルトゲートウェイのARPすらドロップされ、通信が完全に死にます。
! VLAN 10と20でDAIを有効化
ip arp inspection vlan 10,20
! アップリンクポートはARPパケットの検査を免除(信頼)する
interface GigabitEthernet0/1
ip arp inspection trust
! ※もしエッジポートに静的IPを使うサーバー等がある場合は、
! 後述するARP ACL(Acl)で救済するか、そのポートだけtrustにする
ステップ3: (応用)静的IP環境のためのARP ACLの適用
DHCPを使わないプリンターやネットワーク機器、サーバーなどがVLAN内に存在する場合、DHCPスヌーピングDBに載らないため、DAIによってARPがドロップされてしまいます。そのため、静的エントリを許可するARP ACLを作成します。
! ARP ACLの定義(プリンターのIPとMACを明示的に許可)
arp access-list STATIC-SERVERS-PERMIT
permit ip host 192.168.10.50 mac host 0011.2233.4455
! DAIにこのACLを適用(デフォルトのチェックに加えてこのリストも参照させる)
ip arp inspection filter STATIC-SERVERS-PERMIT vlan 10
—
4. 現場でハマる!デバッグとトラブルシューティングの極意
DAIやDHCPスヌーピングを導入した直後、「社内ニートから『ネットに繋がらなくなった』とクレームが来た」というのはインフラエンジニアあるあるです。慌てず騒がず、以下のコマンドで状況を正確に把握しましょう。
1. バインディングデータベースの確認
そもそもクライアントのIPとMACが正しく学習されているかを確認します。
Switch# show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Interface
--------------------------------------------------------------------------------
00:1A:2B:3C:4D:5E 192.168.10.100 86392 dhcp-snooping 10 GigabitEthernet0/10
Total number of bindings: 1
ここに該当端末のIP・MACがなければ、DHCPトラフィックがスヌーピングできていないか、静的IPです。
DAIによる破棄状況の確認
パケットがドロップされている場合、そのカウンターが増加します。
Switch# show ip arp inspection statistics vlan 10
VLAN Forwarded Dropped DHCP Drops ACL Drops Static Drops Forward Rate(pps)
---- --------- ------- ---------- --------- -------------- -----------------
10 45212 124 124 0 0 5
VLAN Incomplete Drops Invalid IP Drops DHCP Drops
---- ---------------- ---------------- ----------
10 0 0 124
DHCP Drops が増えている場合、DHCPスヌーピングDBとの不一致によるドロップが発生しています。どのポートでドロップが起きているかは show ip arp inspection interfaces で確認できます。
—
5. まとめ
ARPスプーフィング対策としてのDAIとDHCPスヌーピングの連携は、L2セキュリティの基本にして最も効果的なアプローチの一つです。
- DHCPスヌーピングで正当なIP-MACバインディングを常時収集する。
- DAIですべてのARPパケットをそのDBと突き合わせ、不正なものを遮断する。
- アップリンクやサーバーポートなどの信頼境界(Trust)を正確に設計する。
この3つを頭に叩き込んでおけば、レイヤ2のセキュリティインシデントの大部分を未然に防ぐことができます。ネットワークの足元を固め、安全で堅牢なインフラを構築していきましょう。
それでは、次のパケットの旅でお会いしましょう!
コメント