Active Directory
Utilizar MS Active Directory como mecanismo de autenticación en Freeradius
Microsoft® Active Directory provee dos métodos de autenticación: Kerberos que manipula las contraseñas en texto plano y NTLM que procesa las contraseñas cifradas utilizando NT-HASH propio de Microsoft lo cuál habilita el mecanismo de autenticación MSCHAPv2.
Es necesario tener privilegios de administrador para realizar el siguiente procedimiento
Utilizando NTLM
La autenticación con NTLM requiere que el servidor que implementa el servicio de RADIUS sea un miembro del Domain Controller (DC) del Active Directory
Unir el servidor RADIUS al dominio del Active Directory y configurar winbind/SAMBA
1. Instalar winbind/SAMBA y dependencias
# yum install samba-common samba-winbind samba-winbind-clients
2. Despues de instalar winbind se debe editar la sección [global]
en el archivo /etc/samba/smb.conf
En Network Related Options, cambie la siguiente línea
workgroup = <NETBIOS domain name>
En Standalone Server Options
, utilice un punto y coma ‘;’
para comentar todas las opciones
En Domain Members Options
, modifique las opciones como sigue
security = ads ;passdb backend = tdbsam realm = <FQDN of DOMAIN> winbind use default domain = no password server = <IP address or FQDN of domain PDC>
Guarde los cambios en /etc/samba/smb.conf
3. Editar el archivo /etc/krb5.conf
En la seccción [realms]
, ingrese el siguiente fragmento
<FQDN of domain> = { kdc = <IP address or FQDN of domain PDC> admin_server = <IP address or FQDN of domain PDC> }
En la sección [domain_realm]
, añada
.<FQDN of domain in lower-case> = <FQDN of domain in UPPER-case> <FQDN of domain in lower-case> = <FQDN of domain in UPPER-case>
Guarde el archivo /etc/krb5.conf
4. Unir el servidor al dominio con el siguiente comando
# net join -U Administrator -S <IP address or FQDN of domain PDC>
Se le solicitará la contraseña del usuario con privilegios de administración (para el ejemplo es Administrator). Puede que reciba algunos mensajes de advertencia y se le vuelva a solicitar la contraseña. Una operación exitosa mostrará el siguiente mensaje:
Joined domain <NETBIOS domain name>
Autenticando usuarios con winbind / SAMBA
Una vez que se ha unido el servidor al dominio del Active Directory, nos aseguramos que el servicio winbind inicie con el sistema ejecutando las siguientes órdenes
# chkconfig winbind on # service winbind start
Comprobar que el servicio winbind está en ejecución
# ps –ef | grep winbindd
1. Prueba de autenticación de un usuario en el dominio utilizando wbinfo
# wbinfo -a <username>%<password>
Cuando la prueba sea exitosa observará los siguientes mensajes
plaintext password authentication failed Could not authenticate user <username>%<password> with plaintext password challenge/response password authentication succeeded
*La autenticación de contraseña en texto plano es de esperar que falle debido a que no existen contraseñas sin cifrar en el Active Directory.
Ahora intentaremos la autenticación utilizando el mecanismo de autenicación NTLM con la herramienta “ntml_auth”
# ntlm_auth --request-nt-key --domain=<NETBIOS domain name> --username=<username>
Será solicitada la contraseña del usuario de prueba que esté utilizando, en una autenticación exitosa logrará ver el siguiente mensaje
NT_STATUS_OK: Success (0x0)
Finalmente debe añadir el usuario “radius” al grupo que tiene permisos de lectura en la carpeta /var/lib/samba/winbindd_privileged
# usermod -a -G wbpriv radius
Configurando FreeRADIUS para autenticar usuarios del Active Directory
En FreeRADIUS, el modulo “mschap
” necesita ser configurado para realizar la autenticación. Edite el archivo /etc/raddb/mods-enabled/mschap
y luego descomente las siguientes líneas
require_encryption = yes require_strong = yes ntlm_auth = "/path/to/ntlm_auth ..."
Modifique la línea “ntlm_auth” para que apunte a la ubicación correcta del programa “ntlm_auth” utilizado anteriormente para probar la autenticación con NTLM. Normalmente ntlm_auth está ubicado en /usr/bin/ntlm_auth
. Guarde el archivo
Por ultimo reinicie el servicio de freeradius utilizando el siguiente comando
# /etc/init.d/radiusd restart