lunes, abril 13, 2015

Port Security en switches Cisco: cuando no podemos asegurar el puerto y nos sale "Command rejected: FastEthernet0/1 is a dynamic port"

En los switches Cisco es posible asegurar un puerto mediante el comando

switchport port-security

en el modo de configuración de interfaz. Si usamos el comando sin más, sin valores adicionales, garantizamos que en ese mismo puerto solo pueda haber conectado un único host (o lo que es lo mismo, que la conexión se restrinja a una MAC, una dirección física), imposibilitando el uso de hubs o switches conectados a dicho puerto. Si esa regla es violada y por el puerto se ve más de una MAC, el switch tirará el puerto. Para asegurar por ejemplo la interfaz FastEthernet0/1 de un switch Cisco deberíamos hacer lo siguiente:

SW1#conf t
SW1(config)#interface fastEthernet 0/1
SW1(config-if)#switchport port-security
Command rejected: FastEthernet0/1 is a dynamic port.


Ahora bien, hemos intentado habilitar la seguridad en el puerto FastEthernet0/1 pero el comando ha sido rechazado, informándosenos de que dicho puerto es dinámico. ¿Qué significa esto? Si hacemos un show interface switchport de dicho puerto obtenemos esta información:

SW1#show interfaces fastEthernet 0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative Mode: dynamic auto
Operational Mode: static access
.

.
.

Vemos que el Administrative Mode del switchport está a auto. El modo administrativo define el modo de trunking del puerto, es decir, si el puerto va a funcionar en modo acceso (access mode), permitiendo el paso de una única VLAN, o en modo trunk, permitiendo el paso de múltiples VLANs. Existe además el modo dinámico en que el puerto es configurado de manera automática como acceso o como trunk según el switch detecte lo que hay conectado a ese puerto. En la captura anterior podemos ver que el Operational Mode es static access porque el switch ha detectado que el equipo conectado a ese puerto funciona en modo acceso. Para equipos finales como PCs lo normal es utilizar el modo acceso a secas, por lo que podemos cambiar sin problemas el modo del switchport:

SW1#conf t
SW1(config)#interface fastEthernet 0/1
SW1(config-if)#switchport mode ?
  access   Set trunking mode to ACCESS unconditionally
  dynamic  Set trunking mode to dynamically negotiate access or trunk mode
  trunk    Set trunking mode to TRUNK unconditionally
 

SW1(config-if)#switchport mode access

Ahora podemos ver que el modo administrativo (además del modo operacional) es static access:

SW1#show interfaces fastEthernet 0/1 switchport
Name: Fa0/1
Switchport: Enabled
Administrative Mode: static access
Operational Mode: static access
.

.
.

Ahora sí vamos a poder habilitar la seguridad:

SW1#conf t
SW1(config)#interface fastEthernet 0/1
SW1(config-if)#switchport port-security
SW1(config-if)#



Hay que recordar que el comando, sin más parámetros, permite el paso de un único host (una sola MAC) y que cuando se detecta más de una el puerto es tirado por el switch. Veámoslo con un ejemplo.

Tenemos el siguiente segmento de red, con un switch (SW1) al que va conectado un hub (Hub0) a través del puerto FastEthernet0/2, hub al que a su vez hay conectado un host (PC0). Hay un host adicional (PC2) que de momento no está conectado al hub. A qué puertos concretos del hub están conectados los hosts es irrelevante.

De momento el switch ve a través del puerto FastEthernet0/2 una sola MAC, la de PC0. La MAC que ve a través del puerto FastEthernet0/1 es irrelevante para el caso.

SW1#show mac-address-table
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

   1    0060.2f7d.5401    DYNAMIC     Fa0/1
   1    00d0.97ea.6c5a    STATIC      Fa0/2



La norma es que no deben usarse hubs para agregar hosts por los conocidos problemas de colisiones y de bajada del rendimiento en el segmento al que pertenecen. Si como administradores de la red hemos decidido que en la organización no se usarán hubs para agregar equipos, tiene sentido que habilitemos la seguridad en los puertos para equipos finales y evitar precisamente situaciones como esta, en la que posiblemente alguien ha conectado el hub de manera no autorizada y con fines desconocidos. Hemos habilitado la seguridad del puerto en FastEthernet0/2:

SW1#conf t
SW1(config)#interface fastEthernet 0/2
SW1(config-if)#switchport port-security
SW1(config-if)#


Veamos qué ocurre en cuanto conectamos el host PC2 al hub:


El puerto ha caído instantáneamente y el segmento con los hosts ha quedado aislado. En el switch tenemos la siguiente salida:

SW1#
%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to administratively down
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down



Si hacemos un show interface a la interfaz:

SW1#show interfaces fastEthernet 0/2
FastEthernet0/2 is down, line protocol is down (err-disabled)
  Hardware is Lance, address is 000a.41a4.8602 (bia 000a.41a4.8602)
 BW 100000 Kbit, DLY 1000 usec,
     reliability 255/255, txload 1/255, rxload 1/255

.
.
.


Vemos que la razón de la caída del puerto es err-disabled, que es un código genérico para distintos tipos de motivos por los que el switch puede tirar un puerto, Port Security incluido. Para rehabilitar el puerto necesitamos primero desconectar fisicamente uno de los hosts y realizar primero un shutdown y luego un no shutdown del puerto, con lo que se restaura la situación inicial:

SW1#conf t
SW1(config)#interface fastEthernet 0/2
SW1(config-if)#shut


%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to administratively down
 

SW1(config-if)#no shut

%LINK-5-CHANGED: Interface FastEthernet0/2, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to up



7 comentarios:

  1. Maravilloso sitio, me han ayudado mucho

    ResponderEliminar
  2. Como vuelvo al modo dynamico una vez que se habilita el modo de acceso

    ResponderEliminar
    Respuestas
    1. Si quieres volver a poner un puerto en modo dinámico tienes que introducir estos comandos dentro del puerto:

      no switchport nonegotiate
      switchport mode dynamic auto

      Eliminar
  3. al usar interface fa0/18, shut y luego no shut no hace nada se queda en down

    ResponderEliminar