Dynamic Arp Inspection – Prevención de ataques MiTM

Dynamic ARP Inspection es una funcionalidad de seguridad en la red y como su nombre indica, se basa en la inspección dinámica de las resoluciones de direcciones de capa de enlace que se reciben en un puerto de un switch o router.

Su funcionamiento consiste en verificar que las peticiones y respuestas ARP son válidas.

Por tanto, el binding entre direcciones IP y MAC en un determinado puerto es verificado, evitando así un envenenamiento de ARP o ARP Poisoning y en consecuéncia, un MiTM ( Man in the middle ).

Existen diferentes técnicas para obtener éxito en un ataque MiTM. Hasta ahora hemos visto DHCP Snooping o cómo evitar que en un puerto no autorizado se erija un servidor DHCP o se envíen paquetes DHCP de servidor. En este post vamos a analizar la contramedida a un ataque MiTM basado en envenenamiento ARP.



Dymanic ARP Inspection puede operar en entornos con y sin DHCP Snooping.

Si tenemos DHCP Snooping, DAI obtendrá el binding MAC-IP de la tabla de dhcp snooping y verificará de forma dinámica que las resoluciones ARP son coherentes. Si no tenemos DHCP Snooping, tendremos que configurar a mano este binding que DAI espera. Esto es, habrá que configurar la relación IP-MAC a mano.

Es por este motivo que si deseamos tener estas funcionalidades de seguridad, es recomendable que realicemos reservas dhcp a aquellos equipos que necesiten una pseudo ip fija y movilidad a la vez.

Configuración de Dynamic ARP Inspection en un entorno con DHCP Snooping:

Aquí no están autorizadas las ip’s fijas en puertos untrusted.

1 - Activamos DAI en la/s vlan/s

switch#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.

switch(config)# ip arp inspection vlan 11,20,30

2 - Configuramos el ratio de paquetes por segundo en los puertos untrust ( opcional )

switch(config)#interface FastEthernet 0/1
switch(config-if)#ip arp inspection limit rate ?
<0-2048>  Packets per second

3 - Configuramos los puertos confiables/trust 
( típicamente los trunks entre switches y puertos de routers y firewalls )

switch(config)#interface GigabitEthernet 0/1
switch(config-if)#ip arp inspection trust

Configuración de Dynamic ARP Inspection en un entorno sin DHCP Snooping ( no recomendable )

Seria la misma configuración que la anterior añadiendo las excepciones a mano :

ip source binding <mac> vlan <nº de vlan> <ip host > interface < nº de interfaz >

o bien añadiendo acl’s de capa 2 :

ip arp inspection filter <arp-acl-name> vlan <vlan-range> [static]

Verificación :

show ip arp inspection

Logs:

En el siguiente log vemos un intento de envenenamiento ARP de un host que se hace pasar por la gateway de la red ( 192.168.1.1 ) hacia un host legítimo. El switch en este caso ha denegado el tráfico de envenenamiento ARP, que llevaría a un Man In the Middle del host atacado. El log generado es enviado por syslog a un servidor que pocesará el evento y enviará un correo a los administradores de la red alertando del ataque y localizando al atacatante ( nombre de switch y puerto ).

May 13 17:23:13 DST: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Res) on Fa0/14, vlan 11.([0021.aaaa.cccc/192.168.1.1/0021.aaaa.bbbb/192.168.1.184/17:23:13 DST Fri May 13 2011])

La descripción del Identificador del Evento es :

%SW_DAI-4-DHCP_SNOOPING_DENY: [dec] Invalid ARPs ([chars]) on [chars], vlan [dec].([[enet]/[chars]/[enet]/[chars]/[time-of-day]])
This message means that the switch has received Address Resolution Protocol (ARP) packets considered invalid by ARP inspection. The packets are erroneous, and their presence can show attempted man-in-the-middle attacks in the network. This log message appears when the IP and MAC address of the sender binding for the received VLAN is not present in the DHCP snooping database.

Si se diese un positivo de Dynamic ARP Inspection, por defecto el puerto entrará en err-disable, desactivando el link del mismo. Existe a criterio de los administradores ofrecer la recuperación del link del puerto de forma automática tras X segundos mediante :

errdisable recovery cause arp-inspection
errdisable recovery interval ?
<30-86400>  timer-interval(sec)

Cabe decir que el comando errdisable recovery es global, por lo que todos los eventos posibles que provoquen un errdisable recuperarán en el intervalo configurado y son :

switch#show errdisable recovery

ErrDisable Reason            Timer Status
-----------------            --------------
arp-inspection               Disabled
bpduguard                    Disabled
channel-misconfig            Disabled
dhcp-rate-limit              Disabled
dtp-flap                     Disabled
gbic-invalid                 Disabled
inline-power                 Disabled
link-flap                    Disabled
mac-limit                    Disabled
loopback                     Disabled
pagp-flap                    Disabled
port-mode-failure            Disabled
psecure-violation            Disabled
security-violation           Disabled
sfp-config-mismatch          Disabled
small-frame                  Disabled
storm-control                Disabled
udld                         Disabled
vmps                         Disabled

 

 

 

 

 

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *