Autenticación RADIUS y TACACS+ en NMIS9

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

Flujo-20260627-012825.png

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::TacacsPlus

3.3. Actualizar

sudo cpanm Authen::Simple::RADIUS Authen::TacacsPlus   # reinstala la última versión

3.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_$FECHA

Advertencia: 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 omkd

7. 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. htpasswd

Configuració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. htpasswd

Configuració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. htpasswd

Si 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_log

10.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