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

By Published On: 20 de julio de 2012Categories: GNU-Linux, Redes, Tutoriales7 Comments

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!

7 Comments

  1. Unknown 4 de diciembre de 2012 at 20:31 - Reply

    Probando…

  2. Test 4 de diciembre de 2012 at 20:32 - Reply

    Cualquier inconveniente, me lo dejas saber 😉

  3. Unknown 28 de diciembre de 2012 at 14:31 - Reply

    Completo articulo.

  4. Anonymous 25 de febrero de 2013 at 04:01 - Reply

    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([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 = 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

  5. Anonymous 26 de febrero de 2013 at 03:09 - Reply

    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 [email protected]

  6. Ing. Lenin Vasquez 14 de diciembre de 2013 at 22:01 - Reply

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

  7. Anonymous 20 de enero de 2014 at 16:01 - Reply

    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 }}

Leave A Comment