ダイナミックARPについて

ダイナミックARPインスペクションとは

ダイナミック ARP インスペクションは、ネットワーク内の ARP パケットを検証するセキュリティ機能です。DHCPスヌーピングバインディングデータベースを参照して、ARPリクエストやARPリプライが正当なものであるかを検査し、不正なARPパケットを検出してブロックします。

ダイナミックARPインスペクション(DAI)の役割

DAIは、このようなARPスプーフィング攻撃を防ぐために使用されます。具体的には、以下のような仕組みで動作します。

  1. DHCPスヌーピングバインディングデータベースを使用:
    • DAIは、事前に作成されたDHCPスヌーピングバインディングデータベースを参照します。このデータベースには、各デバイスのIPアドレスとMACアドレスのペアが記録されており、DHCPで動的に割り当てられた情報が保存されています。
  2. ARPパケットの検査:
    • DAIは、ネットワーク内を流れるすべてのARPリクエストとARPリプライを検査します。検査では、送信元のIPアドレスとMACアドレスのペアが、DHCPスヌーピングバインディングデータベースに登録されている情報と一致するか確認します。
  3. 不正なARPパケットのブロック:
    • 検査結果が一致しない場合、つまり、バインディングデータベースに登録されていないペア(不正なIP-MACアドレスペア)でARPリクエストやリプライが送信された場合、そのパケットをブロックします。これにより、不正なデバイスや攻撃者が偽のARP情報を送り込むことを防ぎます。
  4. スタティックエントリの検証:
    • DAIは、静的に設定されたARPエントリに対しても、バインディングデータベースの代わりに手動で設定されたエントリと照合することができます。これにより、静的IPアドレスを持つデバイスも保護されます。

ダイナミックARPインスペクションの設定

DHCP環境でのダイナミックARPインスペクションの設定

基本構文

VLAN ごとに動的 ARP インスペクションを有効にします。
Switch(config)#ip arp inspection vlan vlan-range

スマートログに記録されるように指定します。デフォルトでは、ドロップされたパケットはすべてログに記録されます。
Switch(config)#ip arp inspection smartlog

スイッチ間の接続を信頼できるものとして構成します。デフォルトでは、すべてのインターフェイスは信頼されません。スイッチは、信頼されたインターフェイス上の他のスイッチから受信した ARP パケットをチェックしません。
SW1(config)#interface interface-id
SW1(config-if-range)#ip arp inspection trust

非 DHCP 環境用の ARP ACL の設定

基本構文

スイッチ がダイナミック ARP インスペクションまたは DHCP スヌーピングをサポートしていない場合にARP ACLを設定します。許可したい対象のIPアドレスとMACアドレスを指定します。

Switch(config)#arp access-list acl-name
Switch(config-arp-nacl)#permit ip host sender-ip mac host sender-mac [ log ]

ARP ACL を VLAN に適用します。
Switch(config)#ip arp inspection filter arp-acl-name vlan vlan-range [ static ]

コマンド内容
arp-acl-name作成した ACL の名前を指定します。
vlan vlan-rangeスイッチとホストが存在する VLAN を指定します。
staticACL と一致しないパケットがドロップされます。DHCP バインディングは使用されません。

インターフェイスを信頼できるものとして設定します。デフォルトでは、すべてのインターフェイスは信頼されません。信頼できないインターフェイスの場合、スイッチはすべての ARP 要求と応答を傍受します。
Switch(config)#interface interface-id
Switch(config-if)#ip arp inspection trust

受信 ARP パケットのレートを制限する

DoS攻撃を防ぐために受信ARPパケット数のレート制限をすることができます。着信 ARP パケットのレートが設定された制限を超えると、スイッチはポートを errdisable ステートにします。

インターフェイス上で受信する ARP 要求と応答の速度を制限します。
Switch(config)#interface interface-id
Switch(config-if)#ip arp inspection limit rate pps [ burst interval seconds ] | none }

コマンド内容
rate pps1 秒あたりに処理される受信パケット数の上限を指定します。範囲は 0 ~ 2048 pps です。
burst interval secondsインターフェイスが高レートの ARP パケットを監視する連続間隔を秒単位で指定します。範囲は 1 ~ 15 です。
none処理できる受信 ARP パケットのレートの上限を指定しません。

**ダイナミックARPインスペクション(DAI)**に関連する問題が発生したときに、スイッチがその問題を検出し、Errdisable状態にします。
Switch(config)#errdisable detect cause arp-inspection

Errdisable状態になったインターフェースが自動的に復旧するように設定できます。
Switch(config)#errdisable recovery cause arp-inspection

**Errdisable状態のインターフェースを自動回復させる際の間隔(秒数)**を設定します。
Switch(config)#errdisable recovery interval interval

検証チェックの実行

ARPパケットの検証をします。。このコマンドを使用して、スイッチがARPパケット内の送信元MACアドレス、宛先MACアドレス、IPアドレスのフィールドを検証する際の条件を指定できます。
Switch(config)#ip arp inspection validate {[ src-mac ] [ dst-mac ] [ ip ]}

コマンド内容
src-macARPパケットに含まれる送信元MACアドレスを検証し、パケットのデータリンク層の送信元MACアドレスと、ARPヘッダー内にある送信元MACアドレスが一致するか確認します。
dst-macARPパケットに含まれる宛先MACアドレスを検証します。データリンク層の宛先MACアドレスと、ARPヘッダー内の宛先MACアドレスが一致するか確認します。
ipARPパケットの送信元IPアドレスを検証します。ARPパケットの送信元IPアドレスと、DHCPスヌーピングバインディングデータベースの情報を照合し、一致するか確認します。

ログバッファの構成

ダイナミックARPインスペクション(DAI)で検出された不正なARPパケットのログの保存と管理に関する設定をします。

ダイナミック ARP インスペクション ロギング バッファを設定します。
Switch(config)#ip arp inspection log-buffer { entries number | logs number interval seconds }

コマンド内容
entries numberバッファに記録するエントリの数を指定します。範囲は 0 ~ 1024 です。
logs number interval seconds指定した間隔でシステム メッセージを生成するエントリの数を指定します。


特定のVLANにおけるARPインスペクションのログ設定を行います。
Switch(config)#ip arp inspection vlan vlan-range logging { acl-match { matchlog | none } | dhcp-bindings { all | none | permit }}seconds }

コマンド内容
acl-match matchlogACLによる検査でマッチしたパケットのログを記録します。
acl-match noneACLによる検査でマッチしたパケットのログを記録しません。
dhcp-bindings allすべてのDHCPバインディングの一致した結果をログに記録します。
dhcp-bindings noneDHCPバインディングに関連するログを記録しません。
dhcp-bindings permitDHCPバインディングの結果として許可されたパケットのみログに記録します。

参考文献

Chapter: Configuring Dynamic ARP Inspection