TACACS+ es un protocolo propietario de CISCO para actuar en conjunto con el framework AAA desarrollado por la misma empresa, en ese entorno TACACS+ provee las tres funciones por separado:
- Authentication
- Authorization
- Accounting
Queriendo decir con esto que provee soporte de mensajes, funciones de login con la dupla user/password, control sobre las acciones que puede realizar el usuario una vez autenticado y un log detallado de las acciones realizadas por el mismo.
CISCO provee un servidor de AAA, el Cisco Secure ACS y vamos a configurarlo:
Suponiendo que acabamos de instalarlo, usaremos la base de datos interna, nos interesa dar de alta clientes de TACACS+, grupos y usuarios rápidamente, los pasos básicos para configurarlos en Cisco Secure ACS pueden resumirse a los siguientes:
En Network Configuration damos de alta los AAA Clients, que en nuestro caso son routers CISCO, la Key es la clave que se utilizará para encriptar la información que se intercambie entre el cliente (router) y el server (Cisco Secure ACS):

Completamos haciendo click en Submit + Apply...

A continuación modificamos alguno de los grupos de usuarios que vienen configurados por defecto en la opción Group Setup, le asignamos un nombre descriptivo y aplicamos los permisos y características que necesitemos (privilege level, command authorization set, etc):

Luego creamos un usuario desde la opción User Setup, la primer clave es mandatoria y se utiliza para autenticar el usuario desde el cliente, le asignamos el grupo que creamos anteriormente y señalamos que tome todas las configuraciones desde el mismo:

NOTA: Debemos asegurarnos de configurar correctamente el ACS para que los clientes puedan comunicarse con él, de lo contrario los usuarios no autenticarán y podemos perder acceso a los clientes.
Ahora nos toca configurar los routers como clientes de TACACS+:
aaa new-model tacacs-server host 192.168.100.3 tacacs-server key celticdragon service password-encryption | Activamos el nuevo modelo de AAA para habilitar al router para trabajar con TACACS+ Le indicamos cual o cuales son los servidores de TACACS+ con los que trabajará Le proporcionamos la clave de intercambio, usamos la misma que configuramos para este host en el ACS Recomendación: Encriptamos todas las claves para que no aparezcan en texto plano en el archivo de configuración |
aaa authentication login default group tacacs+ line aaa authentication enable default group tacacs+ enable | Habilitamos el login por TACACS+, para el grupo por defecto (pueden configurarse varios en el cliente), la palabra clave line al final nos indica que en el caso de no estar disponible el servidor de TACACS+ podremos ingresar con la clave de linea Lo mismo para el modo enable usando la clave de enable como último recurso |
aaa authorization exec default group tacacs+ none aaa authorization commands 1 default group tacacs+ none aaa authorization commands 15 default group tacacs+ none | Deshabilitamos la autorización para obtener un prompt (exec) y para los comandos de nivel 1 (usuario) y nivel 15 (enable). En esta opción podríamos habilitarlo de forma que sólo autorize comandos si la autenticación fue satisfactoria u otras opciones avanzadas. Con cuidado con esta opción porque puede dejarnos sin posibilidad de configurar el router estando ya dentro del mismo porque no tenemos autorización para ejecutar algún o todos los comandos. |
enable secret goldfish line vty 0 4 password followthecow login authentication default line console 0 password followthecow login authentication default line aux 0 password followthecow login authentication default | Configuramos claves de enable y de línea. Otra vez la recomendación es encriptarlas. |
banner motd # ****************************************** * DRAGON Networks Asset * * Unauthorized access is prohibited * ****************************************** Location: Buenos Aires, AR Hostname: ARDRGNBUE0001H Status: Active Model: Cisco 7206VXR (NPE400) # | Opcionalmente ponemos un bonito banner de “bienvenida” |
El resultado:
(notar que al ingresar ya obtenemos un prompt de enable, esto lo elegimos en el ACS cuando seleccionamos acceso por defecto de nivel 15)
******************************************
* DRAGON Networks Asset *
* Unauthorized access is prohibited *
******************************************
Location: Buenos Aires, AR
Hostname: ARDRGNBUE0001H
Status: Active
Model: Cisco 7206VXR (NPE400)
Username: dave
Password:
ARDRGNBUE0001H#
En el caso de que no tengamos conectividad con el TACACS+ server:
******************************************
* DRAGON Networks Asset *
* Unauthorized access is prohibited *
******************************************
Location: Buenos Aires, AR
Hostname: ARDRGNBUE0001H
Status: Active
Model: Cisco 7206VXR (NPE400)
Password: linepassword
ARDRGNBUE0001H>ena
Password: enablepassword
ARDRGNBUE0001H#
Verificamos funcionamiento de TACACS+ habilitando el debug:
ARDRGNBUE0001H#debug tac eve
TACACS+ events debugging is on
ARDRGNBUE0001H#debug tac pack
TACACS+ packets debugging is on
ARDRGNBUE0001H#debug tac authentication
TACACS+ authentication debugging is on
ARDRGNBUE0001H#
Y esto es lo que vemos cuando un usuario pide entrar al equipo y se le solicita la información de login:
Nov 20 06:36:06.586: TPLUS: Queuing AAA Authentication request 31 for processing
Nov 20 06:36:06.598: TPLUS: processing authentication start request id 31
Nov 20 06:36:06.602: TPLUS: Authentication start packet created for 31()
Nov 20 06:36:06.606: TPLUS: Using server 192.168.100.3
Nov 20 06:36:06.618: TPLUS(0000001F)/0/NB_WAIT/65CEBF58: Started 5 sec timeout
Nov 20 06:36:06.626: TPLUS(0000001F)/0/NB_WAIT: socket event 2
Nov 20 06:36:06.630: T+: Version 192 (0xC0), type 1, seq 1, encryption 1
Nov 20 06:36:06.630: T+: session_id 3287134433 (0xC3EDB0E1), dlen 25 (0x19)
Nov 20 06:36:06.634: T+: type:AUTHEN/START, priv_lvl:1 action:LOGIN ascii
Nov 20 06:36:06.634: T+: svc:LOGIN user_len:0 port_len:4 (0x4) raddr_len:13 (0xD) data_len:0
Nov 20 06:36:06.638: T+: user:
Nov 20 06:36:06.638: T+: port: tty3
Nov 20 06:36:06.638: T+: rem_addr: 192.168.100.1
Nov 20 06:36:06.642: T+: data:
Nov 20 06:36:06.642: T+: End Packet
Nov 20 06:36:06.646: TPLUS(0000001F)/0/NB_WAIT: wrote entire 37 bytes request
Nov 20 06:36:06.646: TPLUS(0000001F)/0/READ: socket event 1
Nov 20 06:36:06.650: TPLUS(0000001F)/0/READ: Would block while reading
Nov 20 06:36:06.706: TPLUS(0000001F)/0/READ: socket event 1
Nov 20 06:36:06.706: TPLUS(0000001F)/0/READ: read entire 12 header bytes (expect 16 bytes data)
Nov 20 06:36:06.710: TPLUS(0000001F)/0/READ: socket event 1
Nov 20 06:36:06.710: TPLUS(0000001F)/0/READ: read entire 28 bytes response
Nov 20 06:36:06.714: T+: Version 192 (0xC0), type 1, seq 2, encryption 1
Nov 20 06:36:06.714: T+: session_id 3287134433 (0xC3EDB0E1), dlen 16 (0x10)
Nov 20 06:36:06.718: T+: AUTHEN/REPLY status:4 flags:0x0 msg_len:10, data_len:0
Nov 20 06:36:06.718: T+: msg: Username:
Nov 20 06:36:06.722: T+: data:
Nov 20 06:36:06.722: T+: End Packet
Nov 20 06:36:06.722: TPLUS(0000001F)/0/65CEBF58: Processing the reply packet
Nov 20 06:36:06.726: TPLUS: Received authen response status GET_USER (7)
Do you want more?