AAA – Authentication, Authorization, Accounting
Authentication: ¿Quién es el usuario?
Authorization: : ¿Qué puede hacer el usuario?
Accounting: : ¿Que hizo el usuario?
Los switches cisco utilizan dos protocolos para la comunicación con los servidores AAA
- TACACS+: Protocolo propietario de Cisco que separa las funciones AAA. Trabaja de forma segura encriptando el tráfico TCP por el puerto 49. Cada instrucción o comando que se introduce en el equipo, el switch siempre pregunta al servidor si permite hacer la acción del comando introducida.
- Radius: Protocolo abierto que combina autenticación y autorización en un solo recurso; la comunicación usa los puertos UDP 1812 y 1813 (contabilidad), pero no está completamente encriptada.
Configuración:
Paso 1. Habilite AAA en el switch.
Switch(config)# aaa new-model
Paso 2. Definir por lo menos un usuario local
Utilice nombres de usuario y contraseñas configurados localmente como último recurso de acceso:
Switch(config)# username username password password
Paso 3. Defina la fuente de autenticación.
Primero, defina cada servidor junto con su contraseña secreta compartida:
Switch(config)# radius-server host { hostname| ip-address } [ key string]
Switch(config)# tacacs-server host { hostname | ip-address} [ key string]
Luego defina un nombre de grupo que contendrá una lista de servidores:
Switch(config)# aaa group server { radius | tacacs+} group-name
Switch(config-sg)# server ip-address
Paso 4: Defina una lista de métodos de autenticación para probar.
Puede enumerar los métodos de autenticación de inicio de sesión al switch, debe asignar un nombre descriptivo al método o utilizando el método "default" sin nombre. Enumere cada método o tipo de protocolo en el orden en que debe ser probado. Si ninguno de los servidores del primer método responde, el conmutador probará los servidores en el siguiente método listado.
Use el siguiente comando de configuración global para definir una lista de métodos:
Switch(config)# aaa authentication login { default | list-name} method1 [ method2 ...]
Aquí los métodos se refieren a las siguientes palabras clave:
- tacacs+: se prueba cada uno de los servidores TACACS + configurados en el switch, en el orden en que se configuró.
- radius: se prueba cada uno de los servidores RADIUS configurados en el conmutador, en el orden en que se configuró.
- local: las credenciales del usuario se comparan con todos los comandos de nombre de usuario configurados en el conmutador local.
- line: las contraseñas de línea autentican a cualquier usuario conectado. No se pueden usar nombres de usuario.
Paso 5. Aplique una lista de métodos a las lineas vty o consola
Switch(config)# line console | vty [number-line]
Switch(config-line)# login authentication { default | list-name}
Paso 6. Definir permisos o autorización de los usuarios:
Definamos una lista de métodos de autorización que se probarán en secuencia utilizando el siguiente comando de configuración global:
Switch(config)# aaa authorization { commands | config-commands | configuration | exec | network | reverse-access} { default | list-name} method1 [ method2 ...]
Luego, puede aplicar una lista de métodos de autorización a una linea vty/console. Los usuarios que accedan al switch a través de esa línea estarán sujetos a autorización. Use el siguiente comando de configuración de línea:
Switch(config-line)# authorization { commands level | exec | reverse-access} { default | list-name}
Si no usa este comando, el grupo predeterminado se usa para todas las líneas. Para configurar un interruptor para usar la autorización AAA para todas las líneas, ingrese lo siguiente:
Switch(config)# aaa authorization exec default group group-name none
Paso 7.- definir una lista de métodos que proporcione una secuencia de métodos accounting utilizando el siguiente comando de configuración global:
Switch(config)# aaa accounting { system | exec | commands level} { default | list-name} { start-stop | stop-only | wait-start | none} Switch(config)# aaa accounting { system | exec | commands level} { default | list-name} { start-stop | stop-only |wait-start | none} method1 [ method2 ...]
Aplicar la lista de métodos de accounting a una línea específica (consola o vty)
Switch(config-line)# accounting { commands level | connection | exec} { default | list-name}
Ejemplo:
Switch(config)# aaa new-model
Switch(config)# username jcristobal password MyPassword
Switch(config)# tacas-server host 10.1.1.1 key MyKey
Switch(config)# tacas-server host 10.1.1.2 key MyKey
Switch(config)# aaa group server tacacs+ MyAuthServers
Switch(config-sg)# server 10.1.1.1
Switch(config-sg)# server 10.1.1.2
Switch(config)# aaa authentication login MyMethodAuth group MyAuthServers local
Switch(config)# aaa authorization exec MyMethodAuth if-authenticated
Switch(config)# aaa authorization commands 15 MyMethodAuth if-authenticated
Switch(config)# aaa accounting exec MyMethodAuth start-stop group MyAuthServers
Switch(config)# aaa accounting commands 15 MyMethodAuth start-stop group MyAuthServers
Switch(config)# line vty 0 15
Switch(config-line)# login authentication MyMethodAuth
Switch(config-line)# authorization commands 15 MyMethodAuth
Switch(config-line)# authorization exec MyMethodAuth
Switch(config-line)# accounting commands 15 MyMethodAuth
Switch(config-line)# accounting exec MyMethodAuth