Evite la suplantación de ARP con una entrada estática dinámica en Linux

8

La detección / prevención de suplantación de ARP parece ser bastante popular aquí. Con otras técnicas como robo de puertos a un lado, me pregunto si lo siguiente podría funcionar para evitarlo:

Cada vez que mi estación de trabajo Linux se conecta a la red, puedo agregar automáticamente una entrada ARP estática designada con la dirección MAC de la puerta de enlace predeterminada tal como se obtuvo en ese momento. (Supuestamente, las NIC de puerta de enlace no solo cambian sus MAC después).

Implementado como algo similar a la siguiente secuencia de comandos que se puede colocar en /etc/network/if-{up,down}.d en un GNU / Linux basado en Debian (o en /etc/NetworkManager/dispatcher.d donde se use que se usa):

#!/bin/sh

# If not Debian, account for NetworkManager's dispatcher.d
IFACE="${IFACE:-$1}" MODE="${MODE:-$2}"

# Support eth/wlan/wwan interfaces
case "$IFACE" in en*|eth*|wl*|ww*) ;; *) exit 0; esac

neighbors="/run/ifup.$(basename "$0").$IFACE"

case "$MODE" in
    start|*up*)
        sleep 6
        arp -an -i "$IFACE" | cut -d' ' -f 2,4 | tr -d '()' > "$neighbors"
        while read host hwaddr; do arp -s $host $hwaddr; done < "$neighbors"
        ;;
    stop|*down*)
        [ ! -f "$neighbors" ] && exit 0
        while read host _hwaddr; do arp -d $host; done < "$neighbors"
        rm "$neighbors"
        ;;
esac

Supongo que hay una condición de carrera justo después de que se establezca la conexión, pero aparte de eso, para asegurar el MAC de la puerta de enlace predeterminada, nada más, algo como este ligero funcionaría lo suficientemente bien como para configurarlo ¿Y olvidarlo? ¿Se interpondría en el camino del wifi en roaming? ¿Hay alguna otra consideración?

    
pregunta K3---rnc 04.10.2015 - 19:40
fuente

2 respuestas

3

No analicé tu guión. Sin embargo, parece complejo.

¿Por qué no usas ARPtables? Es como IPtables, pero para ARP.

Block ARP traffic from all machines (default: DENY)
arptables -P INPUT DROP

Allow router (fixed ARP)
arptables -A INPUT --source-mac d8:d7:21:22:5a:f4 -j ACCEPT

De esta manera solo intercambiará paquetes ARP con su enrutador.

Fuente: enlace

    
respondido por el Nate 02.11.2015 - 16:38
fuente
1

Hace algún tiempo, me he quedado atascado con el mismo problema: evitar la falsificación de ARP.

El uso del script que proporcione funcionará hasta que se conecte a una red ya falsificada.

Quiero decir, cuando se une a una red, su SO agregará automáticamente una entrada ARP a la puerta de enlace correcta con la dirección MAC correcta, pero si en ese momento recibe un paquete ARP falsificado, antes de ejecutar su script, Confíe en la dirección MAC falsa.

Será un poco más difícil ya que estás usando dispatcher.d , pero está bien.

El otro enfoque que tomé fue crear una lista blanca de direcciones MAC para mis redes comunes y una tarea para verificar por la tabla ARP para ver si mi dirección MAC de la puerta de enlace predeterminada está en mi lista de confianza. Si no es así, simplemente desconecte y avise automáticamente.

    
respondido por el Fábio Pires 23.11.2015 - 15:20
fuente

Lea otras preguntas en las etiquetas