Evitando DHCP Spoofing con un Switch Cisco

Si tenemos una red donde solo debe haber un host con el servicio DHCP, debemos evitar a toda costa que un nuevo equipo entre en la red y suplante el DHCP legitimo. Los principales problemas que pueden acarrear la suplantación DHCP, es que el nuevo servidor DHCP otorge direcciones IP fuera del rango de red real, servidores DNS erroneos, que pueden dar a la resolución de páginas web con Phishing etc… y por ende con el robo de credenciales de acceso, datos personales, empresariales, etc…

Como ya hable en alguna entrada anterior, para poder conseguir situar de manera más fácil un servidor DHCP ilegitimo en la red, se puede utilizar un ataque de agotamiento DHCP para dejar el servidor legitimo sin direcciones que dar a los host.

Si tenemos un switch configurable, podemos designar que puertos van a ser confiables y cuales no, para decidir por cuales de ellos se podrán enviar paquetes con el protocolo DHCP y por cuales no. De esa manera nos aseguraremos de que en nuestra red solo podrá haber un servidor DHCP funcionando.

Snooping DHCP

El Snooping DHCP se basa en designar que puertos del switch son confiables y cuales no.

Puertos confiables: tienen permitido el envio de solicitudes DHCP y acuses de recibo DHCP es decir, puede haber un servidor DHCP conectado directamente en ese puerto al igual que puede haber un cliente que realice una petición.

Puerto no confiables: tienen permitido el envio de solicitudes DHCP pero no el acuse de recibo DHCP, es decir no tienen permitido que haya un servidor DHCP conectado a determinado puerto. Cuando se procesa un acuse de recibo DHCP a través de un puerto no confiable, este automaticamente se pone como inactivo.

Para activar el DHCP Snooping en un switch Cisco, debemos ejecutar el siguiente comando:

Switch# configure terminal
Switch(Config)# ip dhcp snooping

Además habrá que indicar sobre que VLAN va a actuar el DHCP Snooping; en mi caso será la 1, ya que por defecto existe la VLAN 1 en los switch y esta engloba todas las interfaces existentes. Esta será la vlan que protegeré:

Switch(Config)# ip dhcp snooping vlan 1

Captura de pantalla 2016-06-13 a las 21.56.25
Imagen 1. VLAN  1 y las interfaces que engloba.

A continuación hay que designar que puertos van a ser confiables, por ejemplo, si el servidor DHCP legitimo de nuestra red estuviese conectado al puerto FA0/1 del Switch, ejecutariamos:

Switch(Config)# interface fa0/1
Switch(Config-if)# ip dhcp snooping trust

De esa manera, conseguiriamos que un servidor DHCP ilegitimo no consiguiera otorgar un direccionamiento IP a un Host de la red. Veamos el siguiente ejemplo:

Captura de pantalla 2016-06-13 a las 22.49.50
Imagen 2. Red de ejemplo.

Existe un servidor DHCP legitimo y otro que no lo es, este DHCP otorga un direccionamiento IP distinto al de la red real, dando un direccionamiento de clase B en vez de C, con esto se conseguiría que el nuevo Host quedase fuera de la red real, y que se le otorgaran otros DNS y Gateway, pero si aplicamos los comandos superiores, el switch evitará que paquetes con el protocolo DHCP salgan desde ese puerto.

Captura de pantalla 2016-06-15 a las 0.40.28
Imagen 3. Paquete DHCP bloqueado, con origen en el DHCP Ilegitimo.

Si además queremos evitar que no haya ningun otro host detrás de dicho puerto, podemos agregar la dirección MAC del servidor DHCP como estatica para dicho puerto. Para ello ejecutariamos:

Switch(Config)# interface fa0/1
Switch(Config-if)# switchport mode access
Switch(Config-if)# switchport port-security
Switch(Config-if)# switchport port-security mac-address
dirección-mac

Debemos ejecutar el comando switchport mode access, ya que si el puerto se encuentra en modo de configuración dinamica, no nos dejará establecer la ‘seguridad por puertos’. El comando switchport port-security activa la seguridad por puertos en la interfaz y a continuación se añade manualmente la MAC del servidor DHCP; cabe recalcar que podriamos añadir mas de una direccion MAC por puerto y establecer un maximo de direcciones MAC para cada puerto igualmente, lo cual lo hariamos de la siguiente forma:

Switch(Config-if)# switchport port-security maximum N

Donde N seria el numero máximo de MAC’s por puertos.

Si no queremos añadir manualmente las direcciones MAC podriamos ejecutar el siguiente comando que haría que el Switch fuese aprendiendo las direcciones dinamicas MAC automaticamente:

S1(Config-if)# switchport port-security mac-address sticky

Cuando se detecta el envio de un paquete donde la MAC de origen no es la establecida el puerto se desactiva, a esto se le llama violacion de seguridad. En la imagen 4 vemos como todas las interfaces  que tengo en este momento estan ‘Up’. Cuando se detecte el envio de un paquete con dirección MAC origen no establecida pasaran a estar en modo Down, (uno de los modos de violación existente), esto es debido a que por defecto se utiliza el modo de violación shutdown.

Captura de pantalla 2016-06-13 a las 0.03.36
Imagen 4. Las tres interfaces estan ‘Up’.

Modos de violación de seguridad

La seguridad de los puertos puede ser violada de distintas maneras, una de ellas puede ser cuando el puerto alcanza el numero de maximo de MACs permitidas, o por ejemplo, en el caso anterior, cuando se detecta una MAC distinta a la definida o cuando una MAC que ha sido definida para un puerto se puede detectar en otro, es decir en el caso de que se estuviese realizando MAC Spoofing, para realizar algún ataque MITM con ARP Spoofing, por ejemplo.

Para reaccionar a estas violaciones hay tres formas distintas:

  • Protect: cuando la cantidad de direcciones MAC seguras alcanza el límite permitido para el puerto, los paquetes con direcciones de origen desconocidas se descartan hasta que se elimine una cantidad suficiente de direcciones MAC seguras o se aumente la cantidad máxima de direcciones permitidas. Con este metodo no se produce ninguna notificación de que se produjo una violación de la seguridad.
  • Restrict: este funciona de la misma forma que el anterior pero si  hay una notificación de que se produjo una violación de seguridad.
  • Shutdown: en este modo de violación (el cual es el predeterminado), una violación de seguridad de puerto produce que la interfaz se inhabilite de inmediato  y que se apague el LED del puerto. Aumenta el contador de violaciones. Cuando hay un puerto seguro en estado inhabilitado por errores, se lo puede sacar de dicho estado mediante la introducción de los comandos shutdown y no shutdown del modo de configuración de interfaz.

Para cambiar el modo de violación en un puerto, ejecutariamos:

Switch(Config-if)# switchport port-security violation {protect | restrict | shutdown}.

2 comentarios sobre “Evitando DHCP Spoofing con un Switch Cisco

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s