ダイナミックARPインスペクションとは
ダイナミック ARP インスペクションは、ネットワーク内の ARP パケットを検証するセキュリティ機能です。DHCPスヌーピングバインディングデータベースを参照して、ARPリクエストやARPリプライが正当なものであるかを検査し、不正なARPパケットを検出してブロックします。
ダイナミックARPインスペクション(DAI)の役割
DAIは、このようなARPスプーフィング攻撃を防ぐために使用されます。具体的には、以下のような仕組みで動作します。
- DHCPスヌーピングバインディングデータベースを使用:
- DAIは、事前に作成されたDHCPスヌーピングバインディングデータベースを参照します。このデータベースには、各デバイスのIPアドレスとMACアドレスのペアが記録されており、DHCPで動的に割り当てられた情報が保存されています。
- ARPパケットの検査:
- DAIは、ネットワーク内を流れるすべてのARPリクエストとARPリプライを検査します。検査では、送信元のIPアドレスとMACアドレスのペアが、DHCPスヌーピングバインディングデータベースに登録されている情報と一致するか確認します。
- 不正なARPパケットのブロック:
- 検査結果が一致しない場合、つまり、バインディングデータベースに登録されていないペア(不正なIP-MACアドレスペア)でARPリクエストやリプライが送信された場合、そのパケットをブロックします。これにより、不正なデバイスや攻撃者が偽のARP情報を送り込むことを防ぎます。
- スタティックエントリの検証:
- 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 を指定します。 static ACL と一致しないパケットがドロップされます。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 pps | 1 秒あたりに処理される受信パケット数の上限を指定します。範囲は 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-mac | ARPパケットに含まれる送信元MACアドレスを検証し、パケットのデータリンク層の送信元MACアドレスと、ARPヘッダー内にある送信元MACアドレスが一致するか確認します。 |
| dst-mac | ARPパケットに含まれる宛先MACアドレスを検証します。データリンク層の宛先MACアドレスと、ARPヘッダー内の宛先MACアドレスが一致するか確認します。 |
| ip | ARPパケットの送信元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 matchlog | ACLによる検査でマッチしたパケットのログを記録します。 |
| acl-match none | ACLによる検査でマッチしたパケットのログを記録しません。 |
| dhcp-bindings all | すべてのDHCPバインディングの一致した結果をログに記録します。 |
| dhcp-bindings none | DHCPバインディングに関連するログを記録しません。 |
| dhcp-bindings permit | DHCPバインディングの結果として許可されたパケットのみログに記録します。 |