Arriba
Logo

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
Compartir este artículo

Leer más