Mikrotik: Bloquear servidor DHCP intruso
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ámetro | Descripción |
---|---|
interface | Indica la interface por la cual se monitorea la existencia de algún servidor DHCP |
on-alert | Nombre 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). |
Direcció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:
- 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.
- 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
- 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
- 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.
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 |