Friday, July 20, 2012

Instalación y Configuración de TACACS+ en Linux


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(devrim@tef.gazi.edu.tr)
# 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(devrim@tef.gazi.edu.tr)
# 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!

7 comentarios:

Unknown said...

Probando...

Ramphis Che said...

Cualquier inconveniente, me lo dejas saber ;)

Unknown said...

Completo articulo.

Anonymous said...

hola que tal soy Raul. podrias ayudarme con las configuraciones de TACACS+, gracias
nuevamente he provado el codigo y no me funciona:
CODIGO ARCHIVO TAC_PLUS.CFG
# Created by Devrim SERAL(devrim@tef.gazi.edu.tr)
# 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 = CISCO

# 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

# End config file
#------------------
#grupos de SCCPERU
#-------------------
group = administradores {
default service = permit
}

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

user = adm1 {
login = cleartext consorcio1
#member = sysadmin
member = administradores
}
user = soporte1 {
login = cleartext consorcio2
#member = sysadmin
member = soporte
}
user = $enable$ {
login = cleartext consorcio
#member = sysadmin

}

CODIGO ROUTER:
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname ROUTER
!
boot-start-marker
boot-end-marker
!
enable secret 5 $1$5RZ2$fWYABQG61wdX05FU0Wf06.
!
aaa new-model
!
!
aaa authentication login access1 group tacacs+ local
aaa authentication enable default group tacacs+ enable
aaa authorization console
aaa authorization config-commands
aaa authorization commands 1 default group tacacs+ none
aaa authorization commands 15 default group tacacs+ none
!
!
aaa session-id common
memory-size iomem 5
ip cef
!
no ip domain lookup
ip domain name lab.local
ip auth-proxy max-nodata-conns 3
ip admission max-nodata-conns 3
!
multilink bundle-name authenticated
!

username soportelocal password 0 consorcio
archive
log config
hidekeys
!

interface FastEthernet0/0
ip address 10.77.253.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
!

ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!

tacacs-server host 10.77.253.2
tacacs-server key CISCO
!
control-plane
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
login authentication access1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
line vty 0 4
login authentication access1
!
!
end

Anonymous said...

hola, me llamo raul, acabo te montar un servidor tacacs, pero me estoy complicando en la creacion de un usuario con permisos limitados. ¡me podrias ayudar?

lo que deseo hacer es un usuario que solo pueda usar estos comandos:

enable
config ter
interface fastethernet NUM/NUM
switchport trunk encapsulation dot1q
switchport trunk native vlan NUMERO-VLAN
switchport mode trunk
switchport voice vlan NUMERO-VLAN
srr-queue bandwidth share 10 10 60 20
srr-queue bandwidth shape 10 0 0 0
mls qos trust cos
auto qos voip trust
spanning-tree portfast
shutdown
no shutdown

Gracias por tu ayuda.
Raul
correo hermano_hl@hotmail.com

Ing. Lenin Vasquez said...

Seria bueno que tambien publicaras un video tutorial, con los pasos, saludos hermano

Anonymous said...

Hola la configuración que menciona mas arriba falta crear los grupos de autenticación, les dejo un ejemplo

group = sysadmin { service = exec { priv-lvl = 15 }}

Post a Comment