Desi ARP gratuit se foloseste cu un scop nobil de cele mai multe ori, (vezi articolul ARP gratuit (Gratuitous ARP)) exista cazuri in care un ARP reply gratuit “fabricat” inlesneste atacuri de tip “man-in-the-middle” (vezi poza de mai jos).
Pentru a preveni acest tip de atacuri putem activa pe un switch “D.A.I. / Dynamic ARP Inspection”:
- Daca IP-ul sursa dintr-un ARP reply venit pe portul X nu se afla in lista de IP-uri asignate de catre DHCP pe acel port, ARP-ul e filtrat (trebuie sa avem activat si DHCP snooping).
- Daca IP-ul sursa dintr-un ARP reply venit pe portul X nu se afla in lista definita static (manual) de corespondente IP – MAC pentru respectivul port, ARP-ul este filtrat. In exemplul de mai jos permitem ARP-uri doar de la hostul 10.10.10.10 /0011.1134.8637
- Daca MAC-ul sursa din headerul Ethernet difera de MAC-ul sursa din “ARP body”, atunci ARP-ul este filtrat.
(config)# ip arp inspection validate src-mac
- Daca MAC-ul destinatie din headerul Ethernet difera de MAC-ul target din “ARP body”, atunci ARP-ul este filtrat.
(config)# ip arp inspection validate dst-mac
- Daca in mesajul ARP apar listate ip-uri ca 255.255.255.255, 0.0.0.0 sau ip-uri de multicast, atunci ARP-ul este filtrat.
(config)#ip arp inspection validate ip
(config)# arp access-list arp-acl-de-test (config-arp-nacl)# permit ip host 10.10.10.10 mac host 0011.1134.8637 (config)# ip arp inspection filter arp-acl-de-test vlan 10 (config-if)# no ip arp inspection trust # comanda asta e implicita
*Mar 1 03:46:14.218: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa1/0/3, vlan 10. ([0016.c7c2.b441/10.10.10.3/0013.198a.06c2/10.10.10.2/03:46:13 UTC Mon Mar 1 1993])
Pentru a activa D.A.I. pe un anumit vlan se foloseste comanda globala:
(config)# ip arp inspection vlan X
In acest moment toate interfetele se afla in starea “untrust” si se analizeaza ARP-urile pe fiecare dintre ele. Daca exista interfete in spatele carora avem conectate spre exemplu servere, se dezactivea D.A.I. folosind comanda:
(config-if)# ip arp inspection trust
Pentru a preveni alte atacuri de tip DOS generate de un FLOOD ARP de exemplu, se poate seta o limita a numarul de pachete pe secunda care sunt analizate pe fiecare interfata in parte (default = 15):
(config-if)# ip arp inspection limit rate 10
Daca se depaseste limita portul este pus in “err-disable” cu mesajul “%SW_DAI-4-PACKET_RATE_EXCEEDED:”.
ATENTIE la cazul in care ne folosim de “DHCP Snooping Database” dar avem si hosturi care au IP static. Se da un switch in care intra R1, R2 si R3, toate in vlan 10, in urmatoarea configuratie: R1 – DHCP server, R2 – DHCP client si R3 – STATIC host. Pe vlan 10 avem activat atat D.A.I. cat si IP DHCP snooping:
SW# sho run | inc snoop|arp ip dhcp snooping vlan 10 ip dhcp snooping ip arp inspection vlan 10 ip dhcp snooping trust
Daca R1 aloca dinamic un IP lui R2, atunci pe SW vom avea o intrare in “DHCP Snooping Database” pentru R2, dupa care va filtra D.A.I. Daca dorim sa ajungem de la R3 la R2 NU vom putea, pentru ca NU apare IP/MAC lui R3 “DHCP Snooping Database” iar D.A.I. nu va lasa ARP-ul sa plece de la R3. In acest caz, este nevoie de ARP ACL pe portul lui R3, deci trebuie sa combinam metodele de la punctele 1 si 2. Daca folosim cand aplicam un filtru cuvantul “static” atunci D.A.I. nu va mai tine cont de “DHCP Snooping Database” ci doar de ARP ACL si iarasi nu vom mai putea ajunge de la R2 la R3.
(config)# ip arp inspection filter arp-acl-de-test vlan 10 static