【実務・中級編】 ダイナミックARPインスペクション(DAI)の仕組みとARPスプーフィング防御 – インフラ・物理&L2/L3ネットワーク基礎実践ガイド

ネットワークの「信頼」をハッキングから守る:DAI(Dynamic ARP Inspection)の深淵

ネットワークエンジニアとして現場に立っていると、OSI参照モデルの第2層(データリンク層)がいかに「性善説」で成り立っているかを痛感させられます。特にARP(Address Resolution Protocol)は、その最たる例です。

「俺がそのIPアドレスを持っているぞ」というARP応答を、ネットワーク機器が何の疑いもなく信じ込んでしまう。この脆弱性を突くのが「ARPスプーフィング(中間者攻撃)」です。通信を盗聴され、改ざんされ、最悪の場合はサービスダウンに追い込まれる。これを防ぐための切り札が、今回解説する DAI(Dynamic ARP Inspection) です。

—

DAIが解決する「ARPスプーフィング」の構造

ARPには「ステートフルな検証機能」がありません。攻撃者が自分をゲートウェイだと偽るARPパケットをネットワークに流すと、クライアントのARPキャッシュは簡単に書き換えられてしまいます。

DAIは、この「嘘つき」を見抜くために、DHCPスヌーピング(DHCP Snooping) によって構築された信頼できるデータベースを活用します。

1. DHCPスヌーピング: DHCPのやり取りを監視し、どのMACアドレスにどのIPが割り当てられたかをスイッチが学習する。
2. バインディングデータベース: その対応関係を「信頼できる情報源(Binding Database)」として保持する。
3. DAIの介入: 到着したARPパケットの「送信元IP」と「送信元MAC」をデータベースと照合し、一致しないパケットを即座に破棄(Drop)する。

—

実践:DAIを導入する現場のステップ

DAIを有効にするには、下準備としてDHCPスヌーピングが動作していることが大前提です。ここではCisco Catalyst環境を想定した構成例を紹介します。

1. DHCPスヌーピングとDAIの有効化

まずは、トラスト(信頼)境界の設定が重要です。アップリンク側のポートはDHCPサーバーやコアスイッチに繋がっているため、検査せずに通す「トラスト設定」を忘れてはいけません。

# DHCPスヌーピングを有効化
ip dhcp snooping
ip dhcp snooping vlan 10,20

# DAIを有効化
ip arp inspection vlan 10,20

# アップリンクポートは信頼する(ここを忘れると通信が死にます!)
interface GigabitEthernet0/1
 ip dhcp snooping trust
 ip arp inspection trust

2. 注意すべき「レート制限」の罠

DAIはCPUベースの処理であるため、ARPパケットが大量に流れるとスイッチのCPUが悲鳴を上げます。これを防ぐためにレート制限をかけるのが運用の鉄則です。

# アクセスポート(PC接続用)でのレート制限設定
interface GigabitEthernet0/2
 # 1秒間に15パケットを超えたらポートをシャットダウンして保護する
 ip arp inspection limit rate 15

—

開発エンジニアが知っておくべき「通信の揺らぎ」

インフラ担当でないエンジニアの方々も、Web APIの通信が突然断絶する原因としてDAIを意識しておくべきです。例えば、静的IPアドレスを固定で割り当てているサーバがネットワークに追加された場合、DHCPスヌーピングのデータベースに載っていないため、DAIによってすべてのARPが破棄され、疎通不能になります。

もし「サーバ間通信が突然通らなくなった」というトラブルに遭遇したら、以下の手順でトラブルシューティングを行ってください。

Pythonを用いたARP監視(簡易チェッカー)

ネットワーク内で異常なARPが発生していないか、あるいはDAIでブロックされているパケットを特定するために、scapy を使ってパケットをキャプチャしてみるのも有効です。

from scapy.all import sniff, ARP

def arp_monitor_callback(pkt):
    if ARP in pkt and pkt[ARP].op == 2: # ARP応答のみ監視
        print(f"ARP応答受信: {pkt[ARP].psrc} is at {pkt[ARP].hwsrc}")

# 特定のインターフェースでARPを監視し、なりすましの兆候を探る
sniff(filter="arp", store=0, prn=arp_monitor_callback, iface="eth0")

—

現場の教訓:運用で詰まらないために

最後に、僕が数々の現場で学んだ「DAI運用のコツ」を共有します。

  • 静的IPの扱い: DHCPを使わないプリンタやサーバがある場合は、ip arp inspection validate src-mac 等のコマンドで詳細なチェックを調整するか、DHCPスヌーピングの静的バインディングを手動で追加してください。
  • ログを監視する: logging を有効にして、どのMACが拒否されているかをSIEM等で可視化しましょう。攻撃の予兆を早期発見できます。
  • 「とりあえず全許可」は厳禁: トラブルシューティング時に焦って no ip arp inspection vlan を打つのは最終手段です。まずは特定のインターフェースで trust を外して詳細を切り分けましょう。

ネットワークは「信頼」を前提に動いていますが、その信頼を裏付けるための「仕組み」を設計するのは我々エンジニアの役目です。DAIを正しく設定し、堅牢なレイヤー2環境を構築してください。

それでは、また次回の深淵でお会いしましょう。健闘を祈ります。

コメント

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