Asegurar el acceso de un switch

Los switches Catalyst ofrecen una característica de seguridad para limitar qué y/o cuantas direcciones MAC pueden acceder en un interface. Se puede configurar en una interface con Vlan de voz (VoIP) pero No en TRUNKs. Para ello primero se debe habilitar la característica con el comando:

switch(config-if)# switchport port-security

Una vez activado, por defecto SOLO permite una dirección MAC, por lo que si queremos habilitar más debemos indicarlo con este comando:

switch(config-if)# switchport port-security maximum max-addr

donde max-addr puede ser de 1 a 1024. Como por defecto solo se permite una MAC, si el puerto está configurado con VoIP debemos permitir al menos 3 (recomendación de Cisco).

Un dato a tener en cuenta es que cuando se activa port-security las direcciones de MAC no expiran como lo harían por defecto, si queremos que expiren debemos configurar el comando (minutos puede ser de 1 a 1440 minutos):

switch(config-if)# switchport port-security aging time minutos

También podemos definir estáticamente direcciones MAC que pueden transmitir tráfico por el interface usando el comando:

switch(config-if)# switchport port-security mac-address mac-addr

La dirección MAC mac-addr debe expresarse como 3 grupos separados por puntos (0000.0000.0000). En caso de que definamos estáticamente menos direcciones de las permitidas en la interface, el resto de direcciones MAC que queden hasta el máximo permitido serán aprendidas dinámicamente.

Por último debemos especificar que acción se debe tomar en caso de que se supere el número de direcciones MAC permitidas o que se aprenda una dirección MAC no definida estáticamente, con el siguiente comando:

switch(config-if)# switchport port-security violation {shutdown | restrict | protect}
  • shutdown - el puerto pasa a estar en modo Errdisable que evidentemente se pone en shutdown y envía un SNMP Trap. Debe activarse manualmente (entrando en modo configuración, poniendo la interface en shutdown y volviendo a activarla) o a través de "errdisable recovery". Es la acción por defecto.
  • restrict - el puerto sigue activo (UP) pero todos los paquetes provenientes de las direcciones MAC que violan la seguridad son descartados (DROP). El switch mantiene un contador de paquetes que violan la seguridad, manda mensajes de alerta a syslog y envía SNMP trap.
  • protect - el puerto sigue activo (UP) al igual que el modo restrict, aunque los paquetes provenientes de las direcciones MAC que violan la seguridad son descartados (DROP), no se genera ningún tipo de LOG.

Con el siguiente comando conseguimos que las MACs aprendidas dinámicamente sean persistentes incluso después de un reinicio del switch:

switch(config-if)# switchport port-security mac-address sticky

Solo se quedan en la running config por lo que si queremos que tras un reinicio del switch se mantengan las MAC debemos copiar la running a la startup config.

Importante
No se puede configurar direcciones MAC sticky o estáticas usando port security en una interface de voz (voice VLAN).

En caso de que queramos limpiar la(s) MAC(s) de un interface para poder permitir otra MAC podemos usar este comando a nivel de dirección MAC o de interface:

switch# clear port-security dynamic [address mac-addr | interface type mod/num]

Para ver el estado de una interface usaremos el comando:

switch# show port-security interface type mod/num

Para ver un resumen rápido SOLO de interfaces que están en modo errdisable (que incluye la razón de por qué está así), podemos usar el comando:

switch# show interfaces status err-disabled

Para un listado de las interfaces configuradas con port security con sus contadores y la acción configuradas por cada una de las interfaces, podemos usar el comando:

switch# show port-security

Los switches Catalyst soportan autenticación basada en interface, una combinación de autenticación AAA y seguridad de interface. Esta característica está basada en el estándar 802.1x que una vez activado no pasa nada de tráfico hasta que un usuario se autentica.

Como es lógico tanto el ordenador o servidor del usuario final como el switch deben soportar el estándar 802.1x usando EAPOL (Extensible Authentication Protocol Over LANs). Si la parte del cliente (PC) está configurado con soporte de 802.1x pero el switch no, el cliente se comunica normalmente descartando el protocolo 802.1x. Si es al contrario, el switch está configurado con soporte de 802.1x y el cliente (PC) no, entonces no se transmite ningún tipo de tráfico.

El protocolo 802.1x es un protocolo de Capa 2, en el momento que un switch detecta la presencia de un dispositivo deja la interface en estado NO autorizado. El cliente (PC) solo puede comunicarse usando EAPOL. Por eso el cliente (PC) requiere de una aplicación o software que soporte 802.1x.

Cuando un dispositivo se conecta a un interface configurado con 802.1x sigue estos pasos:

  1. Empieza el estado de autenticación (permitiendo solo comunicación de EAPOL (EAP Over Lan), CDP y STP.
  2. El switch pide autenticación o el cliente envía una trama EAPOL para empezar la autenticación.
  3. El switch envía la información de autenticación del cliente al servidor RADIUS y actúa como proxy.
  4. Si la autenticación es exitosa, la interface pasa a estado autorizado y permite tráfico.

El protocolos 802.1x requiere de tres diferentes dispositivos que sean configurados para que la autenticación basada en puerto funcione:

  • Cliente (o host): debe ejecutar una aplicación/software conforme al protocolos 802.1x
  • Servidor de autenticación: Procesa la autenticación del cliente, SOLO se soporta servidor Radius.
  • Switch: controla el acceso físico y actúa como proxy.
  1.  Habilitar AAA en el switch que por defecto está deshabilitado, por lo que para habilitarlo usaremos este comando:
    switch(config)# aaa new-model
  2.  Definir los servidores externos RADIUS. Ahora definiremos uno o más servidores RADIUS con el siguiente comando (uno por cada server):
    switch(config)# radius-server host {hostname | ip-address} [key string]
  3. Definir el método de autenticación para 802.1x. Con el siguiente comando configuramos que todos los servidores RADIUS configurados en el switch sean usados para la autenticación 802.1x:
    switch(config)# aaa authentication dot1x default group radius
  4. Habilitar 802.1x en el switch
    switch(config)# dot1x system-auth-control
  5. Configurar cada interface del switch que usaran 802.1x
    switch(config)# interface type mod/num
    switch(config)# dot1x port-control {force-authorized | force-unauthorized | auto}
    		
    donde cada estado puede ser:
    • force-authorized: La interface está forzada a permitir siempre lo que esté conectado. No es necesaria autenticación. Es el estado por defecto cuando se activa 802.1x. Deshabilita la autenticación 802.1x.
    • force-unathorized: La interface está siempre forzada a NO permitir la transmisión ni autenticación. Con lo cual NO se permite el estado autorizado para que el cliente pase tráfico.
    • auto: La interface negocia el estado de autorizado o no autorizado, si el cliente se autentica correctamente o no. Requiere que el cliente tenga una aplicación que soporte el protocolo 802.1x. Solo permite tramas EAPOL.
  6. Permitir multiples hosts en una interface del switch: Puede ser obvio que si configuramos 802.1x esperemos un solo cliente por interface, pero en ocasiones podemos necesitar que una interface haya más de un cliente (por ejemplo un hub u otro switch) por lo que necesitaremos configurar este comando en la interface oportuna:
    switch(config-if)# dot1x host-mode multi-host

Para poder verificar las interfaces configuradas con 802.1x podemos usar el comando:

switch# show dot1x all

Para configurar, lo hacemos a nivel de interface usando el comando:

Switch(config-if)# storm-control {broadcast | multicast | unicast} level { level [level-low] | bps bps [bps-low] | pps pps [pps-low] }

Puede establecer el umbral de tráfico con la palabra clave de level y una de las siguientes palabras clave y valores:

  • level level [level-low]: el umbral se establece en un porcentaje del ancho de banda de la interfaz. Los porcentajes de level y level-low pueden ser un valor con dos decimales desde 0.00 a 100.00.
  • bps bps [bps-low]: el umbral se establece en una velocidad específica de bits por segundo. Los valores de bps y bps-low pueden oscilar entre 0.0 y 10000000000.0 (10 Gbps), con un lugar decimal.
  • pps pps [pps-low]: el umbral se establece en paquetes específicos por segundo. Los valores de pps y pps-low pueden variar de 0.0 a 10000000000.0 (10 Gbps), con un lugar decimal.

Tenemos que establecer la acción una vez se supera el umbral, con el comando:

Switch(config-if)# storm-control action {shutdown | trap}

Podemos visualizar los umbrales ascendentes y descendentes de Storm Control, además de la tasa actual, con el siguiente comando:

Switch# show storm-control [interface-id] [broadcast | multicast | unicast]
  • Configurar contraseñas seguras: Siempre que se pueda usar el comando enable secret para contraseñas más seguras, también el comando service password-encryptation para que no se muestren las contraseñas en plano. Se debería usar un servidor AAA externos para autenticar usuarios con lo cual se mantienen fuera del switch.
  • Usar banners del sistema: Es aconsejable configura el comando banner motd, banner exec o banner login para indicar el acceso no autorizado será perseguido por las autoridades oportunas.
  • Asegurar la interfaz web: Si decidimos configurar y mantener el acceso web debemos asegurar su acceso limitando el número de IPs permitidas para el acceso usando los siguientes comandos:
    switch(config)# ip http secure server
    switch(config)# acces-list num permit IP wildcard
    switch(config)# ip http access-class num
    		
  • Asegurar la consola del switch: Aunque los switches estén en armarios con llave y el acceso físico a ellos sean restringido es conveniente configurar el acceso autenticado a la consola de los switches.
  • Asegurar el acceso al terminar virtual (VTY): Siempre debemos configurar tanto autenticación con usuario y contraseña así como una lista de acceso a todas las terminales (vty)
  • usar SSH siempre que sea posible: Siempre que sea posible debemos habilitar el acceso por SSHv2 en vez del telnet aunque sean en entornos controlados ya que la información vía SSH va cifrada.
  • Asegurar el acceso SNMP: Siempre que podamos debemos configurar accesos SNMP de solo lectura (RO) y si necesitamos lectura y escritura (RW) siempre poner una lista de acceso para limitar las IPs que están permitidas a hacer cambios vía SNMP. Lo ideal es configurar siempre una lista de acceso independientemente de que el SNMP sea RO o RW. Incluso mejor usar SNMPv3.
  • Asegurar las interfaces del switch no usadas: Los puertos que NO se usen siempre ponerlos en admin down (shutdown) para evitar intentos de conexión. Es muy importante que cada interface de un usuario esté configurada como "switchport mode access".  También podemos usar la macro "switchport host" dentro de la configuración de una interface para configurarla de forma rápida para SOLO permitir un solo ordenador. Esta macro activa PortFast, deshabilita TRUNKING (pone en modo acceso) y deshabilita Ether-Channel.
  • Asegurar las operaciones STP: Se debe siempre habilitar la característica BPDU Guard para que interfaces que reciben BPDUs inesperadas se pongan en modo disabled.
  • Asegurar el uso de CDP: Es aconsejable no habilitar CDP debido a que anuncia información innecesaria a posibles atacantes.

Retro

Lugares

Redes

Sistemas

Varios