Autenticación RADIUS y TACACS+ en NMIS9
¿Qué es RADIUS?
RADIUS, Remote Authentication Dial-In User Service, es un protocolo cliente-servidor sobre UDP para autenticación, autorización y accounting de acceso. Un cliente, llamado NAS, envía las credenciales al servidor RADIUS, que responde con aceptación o rechazo. Es ampliamente usado para acceso a red, VPN y administración de equipos.
¿Qué es TACACS+?
TACACS+, Terminal Access Controller Access-Control System Plus, es un protocolo de Cisco sobre TCP puerto 49 que separa autenticación, autorización y accounting en operaciones independientes. Es habitual en administración de dispositivos de red por su control granular de comandos.
Arquitectura de autenticación de NMIS9
El demonio omkd recibe el inicio de sesión, evalúa los métodos definidos en opCommon.json en orden, y al primer éxito busca al usuario en la tabla interna de autorización para asignar privilegio y grupos. Si el usuario autenticado no existe en la tabla, aplica el privilegio por defecto si está configurado, o niega el acceso.
Flujo completo de autenticación
Si un método falla, el proceso continúa con el siguiente. Si todos fallan, el acceso se niega. El código registra el resultado de cada intento en auth.log.
2. Prerrequisitos
2.1. Del lado del cliente: datos a solicitar al administrador AAA
La columna Uso indica si NMIS9 realmente consume el dato. Los marcados como referencia aplican a la infraestructura AAA o a la red, no a la configuración de NMIS.
Parámetro | Para qué sirve | Uso en NMIS9 |
IP o FQDN del servidor RADIUS | Destino de autenticación RADIUS | auth_radius_server |
IP o FQDN del servidor TACACS+ | Destino de autenticación TACACS+ | auth_tacacs_server |
Puerto | Puerto del servicio | RADIUS 1812; TACACS+ 49 |
Shared Secret | Clave compartida NMIS y servidor | auth_*_secret |
Usuario válido | Prueba positiva | Validación |
Usuario inválido | Prueba negativa | Validación |
PAP habilitado | RADIUS en NMIS usa PAP | Crítico para RADIUS |
CHAP, MSCHAP, MSCHAPv2 | Otros métodos de credencial | No soportado |
Certificados (TLS, RadSec) | Cifrado fuerte de transporte | No soportado |
NAS-Identifier | Identificador del cliente AAA | No usado por NMIS |
Registrar IP del NMIS como cliente o NAS | El servidor debe conocer al NMIS | Referencia (servidor AAA) |
Reglas de firewall y ACL | Permitir el tráfico | UDP 1812; TCP 49 |
Alta disponibilidad y failover | Continuidad del servicio AAA | TACACS+ secundario; RADIUS vía VIP |
Versiones soportadas | Compatibilidad | Ver sección 13 |
Advertencia: si el RADIUS está sobre Microsoft NPS o Active Directory con política que solo permite MSCHAPv2, el login fallará. NMIS envía PAP. La política del RADIUS debe permitir PAP para el cliente NMIS. |
2.2. Del lado del servidor NMIS
Elemento | Cómo verificar | Comentario |
Versión NMIS | cat /usr/local/nmis9/conf/Config.nmis | grep -i version, o la GUI | TACACS+ secundario requiere build de abr-2025 o posterior |
Versión Perl | perl -v | Misma con la que corre omkd |
Demonio omkd | systemctl status omkd | Sirve la GUI y la autenticación |
Apache | httpd -v o apache2 -v | En NMIS9 omkd no depende de Apache para login |
Módulos Perl | perl -MAuthen::Simple::RADIUS -e 1 | Ver sección 3 |
Conectividad al AAA | nc -vz host puerto | UDP para RADIUS, TCP para TACACS+ |
Firewall local | firewall-cmd --list-all o iptables -L | Salida hacia el AAA |
SELinux | getenforce | Si está enforcing, validar reglas de red |
NTP | timedatectl | Hora sincronizada para correlación de logs |
3. Instalación de dependencias
Método | Módulo Perl | Incluido por defecto |
radius | Authen::Simple::RADIUS | No siempre |
tacacs | Authen::TacacsPlus | No siempre |
Fuente: lib/NMISNG/Auth.pm (require de cada módulo). (Referencia: OMK-7103)
Nota: el instalador incluye en Debian el paquete libauthen-simple-radius-perl, pero el listado de RHEL/CentOS puede omitir perl-Authen-Radius. Por eso se debe validar e instalar explícitamente antes de habilitar el método. (Referencia: OMK-7103) |
3.1. Validar si están instalados
perl -MAuthen::Simple::RADIUS -e 'print "RADIUS OK\n"'
perl -MAuthen::TacacsPlus -e 'print "TACACS OK\n"'3.2. Instalar
Debian y Ubuntu, paquete del sistema o CPAN:
sudo apt-get update
sudo apt-get install -y libauthen-simple-radius-perl # RADIUS
sudo apt-get install -y build-essential cpanminus
sudo cpanm Authen::TacacsPlus # TACACS+RHEL y CentOS:
sudo yum install -y perl-Authen-Radius perl-CPAN gcc # base RADIUS
sudo cpan Authen::Simple::RADIUS
sudo cpan Authen::TacacsPlus3.3. Actualizar
sudo cpanm Authen::Simple::RADIUS Authen::TacacsPlus # reinstala la última versión3.4. Validar funcionamiento
Tras configurar el método (sección 5), un intento de login real y la revisión de auth.log confirman la carga del módulo. Si falta, el log muestra el error exacto descrito en la sección 10.
Nota: Para entornos desconectados (sin internet), transfiera los paquetes o use un espejo CPAN local, según el procedimiento oficial de instalación en entornos air-gapped. |
4. Respaldo previo
Antes de cualquier cambio se generan respaldos con fecha. El respaldo permite revertir en segundos si la autenticación deja de funcionar, lo que es crítico porque un error de sintaxis en la configuración puede dejar a todos los usuarios fuera de la GUI.
FECHA=$(date +%Y%m%d)
cp /usr/local/omk/conf/opCommon.json /usr/local/omk/conf/opCommon.json.bkp_$FECHA
cp /usr/local/nmis9/conf/Config.nmis /usr/local/nmis9/conf/Config.nmis.bkp_$FECHA
cp /usr/local/nmis9/conf/Users.nmis /usr/local/nmis9/conf/Users.nmis.bkp_$FECHAAdvertencia: conserve al menos una cuenta administrativa local (htpasswd) funcional y conocida antes de cambiar el método primario. Es su vía de recuperación si el servidor AAA o la configuración fallan. |
5. Configuración de los métodos de autenticación
Nota: Config.nmis se mantiene por compatibilidad y para autorización, pero omkd lee los métodos desde /usr/local/omk/conf/opCommon.json. Es recomendado validar con un parser JSON el archivo opCommon antes de reiniciar los daemons correspondientes. |
5.1. Claves de configuración
Clave | Descripción | Ejemplo |
auth_method_1 | Primer método evaluado | radius |
auth_method_2 | Segundo método (failback) | tacacs |
auth_method_3 | Tercer método (failback) | htpasswd |
auth_radius_server | Servidor RADIUS host:port | 10.10.0.20:1812 |
auth_radius_secret | Secreto RADIUS | S3cr3t1 |
auth_tacacs_server | Servidor TACACS+ primario host:port | 10.10.0.30:49 |
auth_tacacs_secret | Secreto TACACS+ primario | T@cacsKey |
auth_tacacs_server_secondary | Servidor TACACS+ secundario (opcional) | 10.10.0.31:49 |
auth_tacacs_secret_secondary | Secreto TACACS+ secundario (opcional) | T@cacsKey2 |
auth_htpasswd_file | Archivo de usuarios locales | <omk_conf>/users.dat |
auth_default_privilege | Privilegio por defecto si el usuario no existe | guest o vacío |
auth_default_groups | Grupos por defecto | all o vacío |
auth_lockout_after | Bloqueo tras N fallos | 5 |
Advertencia: RADIUS no expone timeout, retries ni servidor secundario. El código de NMIS9 solo pasa host, secret y puerto a Authen::Simple::RADIUS. No configure parámetros que no existen. Para RADIUS, la redundancia se logra apuntando auth_radius_server a una IP virtual o balanceador. TACACS+ sí admite servidor secundario nativo. |
5.2. Orden recomendado y por qué
El orden sugerido por el requerimiento es radius, luego tacacs, luego htpasswd. La razón es operativa, no técnica: se prioriza el servicio AAA principal, se ofrece un segundo AAA como contingencia y se deja la base local htpasswd como último recurso para no perder el acceso administrativo si ambos servicios AAA están caídos. El primer método que autentica con éxito termina la cadena.
"authentication" : {
"auth_method_1" : "radius",
"auth_method_2" : "tacacs",
"auth_method_3" : "htpasswd"
}5.3. ¿Qué ocurre cuando un método falla?
Situación | Comportamiento |
RADIUS falla (rechazo o servidor caído) | Se registra el fallo y pasa a tacacs |
TACACS+ falla | Se registra el fallo y pasa a htpasswd |
Ambos AAA fallan | Se intenta htpasswd local |
Todos fallan | Acceso denegado; se registra cada intento |
RADIUS acepta | Cadena termina; sigue autorización local |
Nota: El failback es entre métodos, no dentro del método. La única excepción es TACACS+, que internamente prueba el servidor secundario antes de devolver fallo, gracias al soporte multi-servidor del módulo. |
6. Archivo opCommon.json en detalle
En NMIS9 este es el archivo que gobierna la autenticación de la GUI para los módulos. Todo cambio en el código requiere reiniciar omkd.
"authentication" : {
"auth_method_1" : "radius",
"auth_method_2" : "tacacs",
"auth_method_3" : "htpasswd",
"auth_radius_server" : "10.10.0.20:1812",
"auth_radius_secret" : "S3cr3t1",
"auth_tacacs_server" : "10.10.0.30:49",
"auth_tacacs_secret" : "T@cacsKey",
"auth_tacacs_server_secondary" : "10.10.0.31:49",
"auth_tacacs_secret_secondary" : "T@cacsKey2",
"auth_htpasswd_file" : "<omk_conf>/users.dat",
"auth_default_privilege" : "",
"auth_default_groups" : "",
"auth_lockout_after" : 5,
"auth_expire_seconds" : 3600,
"auth_debug" : 1
}Aplicar el cambio:
sudo systemctl restart omkd7. Autorización: archivo Users.nmis y usuario por defecto
Tras autenticar, NMIS busca al usuario en su tabla interna para asignarle privilegio y grupos. En NMIS9 el archivo es /usr/local/nmis9/conf/Users.nmis, administrable desde la GUI (NMIS > System > System Configuration Users) y desde OMK Administration (ipservidor/omk/admin/users). RADIUS y TACACS+ no entregan roles ni grupos, por lo que la autorización siempre es local.
7.1. Cómo funciona
Privilege. Rol del usuario. Se traduce a un nivel de acceso vía PrivMap.nmis, y Access.nmis define qué puede ver y hacer cada nivel.
Groups. Lista de grupos de nodos que el usuario puede ver. El comodín all otorga visibilidad de todos los grupos.
Usuario por defecto. Si auth_default_privilege y auth_default_groups tienen valor, un usuario autenticado que no exista en la tabla recibe ese rol. Si están en blanco, se niega el acceso.
7.2. Ejemplo de entrada
'usuario_op' => {
'user' => 'usuario_op',
'privilege' => 'operator',
'groups' => 'all'
},Referencia: para la creación de usuarios y roles en NMIS9 vía OMK Administration, ver la página de la Wiki LATAM "Crear usuarios en NMIS 9 y OMK Administration" |
8. Escenarios de configuración
Esta sección presenta tres escenarios de implementación recomendados para la autenticación en NMIS9 utilizando RADIUS, TACACS+ y htpasswd. Cada escenario incluye su objetivo, ventajas, limitaciones y un ejemplo de configuración que puede utilizarse como referencia.
8.1. Escenario 1: autenticación mediante RADIUS
Descripción
Este escenario está orientado a organizaciones que cuentan con un único servidor RADIUS corporativo para centralizar la autenticación de usuarios.
Ejemplos comunes:
Cisco ISE
FreeRADIUS
Microsoft NPS
Aruba ClearPass
En este esquema, NMIS9 intenta autenticarse primero contra el servidor RADIUS. Si la autenticación falla o el servidor no está disponible, utiliza la autenticación local (htpasswd) como mecanismo de respaldo.
Orden de autenticación
1. RADIUS
2. htpasswdConfiguración de ejemplo
"authentication": {
"auth_method_1": "radius",
"auth_method_2": "htpasswd",
"auth_radius_server": "10.10.0.20:1812",
"auth_radius_secret": "S3cr3t1"
}8.2. Escenario 2: autenticación mediante TACACS+ con servidor secundario
Descripción
Este escenario está diseñado para ambientes empresariales que utilizan TACACS+ y requieren alta disponibilidad mediante un servidor secundario.
NMIS intentará autenticarse primero contra el servidor TACACS+ principal. Si éste no responde, automáticamente utilizará el servidor secundario.
Si ambos fallan, recurrirá a la autenticación local mediante htpasswd.
Orden de autenticación
1. TACACS+ principal
2. TACACS+ secundario
3. htpasswdConfiguración de ejemplo
"authentication": {
"auth_method_1": "tacacs",
"auth_method_2": "htpasswd",
"auth_tacacs_server": "10.10.0.30:49",
"auth_tacacs_secret": "T@cacsKey",
"auth_tacacs_server_secondary": "10.10.0.31:49",
"auth_tacacs_secret_secondary": "T@cacsKey2"
}8.3. Escenario 3: configuración híbrida (RADIUS → TACACS+ → htpasswd)
Descripción
Este es el escenario recomendado para ambientes de producción que requieren la máxima disponibilidad del servicio de autenticación.
Orden de autenticación
1. RADIUS
2. TACACS+
3. htpasswdSi cualquiera de los métodos autentica correctamente al usuario, el proceso finaliza y posteriormente NMIS consulta Users.nmis para determinar los privilegios y grupos asignados.
Configuración de ejemplo
"authentication": {
"auth_method_1": "radius",
"auth_method_2": "tacacs",
"auth_method_3": "htpasswd",
"auth_radius_server": "10.10.0.20:1812",
"auth_radius_secret": "S3cr3t1",
"auth_tacacs_server": "10.10.0.30:49",
"auth_tacacs_secret": "T@cacsKey",
"auth_tacacs_server_secondary": "10.10.0.31:49",
"auth_tacacs_secret_secondary": "T@cacsKey2",
"auth_htpasswd_file": "<omk_conf>/users.dat"
}9. Validación
9.1. Autenticación
Defina solo el método remoto como auth_method_1 y deje htpasswd como respaldo con una contraseña distinta a la del AAA.
Inicie sesión con un usuario que solo exista en el servidor AAA. Si entra, la autenticación vino del servidor remoto.
Confirme con captura de tráfico en el NMIS.
sudo tcpdump -ni any udp port 1812 or udp port 1645 # RADIUS
sudo tcpdump -ni any tcp port 49 # TACACS+9.2. Autorización, usuarios y grupos
Verifique que el usuario tenga entrada en Users.nmis con el privilegio esperado, o que el privilegio por defecto sea el deseado.
Inicie sesión y confirme en la GUI que ve solo los grupos de nodos permitidos y que las acciones corresponden a su rol.
Revise en auth.log la línea de asignación de privilegio.
9.3. Timeout y failover
Failover entre métodos: detenga el servidor del método primario y confirme que el login cae al siguiente método.
Failover TACACS+ secundario: detenga el TACACS+ primario y confirme que autentica contra el secundario.
Timeout: bloquee el puerto del AAA en el firewall y observe el retraso y el rechazo en auth.log.
10. Logs
Componente | Archivo |
NMIS9, autenticación web (omkd) | /usr/local/omk/log/auth.log |
NMIS8, autenticación web (CGI) | /usr/local/nmis8/logs/auth.log |
Apache (solo método apache y/o NMIS8) | /var/log/httpd/error_log o /var/log/apache2/error.log |
tail -f /usr/local/omk/log/auth.log
tail -f /var/log/httpd/error_log10.1. Mensajes reales de NMIS9
Líneas tomadas de un caso real. El formato es [marca de tiempo] [pid] [nivel] mensaje.
[info] Auth::user_verify, login request of user=arnulfog method=htpasswd accepted
[info] Auth::user_verify, login request of user=test_poller2 method=htpasswd failed
[info] Auth::user_verify, login request of user=test_poller2 method=tacacs failed
[info] SimpleAuth::validate_user, authentication failure for username=test_poller2
[error] Auth::_GetPrivs, User test_poller1 not found in Users table, no default privilege configured
[error] user "Test_Poller1" does not exist!(Referencia: OMK-12227)
10.2. Cómo interpretar
Mensaje | Significado |
method=... accepted | Autenticación exitosa por ese método |
method=... failed | Ese método rechazó; se prueba el siguiente |
ERROR, no Authen::Simple::RADIUS installed | Falta el módulo CPAN de RADIUS |
ERROR, no Authen::TacacsPlus installed | Falta el módulo CPAN de TACACS+ |
ERROR, no radius/tacacs server address specified | Servidor sin definir en opCommon.json |
_GetPrivs, User X not found in Users table | Autenticó, pero no hay usuario interno ni privilegio por defecto |
login failure counter ... no NMIS config available | El contador de bloqueo no se pudo actualizar (Referencia: OMK-12227) |
Referencias
Documentación oficial
[1] OMK Authentication Methods (opCommon), FirstWave. OMK Authentication Methods
[2] User Management in NMIS, FirstWave. User Management in NMIS
[3] NMIS Configuration, FirstWave. NMIS Configuration
[4] Configuración de LDAP, Wiki LATAM (referencia de estructura). Configuración de LDAP
[5] Crear usuarios en NMIS 9 y OMK Administration, Wiki LATAM. Crear usuarios en NMIS 9 y OMK Administration