【実務・中級編】 DAI(Dynamic ARP Inspection)によるARPスプーフィング防衛策 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

こんにちは、インフラアーキテクトの私です。

Web APIの設計やモダンなクラウドインフラの構築において、私たちは日々「暗号化(TLS)」や「認証・認可(OAuth / JWT)」といった上位レイヤーのセキュリティに目を奪われがちです。しかし、どれほど堅牢なアプリケーション層の設計をしても、その土台であるレイヤー2(データリンク層)が足元から崩されていれば、セキュリティは砂上の楼閣と化します。

今日のテーマは、ローカルセグメントの牙城を揺るがす「ARPスプーフィング(ARPキャッシュポイズニング)」に対する特効薬、DAI(Dynamic ARP Inspection)です。

教科書的な定義をなぞるだけならRFC 826(ARPの仕様)を見れば終わりですが、現場のエンジニアが知りたいのは「なぜ隣の端末に通信が全部吸い取られるのか」「どうやってスイッチのハードウェアレベルでそれを秒殺するのか」というリアルな挙動と設定の勘所です。

長年、修羅場をくぐってきたネットワークエンジニアの視点から、DAIの深淵へとあなたを案内しましょう。

—

なぜARPは「性善説」で作られているのか

イーサネットの世界では、端末同士が通信する際にMACアドレスが必要です。しかし、私たちが知っているのはレイヤー3のIPアドレス。ここで登場するのがARP(Address Resolution Protocol)です。

「IPアドレス 192.168.1.10 を持っている人は、あなたのMACアドレスを教えてください」

このARPリクエストに対し、該当するホストが「私です、MACアドレスは 00:11:22:33:44:55 です」とARPレスポンスを返す。これがARPの基本動作です。お気づきでしょうか? ARPには「認証」の概念が一切ありません。 誰かが勝手に「私が 192.168.1.1(デフォルトゲートウェイ)だ」と嘘のARPレスポンスをブロードキャスト(あるいはユニキャスト)しても、受信側の端末はそれを疑うことなく自分のARPキャッシュを書き換えてしまいます。

これがARPスプーフィングです。これを利用した中間者攻撃(MitM: Man-in-the-Middle Attack)が成功すると、クライアントとルーター間のすべてのトラフィックが攻撃者のマシンを通過し、平文の通信はもちろん、SSL/TLSのダウングレード攻撃やセッションハイジャックの温床になります。

この「性善説に基づくプロトコル」の暴走を、スイッチのASIC(専用ハードウェア)レベルで検知し、問答無用でパケットをドロップするのが DAI(Dynamic ARP Inspection) です。

—

DAIが機能するための前提条件:DHCPスヌーピングとの共生

DAI単体では、実はあまり役に立ちません。DAIが「このARPレスポンスは正当なものか?」を判断するために参照する「正解のデータベース」が必要だからです。

そのデータベースを提供するのが DHCPスヌーピング(DHCP Snooping) です。

通信フロー(シーケンス)の裏側

1. 信頼の起点(Trustポートの設定)
スイッチのアップリンク(ルーターやDHCPサーバーに繋がるポート)を ip dhcp snooping trust および ip arp inspection trust に設定します。ここを通過するパケットは無条件で信用されます。
2. クライアントのIP取得
一般のエンドユーザーが接続するポート(Untrustedポート)で、クライアントがDHCP DORAプロセスを行います。
3. バインディングデータベースの生成
DHCPスヌーピングは、DORAの最終段階(DHCPACK)を傍受し、「どのMACアドレスに、どのIPアドレスが、どのポートで割り当てられたか」を DHCPスヌーピングバインディングデータベース に記録します。
4. DAIのリアルタイム検証
クライアントからARPパケットが送信されると、DAI有効化されたスイッチは、そのパケットの内容(MACアドレスとIPアドレスのペア)をバインディングデータベースと突き合わせます。

  • 一致する場合: パケットを正常に転送。
  • 一致しない場合(偽装と判定): パケットを即座に破棄(ログ出力も可能)。

この連携プレーにより、攻撃者がいくら嘘のARPレスポンスを流し込んでも、スイッチが「お前、そのIPをDHCPで取得してないだろ!」とパケットをゴミ箱行きにしてくれます。

—

実機設定サンプル(Cisco Catalyst / IOS環境)

それでは、実務でそのまま使えるCisco IOSスイッチの設定例を見ていきましょう。インフラエンジニアとしての勘所(なぜこの設定が必要なのかのコメント)を添えています。

! ==========================================
! 1. DHCPスヌーピングの有効化とVLANの指定
! ==========================================
ip dhcp snooping
ip dhcp snooping vlan 10,20

! オプション82(Relay Agent Information)の検証を無効化する場合
! (スイッチ自身がDHCPリレーをしていない、かつ端末が変なパケットを出す場合の対策)
no ip dhcp snooping information option

! ==========================================
! 2. アップリンク(信頼できるポート)の設定
! ==========================================
interface GigabitEthernet0/1
 description === Uplink to Default Gateway / Core Switch ===
 switchport mode trunk
 ip dhcp snooping trust      ! このポートからのDHCPメッセージは信用する
 ip arp inspection trust     ! このポートからのARPパケットは検証をスキップする

! ==========================================
! 3. エンドユーザー向けポート(信頼できないポート)の設定
! ==========================================
interface Range GigabitEthernet0/2 - 24
 description === Access Ports for Clients ===
 switchport mode access
 switchport access vlan 10
 ip dhcp snooping limit rate 15  ! DHCPメッセージのフラッド攻撃を防止(秒間15パケットまで)
 ip arp inspection limit rate 50 ! ARPパケットのレートリミット(スキャンツール対策)

! ==========================================
! 4. DAI(Dynamic ARP Inspection)の有効化
! ==========================================
ip arp inspection vlan 10,20

! 必要に応じて、ARPの検証項目を追加する(MACアドレスとIPアドレスの両方をチェック)
ip arp inspection validate src-mac dst-mac ip

パラメーター解説と現場の知見

  • ip arp inspection limit rate 50

攻撃者が大量の偽装ARPパケットを送りつけてスイッチのCPUをハングアップさせる(DoS攻撃)のを防ぐため、ポートごとの処理レートに上限を設けます。もし正当な端末がこの制限を超えるとパケットがドロップされるため、一般的なオフィス環境のトラフィック量を算出してチューニングする必要があります。

  • ip arp inspection validate src-mac dst-mac ip

ARPパケット内部のIP/MACと、イーサネットヘッダーのMACアドレスの整合性を多角的にチェックします。ARPスプーフィングツールの中には、イーサネットヘッダーとARPペイロードのMACアドレスを巧妙に偽装するものがあるため、この厳格なバリデーション(検証)を有効化しておくのがプロの現場の作法です。

—

トラブルシューティング:DAI導入時によくあるハマりどころ

DAIを有効化した瞬間、社内ネットワークのあちこちで「繋がらなくなった!」という悲鳴があがるのは、インフラエンジニアのあるあるです。現場で遭遇する代表的なトラブルと、そのデバッグ手法を共有します。

1. 静的IP(固定IP)を使っているサーバーやプリンターが通信できない

DHCPスヌーピングは文字通り「DHCPのやり取り」をベースにデータベースを作ります。そのため、IPアドレスを固定(Static)している機器はデータベースに載りません。結果として、DAIによってすべてのARPレスポンスが「不正」とみなされ、通信不能になります。

対策:
静的IPを持つ機器のために、ARP ACL(静的バインディング)を手動で定義し、DAIのホワイトリストに登録します。

! IPとMACの静的エントریを作成
arp access-list STATIC-SERVERS-ACL
 permit ip host 192.168.1.100 mac host 001a.2b3c.4d5e

! DAIに適用
ip arp inspection filter STATIC-SERVERS-ACL vlan 10

2. ログの確認とデバッグコマンド

パケットがなぜドロップされているのかを特定するには、以下のIOSコマンドを叩きます。シリアルコンソールやSyslogに流れるエラーを注視してください。

! DAIによって破棄されたパケットの統計情報を確認する
Router# show ip arp inspection statistics vlan 10

! ログバッファでドロップ理由を確認
Router# show logging | include DAI

出力例の中に DHCP snooping entry not found とあれば、DHCPスヌーピングのデータベースに該当のエントリが存在しない(=固定IP端末、またはDHCP取得前のパケット)ことが一発で判明します。

—

まとめ:モダンインフラにおけるレイヤー2セキュリティの重要性

クラウドネイティブな時代であっても、足元の物理スイッチや仮想スイッチ(L2セグメント)が存在する限り、ARPスプーフィングのような古典的かつ致命的な攻撃の脅威が消えることはありません。

DAIとDHCPスヌーピングを適切に組み合わせることで、L2レイヤーの「ゼロトラスト」を強固に構築することができます。APIのセキュリティ設計に情熱を注ぐエンジニアの皆様こそ、ぜひこのレイヤー2の堅牢化にも目を向け、セキュアなインフラストラクチャをデザインしきってください。

それでは、次のネットワークの深淵でお会いしましょう。

コメント

タイトルとURLをコピーしました