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   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   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 

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».
Switch cisco: puerto bloqueado
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.