MACsec - Configuración

MACsec (IEEE 802.1AE) cifra y protege el tráfico Ethernet salto a salto (link-by-link) entre dos dispositivos directamente conectados: host↔switch o switch↔switch. A diferencia de IPSec - Configuración (capa 3, extremo a extremo), MACsec es de capa 2 y protege cada enlace físico contra escuchas y manipulación. Las claves se negocian con MKA (MACsec Key Agreement), usando una clave pre-compartida (PSK) para enlaces switch-switch, o claves dinámicas derivadas de 802.1X - Configuración/AAA para host-switch. La validación está en MACsec - Verificación y el diagnóstico en MACsec - Troubleshooting.

Importante: MACsec requiere soporte de hardware en los puertos y la CLI varía por plataforma (Catalyst 9000, etc.). Confirma con mka ? / macsec ? en tu equipo.


Prerrequisitos

  • Puertos que soporten MACsec por hardware en ambos extremos.
  • Para PSK: una clave (key-string) idéntica en los dos switches.
  • Para host-switch: 802.1X/AAA funcionando (ver AAA - Configuración).

Conceptos previos (mínimos)

  • MACsec protege un solo enlace (los dos dispositivos de sus extremos). No es extremo a extremo: cada salto descifra y vuelve a cifrar.
  • MKA (MACsec Key Agreement): el protocolo que negocia y rota las claves de sesión.
  • Dos formas de desplegarlo:
    • PSK (manual): típico switch-switch. Se define una clave en un key chain macsec y se aplica con macsec network-link.
    • 802.1X (dinámico): típico host-switch. Las claves se derivan de la autenticación 802.1X/AAA.
  • Cipher suite: el algoritmo (por ejemplo gcm-aes-128 o gcm-aes-256).
  • Debe coincidir en ambos extremos: clave, algoritmo de MKA y cipher suite.

Pasos (switch-switch con PSK):

  1. Key chain MACsec con la clave.
  2. Política MKA con el cipher suite.
  3. Aplicar en la interfaz del uplink (macsec network-link).

Comandos de configuración

Switch ↔ Switch con clave pre-compartida (PSK)

! 1) Key chain de tipo macsec
SW1(config)# key chain KC-MACSEC macsec
SW1(config-keychain)# key 01
SW1(config-keychain-key)# cryptographic-algorithm aes-128-cmac
SW1(config-keychain-key)# key-string 12345678901234567890123456789012
SW1(config-keychain-key)# exit

! 2) Política MKA con el cipher suite
SW1(config)# mka policy MKA-POL
SW1(config-mka-policy)# macsec-cipher-suite gcm-aes-128
SW1(config-mka-policy)# exit

! 3) Aplicar en el uplink switch-switch
SW1(config)# interface gigabitEthernet 1/0/1
SW1(config-if)# mka policy MKA-POL
SW1(config-if)# mka pre-shared-key key-chain KC-MACSEC
SW1(config-if)# macsec network-link
  • key chain <nombre> macsec + key-string: la clave pre-compartida (en hex; la longitud depende del algoritmo).
  • cryptographic-algorithm aes-128-cmac: algoritmo con que MKA protege sus mensajes.
  • mka policy + macsec-cipher-suite gcm-aes-128: el cifrado de los datos.
  • mka pre-shared-key key-chain <nombre>: usa esa clave en la interfaz.
  • macsec network-link: activa MACsec en un enlace de infraestructura (switch-switch).

Host ↔ Switch con 802.1X (claves dinámicas)

SW1(config)# interface gigabitEthernet 1/0/2
SW1(config-if)# macsec
SW1(config-if)# access-session host-mode single-host
SW1(config-if)# dot1x pae authenticator
SW1(config-if)# mka policy MKA-POL
  • macsec (por interfaz) + 802.1X: las claves las entrega la sesión autenticada (no hay PSK). Requiere AAA/802.1X configurado.

Añadido pro: gcm-aes-256 da cifrado más fuerte (requiere licencia/hardware que lo soporte). El key-string debe tener la longitud exacta que pida el algoritmo, o la sesión MKA no sube.


Dos ejemplos completos de configuración

Ejemplo 1 — Enlace cifrado entre dos switches (PSK)

En SW1 (mostrado arriba) y en SW2 con la misma clave y política:

SW2# configure terminal
SW2(config)# key chain KC-MACSEC macsec
SW2(config-keychain)# key 01
SW2(config-keychain-key)# cryptographic-algorithm aes-128-cmac
SW2(config-keychain-key)# key-string 12345678901234567890123456789012
SW2(config-keychain-key)# exit
SW2(config)# mka policy MKA-POL
SW2(config-mka-policy)# macsec-cipher-suite gcm-aes-128
SW2(config-mka-policy)# exit
SW2(config)# interface gigabitEthernet 1/0/1
SW2(config-if)# mka policy MKA-POL
SW2(config-if)# mka pre-shared-key key-chain KC-MACSEC
SW2(config-if)# macsec network-link
SW2(config-if)# end
SW2# copy running-config startup-config

Ambos extremos deben tener idénticos: key 01, key-string, algoritmo y cipher suite.

Ejemplo 2 — Puerto de acceso con MACsec vía 802.1X

SW1# configure terminal

! (AAA/802.1X ya configurados - ver AAA y 802.1X)
SW1(config)# interface gigabitEthernet 1/0/2
SW1(config-if)# switchport mode access
SW1(config-if)# macsec
SW1(config-if)# access-session host-mode single-host
SW1(config-if)# dot1x pae authenticator
SW1(config-if)# mka policy MKA-POL
SW1(config-if)# end
SW1# write memory

Aquí no hay clave manual: el PC se autentica por 802.1X y de esa sesión se derivan las claves MACsec.


Verificación rápida (comprobar que quedó bien)

La validación detallada está en MACsec - Verificación.

! Resumen de MACsec y sesiones MKA
SW1# show macsec summary
SW1# show mka sessions

! Detalle de la interfaz
SW1# show macsec interface gigabitEthernet 1/0/1

Qué deberías ver:

  • En show mka sessions, la sesión con el peer en estado Secured.
  • En show macsec interface, el cifrado activo (gcm-aes-128) y contadores de paquetes protegidos/cifrados.

Nota de origen: este tema se construyó desde el estándar de Cisco (IEEE 802.1AE / MKA). No había diapositiva de MACsec en tus carpetas, y la CLI depende de la plataforma (Catalyst 9000, etc.). Si consigues diapositivas de MACsec, las integro.