Monday, November 19, 2007

TACACS+

Terminal Access Controller Access Control System


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?

No comments: