Configuration de Dynamic ARP Inspection

1. DAI Configuration

Dans ce cours, nous explorerons la configuration de Dynamic ARP Inspection à travers un scénario simple et réaliste.

Nous travaillons sur le commutateur SW1 avec le réseau suivant :

Nous travaillons sur le commutateur SW1 avec le réseau suivant :

  • Serveur DHCP connecté à G0/1
  • Routeur (R1) connecté à G0/0
  • PC1 connecté à G0/2
  • PC2 connecté à G0/3

Tous les appareils sont sur le VLAN 1 dans le sous-réseau 192.168.1.0/24.

Étape 1 : Configurer DHCP sur le routeur

Avant toute chose, le routeur doit attribuer des adresses IP.

DCHP# show run | s dhcp
ip dhcp excluded-address 192.168.1.1 192.168.1.10
ip dhcp pool VLAN1
 network 192.168.1.0 255.255.255.0
 default-router 192.168.1.1 
 dns-server 8.8.8.8 

Cette configuration :

  • Réserve les adresses .1 à .10 pour l’affectation statique
  • Attribue des adresses IP dynamiques à partir de .11
  • Définit R1 comme passerelle par défaut
  • Utilise Google DNS

Étape 2 : Activer la DHCP Snooping

DAI a besoin de la DHCP Snooping Binding Table, nous devons donc d’abord activer DHCP Snooping.

Nous activons DHCP Snooping globalement et sur le VLAN 1 (le VLAN par défaut) :

SW1(config)# ip dhcp snooping 
SW1(config)# ip dhcp snooping vlan 1
SW1(config)# no ip dhcp snooping information option 

L’option d’information est utilisée lorsqu’un agent relais DHCP est impliqué, ce qui n’est pas le cas ici, nous la désactivons donc.

Ensuite, nous faisons confiance à l’interface connectée au serveur DHCP :

SW1(config)# int g0/1
SW1(config-if)# ip dhcp snooping trust 

Étape 3 : Vérifier la DHCP Snooping Binding Table

Utilisez cette commande pour confirmer que les mappages IP/MAC ont été enregistrés :

SW1#  show ip dhcp snooping binding  
MacAddress          IpAddress        Lease(sec)  Type           VLAN  Interface
------------------  ---------------  ----------  -------------  ----  ------------
00:50:79:66:68:8C   192.168.1.11     86304       dhcp-snooping   1     G0/2
00:50:79:66:68:8F   192.168.1.12     86366       dhcp-snooping   1     G0/3
Total number of bindings: 2

PC1 et PC2 sont désormais reconnus comme clients DHCP légitimes. Leurs paires IP/MAC seront utilisées pour la validation ARP.

Étape 4 : Activer DAI sur le VLAN 1

Le DAI ne nécessite qu’une seule commande par VLAN pour être activé.

SW1(config)# ip arp inspection vlan 1 

DAI surveille désormais le trafic ARP sur le VLAN 1. Si vous avez plusieurs VLAN, répétez cette commande pour chacun d’eux.

Étape 5 : Définir les interfaces de confiance

Par défaut, tous les ports du commutateur ne sont pas fiables.

Nous devons approuver manuellement les ports connectés aux périphériques d’infrastructure :

Diagramme illustrant la configuration des ports de confiance pour l'inspection ARP dynamique, avec G0/0 et G0/1 définis comme des liaisons montantes de confiance et G0/2 et G0/3 comme des ports non fiables connectés à des périphériques finaux.
SW1(config)# int g0/0 
SW1(config-if)# ip arp inspection trust  

SW1(config)# int g0/1 
SW1(config-if)# ip arp inspection trust  

Désormais, les paquets ARP sur ces interfaces ne seront pas inspectés.

Étape 6 : Vérifier le statut DAI

Nous pouvons vérifier que le DAI fonctionne correctement à l’aide de la commande suivante :

SW1#  show ip arp inspection interfaces  

 Interface        Trust State     Rate (pps)    Burst Interval
 ---------------  -----------     ----------    --------------
 Gi0/0            Trusted               None               N/A
 Gi0/1            Trusted               None               N/A
 Gi0/2            Untrusted               15                 1
 Gi0/3            Untrusted               15                 1
 Gi1/0            Untrusted               15                 1
 Gi1/1            Untrusted               15                 1
 Gi1/2            Untrusted               15                 1
 Gi1/3            Untrusted               15                 1

Cela confirme :

  • G0/0 et G0/1 sont approuvés (routeur et serveur DHCP)
  • G0/2 et G0/3 ne sont pas fiables (ports destinés aux utilisateurs)

Simulation d’une attaque par usurpation d’adresse ARP

Testons maintenant l’efficacité du DAI en simulant une attaque.

Dans ce scénario, PC2 (l’attaquant) tente d’usurper l’identité de la passerelle par défaut 192.168.1.1. Pour ce faire, il envoie un message ARP gratuit (GARP), prétendant à tort que sa propre adresse MAC est associée à l’adresse IP du routeur.

L'attaquant sur PC2 envoie un message ARP gratuit falsifié à partir du port non approuvé G0/3, tentant d'usurper la passerelle par défaut dans un scénario de configuration d'inspection ARP dynamique.

Un ARP gratuit est une réponse ARP non sollicitée utilisée pour annoncer le mappage IP-MAC d’un appareil. Bien que légitime dans certains contextes (comme pour les changements d’adresse IP), il peut être exploité à des fins d’usurpation d’identité.

Sur un port non fiable comme G0/3, ce GARP est intercepté par le commutateur et analysé.

Capture Wireshark

Capture Wireshark montrant un paquet ARP gratuit de l'attaquant usurpant le nom de 192.168.1.1, qui est bloqué par l'inspection ARP dynamique en raison d'une liaison DHCP snooping manquante.

Une capture de paquet révèle que le message ARP envoyé depuis PC2 affirme :

  • MAC Source : adresse MAC de l’attaquant
  • IP Source : 192.168.1.1
  • MAC cible : Broadcast (ff:ff:ff:ff:ff:ff)
  • IP cible : 192.168.1.1

Il s’agit d’une tentative claire d’empoisonner les tables ARP d’autres hôtes.

Le DAI bloque l’attaque

Étant donné que la DHCP Snooping Binding Table ne contient aucune entrée mappant 192.168.1.1 à l’adresse MAC de l’attaquant, le commutateur considère ce paquet ARP comme non valide.

Voici ce qui apparaît dans les journaux :

*Jan 31 16:18:51.531: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi0/3, vlan 1.([0050.7966.688f/192.168.1.1/ffff.ffff.ffff/192.168.1.1/
16:18:50 UTC Fri Jan 31 2025])

*Jan 31 16:18:52.531: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi0/3, vlan 1.([0050.7966.688f/192.168.1.1/ffff.ffff.ffff/192.168.1.1/
16:18:51 UTC Fri Jan 31 2025])

*Jan 31 16:18:53.590: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi0/3, vlan 1.([0050.7966.688f/192.168.1.1/ffff.ffff.ffff/192.168.1.1/
16:18:52 UTC Fri Jan 31 2025])

Ces messages confirment que la fonctionnalité d’inspection ARP dynamique surveille et rejette activement les paquets ARP non valides.

Grâce à DAI, l’attaquant est empêché d’empoisonner la table ARP et la tentative d’usurpation échoue silencieusement, sans impacter les utilisateurs du réseau, ce qui évite l’attaque de l’homme du milieu.

2. DAI Rate Limiting

L’inspection ARP dynamique (DAI) est efficace pour bloquer l’usurpation d’identité ARP, mais que se passe-t-il si un attaquant inonde le commutateur avec un nombre élevé de paquets ARP ?

C’est là qu’intervient la limitation du débit.

Pourquoi la limitation du débit est importante

Les attaquants pourraient tenter de surcharger le commutateur en envoyant trop de paquets ARP, consommant ainsi des ressources CPU et déstabilisant potentiellement l’appareil.

Pour se protéger contre cela, les commutateurs Cisco appliquent des limites de débit aux paquets ARP sur les interfaces non fiables.

Vous pouvez vérifier les limites par défaut en utilisant :

SW1# show ip arp inspection interfaces 
 Interface        Trust State     Rate (pps)    Burst Interval
 ---------------  -----------     ----------    --------------
 Gi0/0            Trusted               None               N/A
 Gi0/1            Trusted               None               N/A
 Gi0/2            Untrusted               15                1
 Gi0/3            Untrusted               15                 1
 Gi1/0            Untrusted               15                 1
 Gi1/1            Untrusted               15                 1
 Gi1/2            Untrusted               15                 1
 Gi1/3            Untrusted               15                 1

Par défaut:

  • 15 paquets ARP par seconde sont autorisés sur les ports non approuvés
  • Le commutateur abandonne les paquets ARP dépassant ce débit
  • Si le seuil est dépassé, le port est désactivé (état err-disabled)

Ajustement du Rate Limit

Vous pouvez augmenter la limite sur une interface spécifique en utilisant :

SW1(config)# int g0/3
SW1(config-if)# ip arp inspection limit rate 30 burst interval 3

Cela signifie:

  • Si ce seuil est dépassé, le port s’arrête toujours pour des raisons de protection
  • Le commutateur autorise désormais jusqu’à 30 paquets ARP dans une fenêtre de 3 secondes

Pour vérifier le changement :

SW1# show ip arp inspection interfaces

 Interface        Trust State     Rate (pps)    Burst Interval
 ---------------  -----------     ----------    --------------
 Gi0/0            Trusted               None               N/A
 Gi0/1            Trusted               None               N/A
 Gi0/2            Untrusted               15                 1
 Gi0/3            Untrusted               30                 3
 Gi1/0            Untrusted               15                 1
 Gi1/1            Untrusted               15                 1
 Gi1/2            Untrusted               15                 1
 Gi1/3            Untrusted               15                 1

Désormais, g0/3 bénéficie d’un seuil plus élevé avant d’être désactivé.

Que se passe-t-il si la limite est dépassée ?

Lorsque la limite est dépassée, le commutateur arrête l’interface pour arrêter le flood :

%SW_DAI-4-ERRDISABLE: arp-inspection rate-limit on Gi0/3, putting interface in err-disabled state

A ce stade :

  • Le port est désactivé
  • Aucun trafic ne peut le traverser
  • Une récupération manuelle ou automatique est nécessaire

Ce mécanisme garantit que les utilisateurs normaux restent protégés même pendant une attaque, tout en donnant à l’administrateur le temps d’enquêter.

3. Réactivation d’une interface

DAI est efficace pour fermer les interfaces lorsqu’une attaque ARP est détectée, mais une fois la menace disparue, l’interface doit être restaurée pour reprendre son fonctionnement normal.

Voyons comment sortir manuellement et automatiquement une interface de l’état err-disabled.

Récupération manuelle

La méthode la plus rapide pour restaurer un port qui a été désactivé par DAI est de réinitialiser manuellement l’interface en utilisant :

SW1(config)# int g0/3
SW1(config-if)# shutdown
SW1(config-if)# no shutdown

Cette séquence :

  • Ferme le port
  • Le remet immédiatement en ligne
  • Efface la condition err-disabled

Cependant, cela nécessite une intervention manuelle à chaque fois qu’un port est désactivé.

Récupération automatique

Pour une meilleure automatisation, les commutateurs Cisco vous permettent de configurer la récupération automatique à partir de causes de désactivation d’erreur spécifiques.

Pour afficher les causes disponibles, utilisez :

SW1(config)# errdisable recovery cause ?
  all                   Enable timer to recover from all error causes
  arp-inspection        Enable timer to recover from arp inspection error
                        disable state
  bpduguard             Enable timer to recover from BPDU Guard error
  channel-misconfig     Enable timer to recover from channel misconfig error
                        (STP)
  dhcp-rate-limit       Enable timer to recover from dhcp-rate-limit error
  dtp-flap              Enable timer to recover from dtp-flap error
 //output ommited for clarity

Pour activer la récupération automatique spécifiquement pour DAI, nous sélectionnons arp-inspection :

SW1(config)# errdisable recovery cause arp-inspection

Cela indique au commutateur de restaurer automatiquement les ports désactivés en raison de DAI après un délai fixe.

Vérification de la récupération automatique

Pour vérifier la configuration et l’état actuel :

SW1# show errdisable recovery 
ErrDisable Reason            Timer Status
-----------------            --------------
arp-inspection               Enabled
bpduguard                    Disabled
channel-misconfig (STP)      Disabled
dhcp-rate-limit              Disabled
dtp-flap                     Disabled
 //output ommited for clarity

Timer interval: 300 seconds

Interfaces that will be enabled at the next timeout:

Voici ce que cela signifie :

  • Le minuteur de récupération est actif pour l’inspection arp
  • La minuterie par défaut est de 300 secondes (5 minutes)
  • Une fois le délai expiré, l’interface est réactivée automatiquement

Personnalisation du Recovery Timer

Vous pouvez réduire le temps d’attente en modifiant l’intervalle :

SW1(config)# errdisable recovery interval 120

Cela définit l’intervalle de récupération automatique sur 120 secondes (2 minutes).

Désormais, si une attaque ARP déclenche DAI et ferme un port, le commutateur le réactivera automatiquement après 2 minutes, sans intervention manuelle.

4. Vérifications de validation supplémentaires DAI

Par défaut, l’inspection ARP dynamique (DAI) valide les messages ARP en comparant l’adresse IP et l’adresse MAC source à la table de liaison de surveillance DHCP.
Cependant, pour une protection renforcée, vous pouvez activer des contrôles de validation supplémentaires afin de détecter des techniques d’usurpation d’identité plus avancées.

Pourquoi ajouter des contrôles supplémentaires ?

La vérification DAI de base est efficace, mais les attaquants peuvent toujours tenter de manipuler d’autres champs des en-têtes ARP ou Ethernet.
Pour se protéger contre ces tactiques avancées, DAI prend en charge trois vérifications supplémentaires :

SW1(config)# ip arp inspection validate ?
  dst-mac  Validate destination MAC address
  ip       Validate IP addresses
  src-mac  Validate source MAC address

Passons en revue chaque option.

1. Validation MAC de destination (dst-mac)

Ce contrôle garantit que :

  • L’adresse MAC de destination dans la trame Ethernet
  • Correspond à l’adresse MAC cible dans la payload ARP

En cas d’incompatibilité, le paquet est considéré comme malveillant et est abandonné.

Pourquoi c’est important :
Cela permet de bloquer les attaques où des réponses ARP falsifiées sont envoyées à des appareils non liés pour détourner le trafic.

2. Validation IP (ip)

Cette option empêche les appareils d’envoyer des paquets ARP en utilisant des adresses IP non valides ou réservées, telles que :

  • 0.0.0.0 → Utilisé temporairement dans la découverte DHCP
  • 255.255.255.255 → Broadcast
  • 224.0.0.0/4 → Multicast

Ceux-ci ne devraient jamais apparaître dans les messages ARP légitimes.

Pourquoi c’est important :
Il bloque les adresses IP absurdes ou malveillantes qui pourraient perturber ou compromettre le réseau.

3. Validation MAC source (src-mac)

Ce contrôle garantit que :

  • L’adresse MAC source dans l’en-tête Ethernet
  • Correspond à l’adresse MAC de l’expéditeur dans la payload ARP

S’ils diffèrent, le paquet est falsifié et immédiatement abandonné.

Pourquoi c’est important :
Il est particulièrement efficace contre les tentatives d’usurpation d’identité ARP, où un attaquant tente d’usurper l’identité d’un autre hôte.

Activation des contrôles de validation

Pour activer la vérification améliorée de DAI, vous devez activer les contrôles souhaités à l’aide de la commande ip arp inspection validate.

⚠️ Important :
Chaque fois que vous saisissez cette commande, la configuration précédente est écrasée.
Si vous souhaitez activer plusieurs vérifications (ip, src-mac et dst-mac), vous devez les spécifier toutes simultanément sur la même ligne.

Exemple : activer les trois contrôles de validation

SW1(config)# ip arp inspection validate ip src-mac dst-mac

Cela activera :

  • validation de l’adresse IP
  • Validation de l’adresse MAC source
  • Validation de l’adresse MAC de destination

Vérifier la configuration

Vous pouvez vérifier que les contrôles sont actifs en utilisant :

SW1# show run | include validate
 ip arp inspection validate ip src-mac dst-mac

Activer uniquement des contrôles spécifiques

Vous pouvez également choisir d’activer uniquement certaines vérifications.
Par exemple, pour activer uniquement la validation de l’adresse IP et de l’adresse MAC source :

SW1(config)# ip arp inspection validate ip src-mac

5. Conclusion

Dynamic ARP Inspection (DAI) protège votre réseau contre l’usurpation d’identité ARP. Elle vérifie si les messages ARP proviennent de sources fiables, en utilisant la DHCP Snooping Binding Table comme référence.

Voici ce qui compte le plus :

FonctionnalitéCe qu’il fait / Pourquoi c’est important
Rôle du DAIBloque les fausses réponses ARP (usurpation de la passerelle)
Ports de confianceAucune inspection → Utilisé pour le serveur DHCP, les liaisons montantes du routeur
Ports non fiablesInspection ARP active → Les appareils des utilisateurs finaux vont ici
DHCP SnoopingRequis pour que DAI compare les informations IP/MAC
Rate LimitingLimite le trafic ARP (par défaut : 15 paquets/s) → Empêche les inondations
Err-Disabled RecoveryLes ports sont fermés en cas d’abus ARP détecté. La restauration peut être manuelle ou automatique.
Contrôles de validationProtections supplémentaires : vérifiez les adresses IP, le MAC source et le MAC de destination

Avec la configuration Dynamic ARP Inspection appropriée, votre commutateur peut arrêter silencieusement les tentatives d’usurpation d’identité sans interrompre le trafic utilisateur légitime.

Pour des informations techniques plus approfondies, consultez la documentation officielle de Cisco.