Cómo asegurar los puertos de los switches Cisco
En este artículo vamos a ver cómo se pueden establecer ciertos criterios de seguridad en los puertos de los switches de Cisco.
Como en los otros artículos de esta serie que estamos publicando, es necesario que se tengan ciertos conocimientos de manejo de dispositivos Cisco y del simulador de redes Packet Tracer.
La seguridad en los switches comienza por el acceso al propio sistema, a través de la consola o a través de las líneas virtuales (vty), ya sea por Telnet o SSH, o también por Http. Se puede establecer una contraseña para el acceso en modo privilegiado y además, la autenticación se puede llevar de modo local, por medio de usuarios configurados en el propio sistema, con sus diferentes niveles de privilegios, o bien por medio de un servidor externo (como un servidor RADIUS por ejemplo).
Ejemplo
Para configurar una contraseña de acceso por consola, de modo que se solicite nada más conectarse a través de una sesión de terminal:
sw(config)#line console 0 sw(config-line)#password micontraseña
Con esto ya es suficiente.
En algunos sistemas, sobre todo en routers, existe una conexión auxiliar (AUX) que para poder utilizarla se tiene que configurar una contraseña; está pensada para conexión a través de modem.
Para la seguridad desde el punto de vista de la red, a nivel de switch (capa 2) se suelen utilizar LAN virtuales (VLAN) para separar dominios de difusión.
También existe una seguridad a nivel de puertos, que va más allá de los accesos al sistema del switch, con el que se intenta controlar qué equipos se conectan a la red. Es en este aspecto donde centraremos el artículo.
Asignación estática de direcciones
Consiste en asignar manualmente una dirección MAC a un puerto específico. Se puede comprobar que no se puede conectar ese equipo en otro puerto. Lo contrario sí se puede.
La sintaxis del comando:
sw(config)#mac-address-table static dirección_mac interface nº vlan nombre_vlan
Para eliminar la asignación se debe usar la forma no del comando.
sw(config)#no mac-address-table static dirección_mac interface nº vlan nombre_vlan
Debe tenerse en cuenta que la sintaxis mostrada puede variar ligeramente dependiendo del modelo de switch o de la versión de IOS.
La comprobación de la configuración puede hacerse consultando simplemente la tabla de direcciones MAC del switch:
sw#show mac-address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 1 0001.6429.c999 STATIC Fa0/7 1 0002.4aea.d2c1 STATIC Fa0/4 1 0006.2a85.3b41 STATIC Fa0/3 1 0010.111d.078d STATIC Fa0/2 1 0040.0b95.0844 STATIC Fa0/8 1 0060.7074.1915 STATIC Fa0/5 1 0090.0c2b.8c7a STATIC Fa0/6
Puertos seguros
Se conoce como puerto seguro a aquél que se configura de manera que puede establecer una dirección MAC como segura, e impedir que el resto de equipos puedan conectarse a ese mismo puerto.
Existen varias maneras de tratar el puerto seguro. La configuración básica:
- Para poder aplicar seguridad hace falta que el puerto esté en modo access. Nótese entonces los problemas en el caso de troncales (tratamiento de las vlan y en concreto la vlan nativa)
sw(config-if)#switchport mode access
- Para establecer la seguridad.
sw(config-if)#switchport port-security
Con el puerto así configurado, por defecto, la primera MAC que aprenda (la de la primera trama que pase por ahí) será la única que se podrá usar, hasta que se desconecte, entonces la que aprenda después se convertirá en segura. Se puede cambiar para que aprenda más de una como segura (sólo tiene sentido en un puerto conectado a un hub u otro switch).
Para que en cuanto aprenda una dirección, no permita cambiarla.
sw(config-if)#switchport port-security mac-address sticky
También permite indicar la MAC a mano. Por defecto apaga la interfaz si detecta un cambio. Para recuperar la interfaz después de un bloqueo de seguridad hay que apagarla y encenderla otra vez (ejecutando shutdown en ese puerto, y no shutdown a continuación).
Otras opciones de port-secuity son violation y maximum.
Para indicar el número de direcciones seguras:
sw(config-if)#switchport port-security maximum nº
Para indicar el modo de violación:
sw(config-if)#switchport port-security violation {shutdown | protect | restrict}
Las opciones de violation indican el comportamiento ante una violación de la seguridad, dichas opciones son:
-
-
- shutdown, por defecto, bloquea el puerto e incrementa el contador de violaciones.
- protect, impide el envío de tramas sin bloquear el puerto, no incrementa el conteo de violaciones.
- restrict, impide el envío de tramas sin bloquear el puerto, incrementa el contador de violaciones y envía avisos por SNMP.
-
Téngase en cuenta que deben producirse envío de tramas para que pueda provocarse una violación de seguridad en el puerto. Para ello haced un ping por ejemplo.
La opción por defecto, shutdown, nótese que puede ser perjudicial en un puerto conectado a otro switch o hub, se podría bloquear y dejar sin servicio a los equipos «legítimos».
Ejemplo de un puerto bloqueado (en rojo) al compartirlo. Sería más conveniente alguna otra opción de violation.
Comprobaciones de funcionamiento:
Para comprobar el estado de seguridad de puertos.
sw#show port-security
Para ver la configuración detallada de un puerto.
sw#show port-security interface interfaz
Ejemplo
Switch#sh port-security Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action (Count) (Count) (Count) -------------------------------------------------------------------- Fa0/2 1 1 0 Protect Fa0/3 1 1 0 Protect Fa0/4 1 1 3 Restrict Fa0/5 1 1 0 Restrict Fa0/6 3 0 0 Shutdown Fa0/7 1 1 1 Shutdown Fa0/8 3 2 0 Shutdown ----------------------------------------------------------------------
Pueden verse las columnas que muestran el número de direcciones seguras y las que se han aprendido y se recuerdan, así como el contador de violaciones. En las protect ese contador estará a cero siempre.
Para eliminar las mac seguras:
sw#clear port-security all sw#clear port-security configured --> para las estáticas sw#clear port-security dynamic --> para las dinámicas sw#clear port-security sticky --> para las sticky
También se puede configurar el tiempo que se conserva la mac aprendida:
sw#switchport port-security aging time minutos --> al cabo del cual se borra.
Descárgate aquí un archivo de ejemplo para probar estas cosas (creado con Packet Tracer 6)
Seguridad de puertos para DHCP:
Una defensa importante que podemos aplicar en los puertos es frente a los ataques al servicio DHCP.
El protocolo DHCP trabaja a base de difusiones, sin autenticación, por lo que es susceptible al ataque por parte de servidores DHCP «piratas» que otorguen configuraciones falsas a clientes legítimos. Éstos, normalmente, no obtendrán la configuración necesaria para acceder a recursos externos.
El snooping consiste en la identificación de puertos confiables, a los que se les permitirá tanto enviar como recibir mensajes DHCP.
Con la opción trust, el puerto se convierte en confiable, permitiendo el paso de ofertas de servidores DHCP hacia los clientes.
sw(config)# ip dhcp snooping --> para habilitar el servicio. sw(config)#interface f0/1 sw(config-if)#ip dhcp snooping trust
Los no confiables solo pueden enviar solicitudes, con lo que podrán tener conectados clientes DHCP, pero no servidores.
DHCP también es muy susceptible a los ataques de DoS (Denegación de Servicio) a base de lanzar múltiples solicitudes de configuración IP con direcciones MAC inventadas, con el objetivo de agotar todas las IP disponibles en el servidor.
Para éste último caso, es oportuno limitar el número de peticiones que se puedan realizar a través de un puerto, con el comando:
sw(config-if)#ip dhcp snooping limit rate ratio --> número de peticiones válidas.
Estos comandos aún no están disponibles en el simulador Packet Tracer, tendremos que comprobarlos en switches reales 🙂
Espero que este nuevo articulo os haya resultado interesante, si es así podéis dar +1 o me gusta en vuestras redes sociales favoritas y ayudarnos a compartir este contenido, gracias.