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).
- Configuración para Cisco
- Configuración para Juniper
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.
Gracias por tu aportación desinteresada. Me ha sido de mucha utilidad.
excelente aportacion. saludos
Donde puedo encontrar la iso de un servidor para Gns3