tutoriales.com

Seguridad en Redes Cisco: Implementación y Gestión de AAA con TACACS+ y RADIUS

Este tutorial exhaustivo explora la implementación de AAA (Authentication, Authorization, Accounting) en dispositivos Cisco, una piedra angular para la seguridad y control de acceso en la red. Aprenderás a configurar TACACS+ y RADIUS, entendiendo sus diferencias y cuándo usar cada uno, para proteger el acceso a tus equipos de red. Incluye ejemplos prácticos y configuraciones detalladas.

Intermedio18 min de lectura13 views
Reportar error

La seguridad es un pilar fundamental en cualquier infraestructura de red moderna. Controlar quién accede a tus dispositivos de red, qué acciones puede realizar y registrar estas acciones es crucial para mantener la integridad y disponibilidad de la red. Aquí es donde entra en juego el concepto de AAA: Authentication, Authorization, and Accounting.

🛡️ ¿Qué es AAA y por qué es Importante?

AAA es un framework de seguridad que proporciona un control centralizado sobre la gestión del acceso de usuarios a los recursos de la red. Desglosemos sus componentes:

  • Authentication (Autenticación): Verifica la identidad del usuario. ¿Quién eres? (Ej: nombre de usuario y contraseña).
  • Authorization (Autorización): Determina qué recursos puede acceder el usuario y qué operaciones puede realizar. ¿Qué puedes hacer? (Ej: acceso a ciertos comandos, privilegios de configuración).
  • Accounting (Contabilidad): Rastrea las acciones de los usuarios, cuándo se conectaron, cuánto tiempo estuvieron activos, qué comandos ejecutaron. ¿Qué hiciste? (Ej: logs para auditoría y cumplimiento).
🔥 Importancia de AAA: Implementar AAA centraliza la gestión de usuarios, mejora la seguridad al limitar accesos y proporciona una trazabilidad completa de las acciones en tus dispositivos de red, esencial para auditorías y resolución de problemas.

Beneficios Clave de AAA:

  • Seguridad Mejorada: Reduce el riesgo de acceso no autorizado y actividades maliciosas.
  • Centralización: Administra usuarios y políticas desde un servidor central, no desde cada dispositivo.
  • Auditabilidad: Proporciona registros detallados de todas las actividades de los usuarios.
  • Cumplimiento: Ayuda a cumplir con normativas y estándares de seguridad.
  • Escalabilidad: Facilita la gestión de un gran número de usuarios y dispositivos.

🆚 TACACS+ vs. RADIUS: Entendiendo las Diferencias

Existen dos protocolos principales para implementar AAA en redes Cisco: TACACS+ y RADIUS. Aunque ambos cumplen la función de AAA, tienen diferencias fundamentales que los hacen adecuados para distintos escenarios.

TACACS+ (Terminal Access Controller Access-Control System Plus)

TACACS+ es un protocolo propietario de Cisco, aunque su especificación es abierta. Es ideal para la autenticación de acceso a dispositivos de red (CLI, telnet, SSH).

Características clave de TACACS+:

  • Separación de AAA: Autenticación, autorización y contabilidad son procesos completamente separados. Esto permite, por ejemplo, autenticar en un servidor y autorizar en otro. También permite fallar en una de ellas sin afectar las otras.
  • Cifrado Completo del Paquete: Todo el contenido del paquete TACACS+ (incluyendo cabeceras) está cifrado, lo que ofrece una mayor seguridad.
  • Puerto TCP 49: Utiliza TCP, lo que lo hace más fiable y orientado a la conexión.
  • Granularidad en Autorización: Ofrece una capacidad de autorización muy detallada, permitiendo especificar comando por comando qué puede ejecutar un usuario en un dispositivo Cisco.
  • Ideal para Acceso de Administración: Su robustez y granularidad lo hacen perfecto para gestionar el acceso de administradores a equipos de red.

RADIUS (Remote Authentication Dial-In User Service)

RADIUS es un estándar abierto, ampliamente utilizado para la autenticación de acceso a la red (Network Access Server - NAS). Es común para autenticar usuarios que acceden a la red (ej. VPN, Wi-Fi, 802.1X).

Características clave de RADIUS:

  • Combinación de AyA: Autenticación y autorización están combinadas en un solo paquete, lo que significa que si la autenticación falla, la autorización no se intenta.
  • Cifrado Parcial: Solo la contraseña del usuario está cifrada en el paquete RADIUS (mediante MD5), el resto del paquete viaja en texto claro.
  • Puerto UDP 1812 (Autenticación/Autorización) y 1813 (Contabilidad): Utiliza UDP, lo que puede ser menos fiable pero más rápido para ciertas aplicaciones.
  • Autorización Limitada: La autorización es menos granular que en TACACS+, basándose más en atributos de servicio.
  • Ideal para Acceso de Usuario Final: Su simplicidad y amplio soporte lo hacen adecuado para autenticar un gran número de usuarios que necesitan acceso a la red.

Tabla Comparativa de TACACS+ vs. RADIUS

CaracterísticaTACACS+RADIUS
EstandarizaciónPropietario de CiscoEstándar abierto (IETF)
TransporteTCP (Puerto 49)UDP (1812/1813)
CifradoPaquete completoSolo contraseña (MD5)
Separación AAASí (A, A, A separadas)No (Autenticación y Autorización juntas)
Granularidad Autoriz.Alta (comando por comando)Baja (atributos de servicio)
Uso TípicoAcceso de administrador a dispositivosAcceso de usuario final (VPN, Wi-Fi)
💡 Consejo: Usa TACACS+ para asegurar el acceso a tus dispositivos de infraestructura (routers, switches, firewalls) por parte de los administradores. Utiliza RADIUS para la autenticación de usuarios finales que acceden a la red (ej. acceso inalámbrico, VPNs, acceso 802.1X).

🛠️ Implementación de AAA en Cisco IOS: Pasos y Configuración

La implementación de AAA en dispositivos Cisco implica varios pasos, desde la configuración global hasta la configuración de los métodos de autenticación, autorización y contabilidad.

Requisitos Previos

Antes de empezar, asegúrate de tener:

  • Un dispositivo Cisco (router o switch) con Cisco IOS.
  • Acceso al modo de configuración privilegiado del dispositivo.
  • Un servidor TACACS+ (ej. Cisco ACS, ISE) o RADIUS (ej. FreeRADIUS, Microsoft NPS) configurado y accesible desde el dispositivo Cisco.
  • Direcciones IP de los servidores AAA y una clave secreta compartida.

Topología de Ejemplo

Vamos a usar una topología simple:

Flujo de Autenticación de Red Administrador (Intento de Acceso) SSH/Telnet Router Cisco (NAS) Consulta Servidor AAA TACACS+ / RADIUS 1 Pide credenciales 2 Envía al servidor 3 Valida

En este escenario, el router Cisco enviará las solicitudes AAA al servidor centralizado.

1. Habilitar AAA Globalmente

El primer paso es habilitar el modelo AAA en el dispositivo Cisco. Esto se hace con un comando global.

Router(config)# aaa new-model
⚠️ Advertencia: Una vez que se habilita `aaa new-model`, si no hay métodos de autenticación configurados correctamente o si el servidor AAA no está accesible, podrías perder el acceso al dispositivo. ¡Asegúrate de tener un plan de respaldo (ej. consola o acceso local) o configura un método de autenticación local como fallback!

2. Configurar Servidores AAA

Ahora, configuraremos los servidores TACACS+ y RADIUS en el dispositivo. Es posible configurar múltiples servidores para redundancia.

2.1. Configuración de Servidores TACACS+

Router(config)# tacacs-server host 192.168.1.100 key SuperSecretKey123
Router(config)# tacacs-server host 192.168.1.101 key SuperSecretKey123
Router(config)# tacacs-server timeout 5
Router(config)# tacacs-server directed-request
  • tacacs-server host <IP> key <clave>: Define la dirección IP del servidor TACACS+ y la clave compartida. Esta clave debe coincidir exactamente con la configurada en el servidor TACACS+.
  • tacacs-server timeout <segundos>: Tiempo de espera antes de considerar que un servidor no responde.
  • tacacs-server directed-request: Permite a los usuarios especificar un servidor TACACS+ específico durante el login si hay varios.

2.2. Configuración de Servidores RADIUS

Router(config)# radius server RAD_SERVER_1
Router(config-radius-server)# address ipv4 192.168.1.200 auth-port 1812 acct-port 1813
Router(config-radius-server)# key AnotherSecretKey456
Router(config-radius-server)# exit
Router(config)# radius server RAD_SERVER_2
Router(config-radius-server)# address ipv4 192.168.1.201 auth-port 1812 acct-port 1813
Router(config-radius-server)# key AnotherSecretKey456
Router(config-radius-server)# exit
Router(config)# radius-server timeout 5
Router(config)# radius-server dead-time 10
  • radius server <NAME>: Define un grupo de servidor RADIUS. Es mejor usar grupos para mayor flexibilidad.
  • address ipv4 <IP> auth-port <puerto> acct-port <puerto>: Especifica la IP y los puertos de autenticación/contabilidad.
  • key <clave>: La clave compartida para el servidor RADIUS.
  • radius-server timeout <segundos>: Tiempo de espera.
  • radius-server dead-time <minutos>: Marca un servidor como inactivo durante un tiempo si no responde.

3. Configurar Listas de Métodos AAA

Aquí es donde definimos qué métodos de autenticación, autorización y contabilidad se utilizarán y en qué orden. Las listas de métodos pueden ser con nombre o predeterminadas.

3.1. Listas de Autenticación (aaa authentication login)

Define cómo los usuarios son autenticados cuando intentan iniciar sesión (telnet, SSH, consola).

Router(config)# aaa authentication login default group tacacs+ local
Router(config)# aaa authentication login CONSOLE_AUTH line
Router(config)# aaa authentication login SSH_AUTH group radius local
  • default: Se aplica a todas las líneas que no tienen una lista de autenticación específica.
  • group tacacs+: Intenta autenticar con el grupo de servidores TACACS+ configurado. Si falla o no está disponible, pasa al siguiente método.
  • local: Intenta autenticar con la base de datos de usuarios local del router.
  • line: Utiliza la contraseña configurada en la línea VTY o consola.

La secuencia de métodos es crucial. El router probará los métodos en el orden especificado. Si el primer método falla o el servidor no responde, intentará el siguiente.

3.2. Listas de Autorización (aaa authorization exec)

Controla los comandos que un usuario puede ejecutar después de una autenticación exitosa. exec se refiere al modo EXEC privilegiado (enable).

Router(config)# aaa authorization exec default group tacacs+ local
Router(config)# aaa authorization exec CONSOLE_AUTH local
  • exec: Autoriza comandos en modo EXEC (privilegiado).
  • group tacacs+: Consulta al servidor TACACS+ para obtener permisos de comandos.
  • local: Si TACACS+ no responde o no autoriza, permite el acceso con los privilegios locales configurados.
📌 Nota: TACACS+ es mucho más potente para autorización granular, permitiendo incluso autorizar comandos específicos o conjuntos de comandos. RADIUS es más limitado, a menudo solo autoriza el nivel de privilegio de usuario.

3.3. Listas de Contabilidad (aaa accounting)

Registra las acciones de los usuarios, como inicios de sesión, cierres de sesión y comandos ejecutados.

Router(config)# aaa accounting exec default start-stop group tacacs+
Router(config)# aaa accounting commands 15 default start-stop group tacacs+
  • exec: Registra los inicios y cierres de sesión.
  • commands 15: Registra todos los comandos ejecutados en el nivel de privilegio 15 (el más alto).
  • start-stop: Envía un registro al inicio y otro al final de la sesión.
  • group tacacs+: Envía los registros al servidor TACACS+.

4. Aplicar Listas AAA a Interfaces y Líneas

Finalmente, debes aplicar estas listas de métodos a las líneas VTY (para telnet/SSH) y la consola, o a interfaces para 802.1X, etc.

4.1. Configuración de Líneas VTY (Telnet/SSH)

Router(config)# line vty 0 4
Router(config-line)# transport input ssh
Router(config-line)# login authentication SSH_AUTH
Router(config-line)# authorization exec SSH_AUTH
Router(config-line)# accounting exec default
Router(config-line)# exit
  • transport input ssh: Solo permite conexiones SSH (recomendado por seguridad).
  • login authentication SSH_AUTH: Aplica la lista de autenticación con nombre SSH_AUTH.
  • authorization exec SSH_AUTH: Aplica la lista de autorización con nombre SSH_AUTH.
  • accounting exec default: Aplica la lista de contabilidad predeterminada.

4.2. Configuración de Línea de Consola

Router(config)# line console 0
Router(config-line)# login authentication CONSOLE_AUTH
Router(config-line)# authorization exec CONSOLE_AUTH
Router(config-line)# accounting exec default
Router(config-line)# exit

5. Configuración de Usuario Local como Fallback (¡Crucial!)

Es vital tener una cuenta de usuario local como respaldo en caso de que los servidores AAA sean inaccesibles. Esto te evitará quedarte fuera de tu propio equipo.

Router(config)# username admin_local privilege 15 secret LocalPassword123

Si tu lista de autenticación es group tacacs+ local, el router intentará el servidor TACACS+ primero. Si no responde, usará la base de datos de usuarios local.

6. Verificación

Después de la configuración, es fundamental verificar que AAA funciona como se espera.

Router# show aaa servers
Router# show tacacs
Router# show radius
Router# debug aaa authentication
Router# debug aaa authorization
💡 Consejo: Utiliza `debug aaa` con precaución en entornos de producción, ya que puede generar una gran cantidad de salida. Es más seguro habilitarlo en un entorno de pruebas.

📈 Casos de Uso Avanzados y Mejores Prácticas

Acceso Basado en Roles (Role-Based Access Control - RBAC)

Con TACACS+, puedes implementar RBAC de manera muy efectiva. En tu servidor TACACS+, puedes definir grupos de usuarios (ej. 'Administradores Senior', 'Operadores Junior') y asignarles conjuntos específicos de comandos permitidos o denegados. El router simplemente consulta al servidor qué privilegios tiene el usuario.

Administrador (Usuario A) 1. Acceso SSH / Consola ROUTER Enforcement Point 2. Consulta TACACS+ SERVIDOR TACACS+ (RBAC Engine) Grupo 'Admin' Privilegio: Nivel 15 Comandos: Permitir TODO Usuario A ∈ Admin ✅ Grupo 'Operator' Privilegio: Nivel 1 Permitir: show, ping Denegar: config, reload 3. Autorización (Permitir) 4. Aplica Política RBAC

Autenticación de Backup (Fallback Local)

Siempre, siempre configura un método local al final de tus listas de autenticación para evitar bloqueos si tus servidores AAA fallan.

Router(config)# aaa authentication login VTY_AUTH group tacacs+ local

Autenticación de Consola

Para la línea de consola, a menudo se recomienda usar login authentication local o login authentication console (que usa la contraseña de la línea) para asegurar el acceso físico si la red está caída.

Router(config)# line console 0
Router(config-line)# login authentication local

Seguridad SSH

Deshabilita Telnet y usa solo SSH para el acceso remoto a tus dispositivos. Telnet envía credenciales en texto claro.

Router(config)# line vty 0 4
Router(config-line)# transport input ssh
Router(config-line)# transport preferred ssh

Cifrado de Claves Compartidas

Aunque las claves compartidas se configuran en texto claro en la CLI, el IOS las cifra internamente. Asegúrate de que las claves sean complejas y difíciles de adivinar.

Pruebas Rigurosas

Antes de implementar AAA en producción, realiza pruebas exhaustivas en un entorno de laboratorio para asegurarte de que todas las políticas de acceso funcionan como se espera y que tienes un plan de contingencia en caso de fallo.


Troubleshooting Común en AAA 🕵️‍♂️

Cuando las cosas no salen como esperas, el troubleshooting es clave. Aquí hay algunos puntos comunes a revisar:

  1. Conectividad al Servidor AAA: ¿Puede el dispositivo Cisco hacer ping al servidor TACACS+/RADIUS? Asegúrate de que no haya firewalls bloqueando los puertos (TCP 49 para TACACS+, UDP 1812/1813 para RADIUS).
  2. Claves Compartidas: La clave configurada en el dispositivo Cisco debe coincidir exactamente con la del servidor AAA. ¡Son sensibles a mayúsculas y minúsculas!
  3. Configuración del Servidor AAA: Verifica que el dispositivo Cisco esté configurado como cliente (NAS) en el servidor AAA y que las políticas de usuario/grupo estén definidas correctamente.
  4. Orden de Métodos AAA: Revisa el orden de los métodos en las listas aaa authentication y aaa authorization. Si un método falla o no está disponible, el siguiente será probado.
  5. Usuarios Locales: Asegúrate de que, si utilizas la autenticación local, los usuarios estén creados con sus privilegios correctos en el dispositivo Cisco.
  6. Depuración: Utiliza los comandos debug aaa authentication y debug aaa authorization para ver el flujo de la solicitud AAA en tiempo real. Esto te indicará dónde puede estar el fallo.
    • Terminal monitor (para ver los logs de debug en sesión SSH/telnet)
    • debug aaa authentication
    • debug aaa authorization
    • debug tacacs (si aplicable)
    • debug radius (si aplicable)
⚠️ Importante: Siempre desactiva los debugs después de usarlos con `undebug all` para evitar sobrecargar la CPU del dispositivo.

🏁 Conclusión

La implementación de AAA con TACACS+ o RADIUS es un paso esencial para securizar el acceso a tus dispositivos de red Cisco. Entender las diferencias entre ambos protocolos y cómo configurarlos correctamente te permitirá construir una infraestructura de red más robusta y segura. Recuerda siempre planificar cuidadosamente tu estrategia AAA, configurar fallbacks y probar a fondo tu configuración antes de desplegarla en producción.

¡Felicidades! Ahora tienes los conocimientos para fortalecer la seguridad de tus redes Cisco con AAA.

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!