Facebookfacebook Twitter Emailmail Imprimirprint
Jueves 12 de diciembre de 2024
Santoral:
Nuestra Señora de Guadalupe
Otros:
Semana:
50
Día año:
347/366 (95%)
U.F.:
Sin información
IPC:
Sin información
Dolar:
Sin información
Euro:
Sin información
Bitcoin:
U$ {bitcoin}
mindicador.cl

Mikrotik: Bloquear servidor DHCP intruso

Evitar configuraciones anómalas de nuestra red por un DHCP no autorizado

Introducción

Hay ocaciones en que tenemos algún usuario "Pillo" que instala sin autorización un router en nuestra red, y la contamina con un servidor DHCP que perturba la asignación de IP y Gateway para nuestros usuarios, y en ocaciones no es fácil detectar

Existen fabricantes de switch que ofrecen alternativas a éste problema, en el caso de Mikrotik tenemos la opción de emitir una alerta y/o filtrarlo por medio de reglas.

Configuración

Utilizaremos para las explicaciones la configuración por consola, ya que es mas fácil de presentar y de hacer "Copiar/Pegar" a su router, pero si prefiere fácilmente puede entenderlo y configurarlo por otros medios como "Webfig" o "Winbox".

Alerta de DHCP Intruso

RouterOS nos ofrece la posibilidad de reportar algún servidor DHCP distinto a los que nosotros registremos por su MAC, debiendo agregar una entrada por cada LAN que queramos monitorear:


/ip dhcp-server alert
add disabled=no interface=bridge-local on-alert="{\
    \n:local dmac [/ip dhcp-server alert get bridge-local unknown-server]\
    \n:local dip [/ip arp get [ find mac-address=\$dmac ] address]\
    \n\
    \n/tool e-mail send from=\"router@example.com\" subject=\"Servidor DHCP Fraudulento\" \\\
    \n     to=\"netadmin@example.com\" server=\"192.168.1.2\" \\\
    \n     body=\"Se ha detectado un servidor DHCP no autorizado con MAC \$dmac con IP \$dip\"\
    \n}" valid-server=4C:DE:F0:12:34:0B

Donde:

ParámetroDescripción
interfaceIndica la interface por la cual se monitorea la existencia de algún servidor DHCP
on-alertNombre del script a ejecutar en caso de detectar un DHCP ajeno, o un script si se coloca entre llaves { }. En éste caso enviamos un email al administrador. Deberá cambiar en el script "bridge-local" por el nombre de la interface que está monitoreando y realizar los respectivos ajustes para from (dirección de correo de origen), to (correo de destino) y server (dirección IP del servidor de mail).
valid-serverDirección MAC del DHCP Server autorizado

Luego podremos ver en el log (o syslog remoto) mensajes con los tópicos "dhcp", "critical" y "error" como:

...
dhcp alert on bridge-local: discovered unknown dhcp server, mac D4:CA:FA:BC:DE:F1, ip 192.168.1.12
...

Entendamos DHCP

Primeramente deberemos enterder como funciona DHCP para ver las alternativas para bloquearlo (o interrumpirlo) de menera que no se produzca la asignación de IP desde un servidor ajeno a nuestra red y tener el cuidad de no bloquear nuestro legítimo DHCP. El protocolo funciona de la siguiente manera:

  1. Discovery: El equipo cliente envía una solicitud de IP a la dirección BROADCAST (255.255.255.255) al puerto 67/UDP. Utiliza como IP de origen 0.0.0.0 con puerto 68/UDP.
  2. Offer: El Servidor DHCP Ofrece una configuración al cliente, Utiliza como origen su IP con puerto 68/UDP y destino 255.255.255.255 con puerto 67/UDP
  3. Request: El cliente responde con una solicitud por el IP ofrecido anteriormente, con origen 0.0.0.0 puerto 68/UDP dirigido a 255.255.255.255 puerto 67/UDP
  4. Acknowledgement: El servidor confirma la asignación, con su IP y puerto 67/UDP como origen dirigido a 255.255.255.255 puerto 68/UDP

Una opción que tenemos es bloquear las respuestas DHCP con IP distintos al nuestro, pero nuestro problema es que no estamos ruteando, por lo que los tradicionales filtros de Firewall no aplican.

Filtrar en Bridge

Generalmente definimos "Bridge" para unir nuestra red LAN con una Wi-Fi o con algún tunel PPTP u otros. Considerando que nuestro bridge con DHCP tiene nombre "bridge-local" utilizamos la configuración de filtros de bridge como:


/interface bridge filter
add action=drop chain=forward dst-port=68 ip-protocol=udp \
    log=yes log-prefix="DHCP Fraudulento" mac-protocol=ip \
    out-bridge=bridge-local src-address=!192.168.1.1/32

Conclusión

Aunque el mecanismo no es 100% efectivo, su mayor deficiencia está en el caso que el servidor DHCP se encuentre conectado directamente en nuestro Switch/Router en un puerto ethernet, aunque ayuda en parte a detectar y poder reparar el problema. Igualmente me parece extraño, que a pesar que RouterOS es capaz de detectar un DHCP ajeno, no ofresca además la posibilidad de bloquearlo.

Actualización: Versión 6.43 incluye DHCP Snoop

A partir de la versión 6.43 de RouterOS se incluye la funcionalidad DHCP Snoop en la configuración del Bridge, luego se debe especificar dentro del los puertos del switch la opción trusted=yes si se permite un servidor DHCP en dicho puerto:

...
/interface bridge
add comment="Red LAN" name=bridge dhcp-snooping=yes
add bridge=bridge comment="Servidor DHCP" interface=ether1 trusted=yes
add bridge=bridge comment="Usuario" interface=ether2 trusted=no
add bridge=bridge comment="Usuario" interface=ether3 trusted=no
add bridge=bridge comment="Usuario" interface=ether4 trusted=no
...

Lamentablemente habilitar ésta opción desactiva la aceleración por hardware del switch en gran parte de los equipos, dado que debe analizar los paquetes DHCP en el bridge. Se recomienda evaluar posibles afectaciones de rendimiento.

Escrito por: Luis Hernán de la Barra, 05/05/2016
Si tiene interés por alguno de éstos servicios u otro similar, por favor llene el formulario de contacto

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
Teléfono:   +56995451689
WhatsApp:   +56995451689
E-Mail:info@wyzer.cl
Web:www.wyzer.cl