Instalación y configuración de TACACS + con Cisco Router en Debian 8 Jessie


La tecnología actual depende en gran medida del equipo de red y de la configuración adecuada de ese equipo de red. Los administradores tienen la tarea de garantizar que los cambios de configuración no solo se prueben a fondo antes de la implementación, sino también que los cambios de configuración los realicen personas autorizadas para realizar cambios, así como asegurarse de que los cambios se registren.

Este principio de seguridad se conoce como AAA (Triple-A) o Autenticación, Autorización y Contabilidad. Hay dos sistemas muy destacados que ofrecen la funcionalidad AAA para que los administradores aseguren el acceso a los dispositivos y las redes a las que sirven.

RADIUS (Servicio de usuario de acceso telefónico de acceso remoto) y TACACS + (Terminal Access Controller Access-Control System Plus).

Radius se utiliza tradicionalmente para autenticar a los usuarios para acceder a la red, lo que contrasta con TACACS en que TACACS se utiliza tradicionalmente para la administración de dispositivos. Una de las grandes diferencias entre estos dos protocolos es la capacidad de TACACS de separar las funciones AAA en funciones independientes.

El beneficio de la separación TACACS de las funciones AAA es que se puede controlar la capacidad del usuario para ejecutar ciertos comandos. Esto es muy ventajoso para las organizaciones que desean proporcionar al personal de redes u otros administradores de TI diferentes privilegios de comando a un nivel muy granular.

Este artículo le explicará cómo configurar un sistema Debian para que actúe como un sistema TACACS +.

  1. Debian 8 installed and configure with network connectivity. Please read this article on how to install Debian 8
  2. Cisco network switch 2940 (Most other Cisco devices will work as well but commands on the switch/router may vary).

Instalación del software TACACS + en Debian 8

El primer paso para configurar este nuevo servidor TACACS será adquirir el software de los repositorios. Esto se logra fácilmente con el uso del comando "apt".

# apt-get install tacacs+

El comando anterior instalará e iniciará el servicio del servidor en el puerto 49. Esto se puede confirmar con varias utilidades.

# lsof -i :49
# netstat -ltp | grep tac

Estos dos comandos deben devolver una línea que indique que TACACS está escuchando en el puerto 49 de este sistema.

En este punto, TACACS está escuchando conexiones en esta máquina. Ahora es el momento de configurar el servicio y los usuarios de TACACS.

Configuración de usuarios y servicios TACACS

Por lo general, es una buena idea vincular servicios a direcciones IP específicas si el servidor tiene varias direcciones. Para realizar esta tarea, las opciones predeterminadas del demonio se pueden modificar para especificar una dirección IP.

# nano /etc/default/tacacs+

Este archivo especifica todas las configuraciones del demonio que debe iniciar el sistema TACACS. La instalación predeterminada solo especificará el archivo de configuración. Al agregar un argumento "-B" a este archivo, se puede usar una dirección IP específica para que TACACS escuche.

DAEMON_OPTS="-C /etc/tacacs+/tac_plus.conf " - Original Line
DAEMON_OPTS="-C /etc/tacacs+/tac_plus.conf -B X.X.X.X " - New line, where X.X.X.X is the IP address to listen on

Nota especial en Debian: por alguna razón, intentar reiniciar el servicio TACACS + para leer las nuevas opciones del demonio no tiene éxito (a través del servicio tacacs_plus restart).

El problema aquí parece ser cuando TACACS se inicia a través del script de inicio, el PID se establece estáticamente en "PIDFILE u003d/var/run/tac_plus.pid"; sin embargo, cuando "-B XXXX" se especifica como una opción de demonio, el nombre del archivo pid se cambia a “/var/run/tac_plus.pid.XXXX”.

No estoy totalmente seguro de si esto es un error o no, pero para combatir la situación temporalmente, uno puede configurar manualmente el PIDFILE en el script de inicio cambiando la línea a "PIDFILE u003d/var/run/tac_plus.pid.XXXX" donde XXXX es la dirección IP que TACACS debe escuchar y luego iniciar el servicio con:

# service tacacs_plus start

Al reiniciar el servicio, el comando lsof se puede usar nuevamente para confirmar que el servicio TACACS está escuchando en la dirección IP correcta.

# lsof -i :49

Como se vio arriba, TACACS está escuchando en una dirección IP en una dirección IP específica como se establece en el archivo de valores predeterminados de TACACS arriba. En este punto, es necesario crear usuarios y conjuntos de comandos específicos.

Esta información es administrada por otro archivo: "/etc/tacacs+/tac_plus.conf". Abra este archivo con un editor de texto para realizar las modificaciones apropiadas.

# nano /etc/tacacs+/tac_plus.conf

Este archivo es donde deben residir todas las especificaciones de TACACS (permisos de usuario, listas de control de acceso, claves de host, etc.). Lo primero que debe crearse es una clave para los dispositivos de red.

Hay mucha flexibilidad en este paso. Se puede configurar una sola clave para todos los dispositivos de red o se pueden configurar varias claves por dispositivo. La opción depende del usuario, pero esta guía utilizará una sola clave por simplicidad.

key = "super_secret_TACACS+_key"

Una vez que se ha configurado una clave, se deben construir grupos que determinen los permisos que se asignarán a los usuarios más adelante. La creación de grupos facilita la delegación de permisos. A continuación se muestra un ejemplo de asignación de derechos de administrador completos.

group = admins {
        default service = permit
        service = exec {
                priv-lvl = 15
        }
}
  1. The group name is determined by the line “group = admins” with admins being the group name.
  2. The “default service = permit” line indicates that if a command is not explicitly denied, then allow it implicitly.
  3. The “service = exec { priv-lvl = 15 }” allows privilege level 15 in exec mode on a Cisco device (privilege level 15 is the highest on Cisco equipment).

Ahora es necesario asignar un usuario al grupo de administración.

user = rob {
       member = admins
       login = des mjth124WPZapY
}
  1. The “user = rob” stanza allows a user-name of rob to access some resource.
  2. The “member = admins” tells TACACS+ to refer to the previous group called admins for a listing of what this user is authorized to do.
  3. The final line, “login = des mjth124WPZapY” is a des encrypted password for this user to authenticate ( feel free to use a cracker to figure out this super “complex” password example)!

Importante: en general, es una buena práctica colocar contraseñas encriptadas en este archivo en lugar de texto sin formato, ya que agrega una pequeña cantidad de seguridad en caso de que alguien deba leer este archivo y no necesariamente tenga acceso.

Una buena medida preventiva para esto es al menos eliminar también el acceso de lectura mundial en el archivo de configuración. Esto se puede lograr mediante el siguiente comando:

# chmod o-r /etc/tacacs+/tac_plus.conf
# service tacacs_plus reload

En este punto, el lado del servidor está listo para conexiones desde dispositivos de red. Vayamos ahora al conmutador de Cisco y configurémoslo para que se comunique con este servidor Debian TACACS +.