Seguridad · 6 min read · Dec 28, 2025
Configurando SSH Para Usar Freeradius Y WiKID Para Autenticación De Dos Factores
Configurando SSH Para Usar Freeradius Y WiKID Para Autenticación De Dos Factores
Radius es un gran estándar. Es lo suficientemente potente como para lograr mucho y lo suficientemente simple como para ser fácil de manejar. Freeradius es un excelente servidor radius de código abierto que se incluye con muchas variantes de Linux. Está bien documentado y bien soportado. El servidor de Autenticación Fuerte WiKID es un sistema comercial/de código abierto de autenticación de dos factores que utiliza cifrado de clave pública para transmitir PINs y códigos de acceso de un solo uso de manera segura a tokens de software que se ejecutan en Blackberries, teléfonos celulares, Palms, PocketPCs o, utilizando el cliente J2SE, Linux, Macs y PCs con Windows. Puedes pensar en WiKID como certificados, pero sin las complicaciones de listas blancas/negras y más seguro, porque el PIN se valida en el servidor, previniendo ataques de fuerza bruta fuera de línea.
Las empresas que necesitan cumplir con requisitos, como PCI-DSS o HIPAA, pueden necesitar asegurar sus redes con autenticación de dos factores y acceso controlado de manera estricta. Combinar Freeradius y WiKID es una forma altamente rentable de lograr eso.
En este ejemplo, estoy instalando Freeradius en Fedora Core 7 y ejecutando los rpms 3.0RC2 de WiKID en Centos5 (sin embargo, las mismas instrucciones funcionarán para la versión 2.0 de WiKID). Estaremos probando con SSH, sin embargo, la misma configuración debería funcionar para Apache, WebDAV, OpenVPN y cualquier otra aplicación que soporte PAM.
Instalando y Configurando Freeradius
No importa qué variante de Linux estés ejecutando, probablemente haya un paquete para Freeradius. Para Fedora, instalar a través de Yum es simple:
yum install freeradius
Configurar Freeradius es bastante sencillo. Hay muchas opciones, sin embargo. La clave es cambiar solo los elementos mínimos que entiendas. La configuración predeterminada funciona, así que haz pequeños cambios y pruébalos. Modificaremos tres archivos. El archivo /etc/raddb/clients.conf le dice a Freeradius qué clientes aceptar. El archivo proxy.conf le dice a Freeradius que envíe los paquetes de autenticación al servidor WiKID y el archivo radiusd.conf configura el servidor principal de Freeradius.
Primero, edita el archivo /etc/raddb/clients.conf:
vi /etc/raddb/clients.conf
client 127.0.0.1 {
secret = shared_secret
shortname = localhost
nastype = other
}Todo lo que necesitas cambiar por ahora es el secreto compartido ya que iniciaremos sesión en el servidor Freeradius a través de SSH como nuestra prueba.
A continuación, valida que las solicitudes puedan ser proxy en el archivo radiusd.conf. Este fue el caso en Fedora:
vi /etc/raddb/radiusd.conf
proxy_requests = yes
$INCLUDE ${confdir}/proxy.confFinalmente, agrega el servidor de Autenticación Fuerte WiKID como un proxy válido en proxy.conf:
vi /etc/raddb/proxy.conf
# Este reino es para solicitudes que no tienen un reino explícito
# prefijo o sufijo. Nombres de usuario como "bob" coincidirán con este.
#
realm NULL {
type = radius
authhost = WIKIDSERVER_IP:1812
# accthost = WIKIDSERVER_IP:1813
secret = shared_secret
}No hace falta decir que cambies WIKIDSERVER_IP y shared_secret por la IP de tu servidor WiKID y el secreto compartido. Probablemente debería ser diferente al secreto compartido utilizado para el cliente.
Para mayor seguridad, deberías restringir la propiedad de estos archivos:
chmod a-rwx,u+r /etc/raddb/proxy.conf
chmod a-rwx,u+r /etc/raddb/clients.conf
Ahora inicia Freeradius:
service radiusd start
Configurando PAM SSH
Primero, necesitas instalar PAM Radius. Hay una excelente documentación sobre esto en la página de inicio de PAM Radius. Dependiendo de tu distribución, también podrías encontrar un binario adecuado. No tuve problemas para compilar esto en Fedora 7:
Edita /etc/pam.d/sshd para permitir la autenticación Radius:
vi /etc/pam.d/sshd
Ve a la segunda línea del archivo, presiona la tecla Insert o la tecla i e inserta esta línea:
auth sufficient /lib/security/pam_radius_auth.so justo encima de esta línea:
auth required pam_stack.so service=system-authLa etiqueta “sufficient” indica que si la autenticación Radius tiene éxito, no se requerirá ninguna autenticación adicional. Sin embargo, si la autenticación Radius falla, un nombre de usuario y contraseña del sistema funcionarán. Usa “Required” para requerir autenticación fuerte. Debido a que solo estamos editando el archivo sshd, no afectará los inicios de sesión de terminal. PAM puede ser muy diferente en diferentes variantes de Linux. Consulta la documentación específica para tu SO.
Edita o crea tu archivo /etc/raddb/server:
vi /etc/raddb/server
Debajo de la línea:
127.0.0.1 secret 1Agrega esta línea:
localhost shared_secret 1Finalmente, me aseguré de que la autenticación de clave pública estuviera desactivada en /etc/sshd/sshd_config:
PubkeyAuthentication noConfigurando el Servidor WiKID
Ahora, configuraremos el servidor WiKID para procesar las contraseñas de un solo uso de Freeradius. Asumimos que también necesitas configurar un nuevo dominio WiKID. Si ya tienes uno, puedes omitir esta parte. La documentación adicional de instalación de WiKID está disponible aquí.
Inicia sesión en el servidor WiKID y haz clic en la pestaña Dominios.
Haz clic en Crear un Nuevo Dominio.
Ingresa la información solicitada. El código del Servidor de Dominio es la dirección IP del servidor WiKID con ceros a la izquierda. Así que, si la dirección IP externa es 216.239.51.99, el código del servidor WiKID sería 216239051099. Haz clic en “Crear”. (Obviamente, si ya tienes un dominio configurado, puedes omitir este paso.)
Haz clic en la pestaña Clientes de Red y en “Crear un nuevo Cliente de Red”.
Ingresa la información solicitada. Para la dirección IP, usa la dirección IP del servidor Freeradius. Selecciona Radius y el dominio que acabas de crear. Haz clic en “Agregar” cuando hayas terminado.
En la siguiente página, ingresa el secreto compartido que ingresaste en el archivo /etc/raddb/proxy.conf del servidor Freeradius. No es necesario ingresar ninguna información bajo “Atributos de Retorno”.
Importante: Desde la terminal de WiKID o a través de SSH, necesitarás ejecutar “wikidctl stop” y luego “wikidcl start” para cargar la nueva configuración en el servidor Radius de WiKID. (Los usuarios de WiKID 2.0 solo ejecutan “stop” y “start”.)
Probando Freeradius con contraseñas de un solo uso
Descarga e instala un cliente de Token WiKID. Puedes validarte manualmente como usuario desde la interfaz web de WiKIDAdmin. Una vez validado, selecciona el Dominio asociado con el recurso Freeradius:

Ingresa el PIN:

Y recibirás el código de acceso de un solo uso. El OTP está limitado por tiempo, pero el tiempo se puede establecer en el servidor WiKID a lo que desees:

Ahora, ssh a tu caja Freeradius:
ssh user@freeradius_server
Cuando se te pida, ingresa la contraseña de un solo uso de WiKID; debería haberse copiado automáticamente en tu portapapeles, así que ctrl-c o shift-ins deberían funcionar. Deberías obtener acceso. Si no, hay varios registros que consultar. Primero, verifica /var/log/secure en tu servidor Freeradius para ver por qué se rechazó al usuario. Si ves “Todos los servidores RADIUS fallaron en responder.” asegúrate de que radiusd esté ejecutándose en el puerto 1812. Verifica los registros de Freeradius en /var/log/radius/radius.log y el registro de radius de WiKID en /opt/WiKID/log/radius.log en el servidor WiKID.
Una Configuración Alternativa: Freeradius como respaldo
Uno de los beneficios de usar PAM Radius es que los servidores pueden encadenarse en el archivo /etc/raddb/server. Si los servidores principales no responden, el siguiente servidor intentará autenticar al usuario. Para aclarar: si el primer servidor responde con un fallo de autenticación, el usuario es rechazado. Solo si no hay respuesta se verificará el segundo servidor radius. Esta capacidad de respaldo puede ser especialmente útil si tu servidor WiKID se encuentra en un centro de datos remoto. Al configurar PAM para comunicarse directamente con WiKID y retroceder a Freeradius, creas una solución de conmutación por error en caso de una falla de hardware.
Primero, cambia el archivo /etc/raddb/server para apuntar al servidor WiKID primero, luego al servidor Freeradius que se ejecuta en localhost segundo:
# server[:port] shared_secret timeout (s)
127.0.0.1:1812 shared_secret 1
WIKIDSERVER_IP:1812 shared_secret 3
localhost:1812 shared_secret 2Tuve que hacer algunos cambios menores para que Freeradius funcionara con /etc/passwd. Primero, tuve que cambiar el grupo de radiusd en /etc/raddb/radiusd.conf a shadow:
user = radiusd
group = shadowLuego tuve que dar permisos de shadow para /etc/passwd:
chgrp shadow /etc/shadow
chmod g+r /etc/shadow
Ahora, si el servidor WiKID falla por alguna razón, tienes un retroceso automático a tu archivo /etc/passwd.
Conclusión
Radius es un excelente estándar para la autenticación de usuarios remotos. Combinar Freeradius con WiKID Strong Authentication crea una solución poderosa, flexible y segura.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.