Servidor TACACS+ para AAA con Cisco y Juniper

Topologia tacacs

En la entrada de hoy vamos a ver como instalar y configurar un servidor TACACS+ (Terminal Access Controller Access Control System) para implementarlo como solución de control de acceso a nuestros dispositivos de red, por lo que además veremos cómo configurar Routers Cisco y Juniper para que utilicen este servicio para la Autenticación, Autorización y Auditoria (AAA).

Comenzamos instalando Tacacs+, en una máquina con Ubuntu Server 14.04, con el siguiente comando:

alberto@tacacs:~$ sudo apt-get install tacacs+

Para configurar el servicio editamos el fichero /etc/tacacs+/tac_plus.conf

alberto@tacacs:~$ sudo nano /etc/tacacs+/tac_plus.conf

De momento solo vamos a configurar por un lado, donde se ubicará el fichero de accounting y muy importante, definimos la key, la clave compartida entre el servidor Tacacs+ y los equipos que se autentican contra él. Como vemos en el ejemplo de abajo, hemos definido el fichero para accountig en «/var/log/tac_plus.acct» y para la key la hemos configurado como «12345»:

# Define where to log accounting data, this is the default.

accounting file = /var/log/tac_plus.acct

# This is the key that clients have to use to access Tacacs+

key = 12345

A continuación vamos a ver como configurar un Router Cisco y un Router Juniper para que utilicen el servidor Tacacs+ para AAA. Veremos tanto la parte que se configuraría en los Routers, como la parte que se configurará en el servidor Tacacs+

Configuración en Router CISCO

Para realizar la configuración en el Router Cisco, seguimos los siguientes pasos:

Entramos al modo de configuración global y definimos la IP y Key de nuestro servidor Tacacs+:

vios1#configure terminal 
Enter configuration commands, one per line.  End with CNTL/Z.
vios1(config)#tacacs server tacacs+
vios1(config-server-tacacs)#address ipv4 192.168.50.2
vios1(config-server-tacacs)#key 12345
vios1(config-server-tacacs)#exit

Creamos un usuario local para poder utilizarlo en caso de no estar disponible el servidor Tacacs+

vios1(config)#username admin password admin

Habilitamos la triple AAA

vios1(config)#aaa new-model

Definimos que la autenticación se haga por Tacacs+ y en caso de no haber servidor Tacacs+ disponible, que se autentique mediante el usuario local. También definimos que la autenticación del modo enable se realice por Tacacs+:

vios1(config)#aaa authentication login default group tacacs+ local
vios1(config)#aaa authentication enable default group tacacs+ enable

Definimos la autorización, autorizamos comandos de nivel 1 y 15 para Tacacs+:

vios1(config)#aaa authorization commands 1 default group tacacs+ none 
vios1(config)#aaa authorization commands 15 default group tacacs+ none

Definimos el accouting de los eventos que queramos registrar:

vios1(config)#aaa accounting exec default start-stop group tacacs+
vios1(config)#aaa accounting commands 1 default start-stop group tacacs+
vios1(config)#aaa accounting commands 15 default start-stop group tacacs+
vios1(config)#aaa accounting network default start-stop group tacacs+
vios1(config)#aaa accounting connection default start-stop group tacacs+
vios1(config)#aaa accounting system default start-stop group tacacs+

Establecemos el método de autenticación para las lineas vty y guardamos:

vios1(config)#line vty 0 4
vios1(config-line)#login  authentication default
vios1(config)#end
vios1#write
Building configuration...
[OK]
vios1#

Con esto tendríamos configurada la parte del Router Cisco, ahora pasamos a configurar en el servidor Tacacs+.

Configuración en Tacacs+

Hasta ahora hemos configurado la parte correspondiente al Router Cisco, ahora vamos a configurar en el servidor Tacacs+ todo lo necesario para que la AAA funcione correctamente con el Router Cisco. Vamos a definir dos grupos, uno de ellos con privilegios limitados que llamaremos «readonly» y otro con todos los privilegios que llamaremos «admins».

En el grupo «readonly» definimos una serie de parámetros. Por un lado ponemos un deny por defecto y luego permitimos la ejecución de una serie de comandos, en concreto se esta permitiendo los comandos «show», «enable», «exit»:

#Definimos el grupo de solo lectura
group = readonly {
        default service = deny
        cmd = show {
        permit .*
        }
        cmd = enable {
        permit .*
        }
        cmd = exit {
        permit .*
        }
}

En el grupo «admins» como vamos a permitir todo, bastará con configurarle un permit por defecto:

#Definimos el grupo de administradores con control total
group = admins {
        default service = permit
}

Ahora definimos los usuarios. Hemos definido dos usuarios «alberto» y «pepe», ha cada uno de ellos le hemos configurado los siguientes parámetros:

login: Es la contraseña con la que se autenticará el usuario

enable: es la contraseña enable para el usuario. (Recordar que en el Router configuramos que el modo enable se autenticara con Tacacs+)

member: es el grupo al que pertenecerá el usuario y que determinará la autorización del usuario a la hora de tener unos privilegios u otros.

#Definimos usuarios

user = alberto {
        login = cleartext admin
        enable = cleartext cisco
        member = admins
}
user = pepe {
        member = readonly
        login = cleartext 1234
        enable = cleartext class
}

Y reiniciamos el servicio:

alberto@tacacs:~$ sudo service tacacs_plus restart 
 * Restarting TACACS+ authentication daemon tacacs+                              [ OK ] 
alberto@tacacs:~$

En este punto tenemos el servicio 100% funcional para el Router Cisco. A continuación vamos a configurar lo necesario para dejarlo funcionando también en el Router Juniper.

Configuración en Router Juniper

Establecemos el método de autenticación primero por Tacacs+ y luego por usuario local:

alberto@vsrx1# set system authentication-order tacplus                                             

[edit]
alberto@vsrx1# set system authentication-order password 

[edit]

Definimos el servidor Tacacs+ que vamos a utilizar (192.168.50.2). En el ejemplo hemos definido los siguientes parámetros:

secret: obligatorio, es la key que tenemos configurada en el servidor (12345) y que es compartida por ambos.

timeout: es opcional, es el tiempo de inactividad antes de tirar la sesión.

single-conection: es opcional, estamos indicando que permita varias peticiones a través de una única conexión TCP

alberto@vsrx1# set system tacplus-server 192.168.50.2 secret 12345 

[edit]
alberto@vsrx1# set system tacplus-server 192.168.50.2 timeout 10 

[edit]
alberto@vsrx1# set system tacplus-server 192.168.50.2 single-connection 

[edit]

Definimos el accounting de los eventos a registrar:

alberto@vsrx1# set system accounting events login 

[edit]
alberto@vsrx1# set system accounting events change-log 

[edit]
alberto@vsrx1# set system accounting events interactive-commands 

[edit]
alberto@vsrx1# set system accounting destination tacplus 

[edit]

Ahora vamos a crear dos clases, que nos servirán para aplicar la autorización a los diferentes usuarios, ya sean los que se autentiquen de manera local, como los que se autentican a través del Tacacs+.

Primero vamos a crear una clase con privilegios limitados, denominada «read-only-local», a la que solo daremos permisos de visualización:

alberto@vsrx1# set system login class read-only-local idle-timeout 10 

[edit]
alberto@vsrx1# set system login class read-only-local permissions view 

[edit]
alberto@vsrx1# set system login class read-only-local permissions view-configuration 

[edit]

Y ahora crearemos una clase con todos los privilegios, denominada «super-user-local», a la que daremos permisos para todo:

alberto@vsrx1# set system login class super-user-local idle-timeout 10 

[edit]
alberto@vsrx1# set system login class super-user-local permissions all 

[edit]

Creamos un usuario y password local («admin» en el ejemplo) que solo se usará en caso de no estar disponible el servidor Tacacs+:

alberto@vsrx1# set system login user admin authentication plain-text-password        
New password:
Retype new password:

[edit]

Al usuario local le aplicamos la clase «super-user-local», para que herede los privilegios de esa clase, en este caso este usuario tendrá permisos para todo :

alberto@vsrx1# set system login user admin uid 2000 

[edit]
alberto@vsrx1# set system login user admin class super-user-local

[edit]

Ahora vamos a crear los usuarios que proporcionarán la autorización a los usuarios autenticados por Tacacs+.  En el ejemplo vamos a crear dos usuarios, el usuario «remote» al que le aplicaremos la clase «super-user-local» y el usuario «readonly» al que le aplicaremos la clase «read-only-local». A estos usuarios no les configuraremos password, puesto que solo los utilizaremos para proporcionar la autorización a los usuarios autenticados con el servidor Tacacs+.

Creamos el usuario «remote» le aplicamos la clase «super-user-local», para que tenga todos los privilegios:

alberto@vsrx1# set system login user remote uid 2001 

[edit]
alberto@vsrx1# set system login user remote class super-user-local 

[edit]

Creamos el usuario «readonly» le aplicamos la clase «read-only-local», para que tenga privilegios limitados a visualización:

alberto@vsrx1# set system login user readonly uid 2002 

[edit]
alberto@vsrx1# set system login user readonly class read-only-local 

Y hacemos commit de los cambios:

alberto@vsrx1# commit 
commit complete

[edit]
alberto@vsrx1#

Con esto tendriamos configurada la parte del Router Juniper. A continuación pasamos a configurar la parte del servidor Tacacs+.

Configuración en Tacacs+

Durante la configuración del servidor Tacacs+ para el Router Cisco, ya hemos configurados los usuarios y grupos, por lo que ahora tan solo vamos a añadir  el servicio «junos-exec» y le indicamos el «local-user-name» que será el usuario local del cual vamos a heredar los privilegios.

En el caso del grupo «readonly», le indicamos el usuario «readonly»:

#Definimos el grupo de solo lectura
group = readonly {
        default service = deny
        cmd = show {
        permit .*
        }
        cmd = enable {
        permit .*
        }
        cmd = exit {
        permit .*
        }
        service = junos-exec {
        local-user-name = readonly
        }
}

Y en el caso del grupo «admins», le indicamos el usuario «remote»:

#Definimos el grupo de administradores con control total
group = admins {
        default service = permit
        service = junos-exec {
        local-user-name = remote
}
}

De esta manera nosotros nos autenticamos con los usuarios del servidor Tacacs+, que será nuestro usuario de inicio de sesión. Sin embargo para la autorización, le indicamos uno de los usuarios locales que previamente habiamos configurado en el Router Juniper, y el usuario autenticado por Tacacs+ hereda los privilegios del usuario local hacia el que apunta.
Ya solo nos quedaría reiniciar el servicio:

alberto@tacacs:~$ sudo service tacacs_plus restart 
 * Restarting TACACS+ authentication daemon tacacs+                              [ OK ] 
alberto@tacacs:~$

Y ya tenemos el servicio funcional para el Router Juniper también.

A continuación os dejo completo el fichero de configuración /etc/tacacs+/tac_plus.conf

 
# Define where to log accounting data, this is the default.

accounting file = /var/log/tac_plus.acct

# This is the key that clients have to use to access Tacacs+

key = 12345

# Use /etc/passwd file to do authentication

#default authentication = file /etc/passwd
#default authentication = pam pap

#Definimos el grupo de solo lectura
group = readonly {
        default service = deny
        cmd = show {
        permit .*
        }
        cmd = enable {
        permit .*
        }
        cmd = exit {
        permit .*
        }
        service = junos-exec {
        local-user-name = readonly
        }
}

#Definimos el grupo de administradores con control total
group = admins {
        default service = permit
        service = junos-exec {
        local-user-name = remote
}
}

#Definimos usuarios

user = alberto {
        login = cleartext admin
        enable = cleartext cisco
        member = admins
}
user = pepe {
        member = readonly
        login = cleartext 12345
        enable = cleartext class
}
# Much more features are availables, like ACL, more service compatibilities,
# commands authorization, scripting authorization.
# See the man page for those features.

3 Respuestas to “Servidor TACACS+ para AAA con Cisco y Juniper”


  1. 1 David Quevedo (@dquevedo1978) 10/15/2015 a las 13:39

    Gracias por tu aportación desinteresada. Me ha sido de mucha utilidad.

  2. 2 Hector 05/01/2018 a las 17:02

    excelente aportacion. saludos

  3. 3 Anónimo 09/11/2020 a las 0:31

    Donde puedo encontrar la iso de un servidor para Gns3


Deja un comentario




TELDAT CTI
VCA-DCV
JNCIA
CCNA

Introduce tu correo electrónico y recibe todas las actualizaciones

Únete a otros 160 suscriptores
febrero 2015
L M X J V S D
 1
2345678
9101112131415
16171819202122
232425262728  

Blog Stats

  • 703.816 Visitas
Creative Commons