Saludos estimados lectores, como el titulo de el articulo define esta guia tiene como objetivo principal mostrarles como instalar un servidor TACACS+ en Linux, como tambien mostrarles como configurar equipos cisco para que trabajen con TACACS+.

Las soluciones de control de acceso mas destacadas son RADIUS y TACACS+, ambas pueden soluciones usarse para manejar la autenticación en equipos cisco, pero para equipos cisco es muy recomendable el uso de TACACS+ sobre RADIUS, ya que este fue diseñado para adaptarse a las nuevas tecnologias en seguridad, complementando la arquitectura independiente de autenticar, autorizar y contabilizar (AAA).
Entre las diferencias que podemos encontrar al comparar RADIUS con TACACS+ podemos mencionar que:

1) TACACS+ utiliza TCP mientras RADIUS utiliza UDP.

2) RADIUS encripta solamente las contraseñas en el paquete de respuesta al acceso, TACACS+ encripta el cuerpo completo del paquete.

3) RADIUS combina autenticación y autorización, mientras TACACS+ utiliza la arquitectura AAA, permitiendo separar la autenticación, la autorización y la contabilidad.

4) RADIUS no permite al usuario el control de los comandos que pueden ser ejecutados, en cambio TACACS+ si lo permite.
Segun la wikipedia TACACS+ es un protocolo de autenticación remota que se usa para gestionar el acceso (proporciona servicios separados de autenticación, autorización y registro) a servidores y dispositivos de comunicaciones.
TACACS+ está basado en TACACS, pero, a pesar de su nombre, es un protocolo completamente nuevo e incompatible con las versiones anteriores de TACACS.

Instalación de Tacacs+ en Centos:

Lo primero que tenemos que hacer es buscar el paquete de instalación de TACACS+ para nuestra respectiva distribución, al momento de crear esta guia todos los enlaces que verifique para descargar el paquete de TACACS+ y asi mostrarles como instalarlo de una forma generica estaban abajo, por lo tanto mientras consigo el paquete veran como lo instale en Centos.

Pueden descargar el paquete RPM desde AQUI.

Luego ejecutamos el comando siguiente para su instalación:

[root@puntolibre] # yum localinstall tac_plus-4.0.3-2.i386.rpm

El Daemon se instalara con el nombre tacacs, por lo tanto para iniciar, parar o reiniciar el servicio bastaria con:

Iniciar:  /etc/init.d/tacacs start
Parar: /etc/init.d/tacacs stop
Reiniciar: /etc/init.d/tacacs restart

Teniendo esto en cuenta, procedamos con la configuración: el archivo donde vamos a configurar todo es /etc/tacacs/tac_plus.cfg, procedemos a editarlo con nuestro editor preferido:

[root@puntolibre] # vim /etc/tacacs/tac_plus.cfg

Para nuestro ejemplo de configuración vamos a crear dos grupos, uno administrativo que tendra acceso a todos los equipos, y estara compuesto por 2 integrantes, y el grupo limitado, el cual estara compuesto por 2 integrantes más.

El archivo por defecto se veria de la siguiente manera:

# Created by Devrim SERAL([email protected])
# It’s very simple configuration file
# Please read user_guide and tacacs+ FAQ to more information to do more
# complex tacacs+ configuration files.
#
# Put your NAS key below
key = CLAVE
#
# Use /etc/passwd.loc file to do authentication
# it’s must be in passwd file format. So you must mix shadow-passwd files to do it
#
default authentication = file /etc/passwd.loc
#
# Where is the accounting records to go
#
accounting file = /var/log/tacacs.log
#
# Permit all authorization request
default authorization = permit

Para nuestro ejemplo solo bastaria con modificar la llave, la cual se le pondra tambien a los routers mas adelante.

Luego que vamos a definir es el grupo administrativo, y lo haremos de la siguiente manera:

group = administrators {
default service = permit
}

Como podemos ver le especificamos que tenga acceso a todos los servicios, luego definimos el grupo limitado, el cual solo tendra acceso a los comandos que especifiquemos:
group = limited {
default service = deny
cmd = show {
permit ip
permit interface
deny .*
}
cmd = enable {
permit .*
}
cmd = exit {
permit .*
}
}
Como podemos ver le especificamos que el grupo limited, solo tendra acceso a ejecutar el comando enable, exit, show interface y show ip, cualquier otro comando no podra ser ejecutado.
Luego procedemos a definir los usuarios:
user = ramphische {
login = cleartext contraseña1
member = administrator
}

user =  fernandoperez {
login = cleartext contraseña2
member = administrator
}

user = superman {
login = cleartext contraseña3
member = limited
}

user = batman {
login = cleartext contraseña4
member = limited
}

Tambien definimos la contraseña de el modo privilegiado de la siguiente manera:
user = $enable$ {
login = cleartext contraseña5
}
Finalmente queda el fichero de configuración de la siguiente manera:
# Created by Devrim SERAL([email protected])
# It’s very simple configuration file
# Please read user_guide and tacacs+ FAQ to more information to do more
# complex tacacs+ configuration files.
#
# Put your NAS key below
key = CLAVE
#
# Use /etc/passwd.loc file to do authentication
# it’s must be in passwd file format. So you must mix shadow-passwd files to do it
#
default authentication = file /etc/passwd.loc
#
# Where is the accounting records to go
#
accounting file = /var/log/tacacs.log
#
# Permit all authorization request
default authorization = permit


group = administrators {
default service = permit
}

group = limited {
default service = deny
cmd = show {
permit ip
permit interface
deny .*
}
cmd = enable {
permit .*
}
cmd = exit {
permit .*
}
}

user = ramphische {
login = cleartext contrasena1
member = administrator
}

user =  fernandoperez {
login = cleartext contrasena2
member = administrator
}

user = superman {
login = cleartext contrasena3
member = limited
}

user = batman {
login = cleartext contrasena4
member = limited
}

user = $enable$ {

login = cleartext contrasena5

}

Guardamos nuestro fichero y reiniciamos el servicio tacacs:

[root@puntolibre] # /etc/init.d/tacacs restart

Configuración de un Router Cisco para que trabaje con TACACS+
Lo primero que tenemos que hacer es especificarle al Router que utilice la arquitectura AAA:
Router(config)# aaa new-model
Especificamos el servidor TACACS+ y la llave anteriormente definida:

Router(config)# tacacs-server host 192.168.1.100
Router(config)# tacacs-server key CLAVE

Creamos el usuario local que podra acceder al equipo cuando el TACACS+ no este disponible, y de la misma forma la contraseña de enable, la cual tambien solo funcionara cuando el TACACS no este disponible:

Router(config)# username puntolibre password contrasena1

Router(config)# enable secret contrasena2


Creamos un metodo de autenticación llamado access1 (Puede ser cualquier otro nombre) el cual especifique que primero autentique contra el TACACS+ Server y en caso de que este no este disponible que autentique de manera local.

Router(config)# aaa authentification login access1 group tacacs+ local

Luego especificamos que para la contraseña enable tambien autentique contra el TACACS+ Server, y en caso de este no estar disponible que utilice la configurada para el modo privilegiado a nivel local.

Router(config)# aaa authentification enable default group tacacs+ enable

Luego habilitamos la autorización para los comandos de configuración y para el modo consola, y especificamos que para los privileges level 1 y 15 funcionara la autorización bajo el control de TACACS+ y que en caso de que este no este disponible que permita cualquier comando:

Router(config)# aaa authorization console
Router(config)# aaa authorization config-commands
Router(config)# aaa authorization commands 1 default group tacacs+ none
Router(config)# aaa authorization commands 15 default group tacacs+ none

Para completar el proceso vamos a configurar las lineas de consola y virtuales de manera tal que utilicen el TACACS+ Server:

Router(config)# line con 0
Router(config-line)# login authentication access1

Router(config)# line vty 0 4
Router(config-line)# login authentication access1

Finalmente guardamos nuestra configuración y ya tendremos el equipo listo para autenticar contra TACACS+, cualquier duda o inconveniente pueden comunicarse conmigo y les ayudare tan pronto pueda!