Mostrando entradas con la etiqueta radius. Mostrar todas las entradas
Mostrando entradas con la etiqueta radius. Mostrar todas las entradas
TOP

Habilitar autenticación LDAP en freeradius

Radius (Remote Authentication Dial-In User Server),es un protocolo de autenticación y autorización para aplicaciones de acceso a la red o movilidad IP. Utiliza el puerto 1812 UDP para establecer sus conexiones.
Una de las principales aplicaciones que utilizan e implementan este protocolo es, freeradius.

                                                

Freeradius permite entre otras cosas, distintas formas de autenticación y entre ellas está realizar la autenticación contra un servidor LDAP. En esta características nos centraremos. La manera de habilitar la autenticación LDAP, es la siguiente:
Modificamos los siguientes ficheros,
  • /etc/freeradius/modules/ldap
En este fichero, cambiamos lo siguiente:
ldap {
       #
       #  Note that this needs to match the name in the LDAP
       #  server certificate, if you're using ldaps.
        server = "NOMBRE O IP DEL SERVIDOR LDAP" 
        identity = "cn=admin,dc=pruebas,dc=com" 
        password = "Password" 
        basedn = "ou=people,dc=pruebas,dc=com" 
        filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" 
        base_filter = "(objectclass=radiusprofile)" 
        password_attribute = userPassword
 
  • server= Nombre del servidor LDAP, o en su defecto IP.
  • identity= Usuario con privilegios en el ldap y dominio de busqueda.
  • password= Password de este usuario
    (es posible suprimir estos dos campos)
  • basedn= le decimos donde buscar en el ldap
Del resto de campos no es necesario tocar nada. Pasamos a modificar el otro fichero necesario, para habilitar la autenticación LDAP.
  • /etc/freeradius/sites-enabled/default
Aqui simplemente descomentamos de la parte authorize y authenticate las partes relacionadas con el LDAP.
authorize {
            #
            #  The ldap module will set Auth-Type to LDAP if it has not
            #  already been set
             ldap 
             ....
 authenticate {
            # Uncomment it if you want to use ldap for authentication
            #
            # Note that this means "check plain-text password against
            # the ldap database", which means that EAP won't work,
            # as it does not supply a plain-text password.
             Auth-Type LDAP {
             ldap
             }
Con esto sería suficiente. Reiniciamos freeradius y comprobamos mediante la herramienta Radtest:

root@Demo:~# radtest Usuario Password localhost 1812 test123
 Sending Access-Request of id 54 to 127.0.0.1 port 1812
        User-Name = "Usuario" 
        User-Password = "Password" 
        NAS-IP-Address = xxx.xxx.xxx.xxx
        NAS-Port = 1812
 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=54, 
length=20
 
Donde "Usuario" es un usuario dado de alta en el LDAP. Si vemos los logs que deja freeradius (ejecutando freeradius con la opción -X) encontramos:

[ldap] performing user authorization for Usuario
 [ldap]  expand:  
 [ldap]  ... expanding second conditional
 [ldap]  expand: %{User-Name}-> Usuario
 [ldap]  expand: (uid={%{Stripped-User-Name}:-%{User-Name}})->(uid=Usuario)
 [ldap]  expand: ou=people,dc=pruebas,dc=com -> ou=people,dc=pruebas,dc=com
  [ldap] ldap_get_conn: Checking Id: 0
  [ldap] ldap_get_conn: Got Id: 0
  [ldap] performing search in ou=people,dc=pruebas,dc=com, with filter 
(uid=password)
 [ldap] Added User-Password = radius in check items
 [ldap] No default NMAS login sequence
 [ldap] looking for check items in directory...
  [ldap] userPassword -> Password-With-Header == "password" 
 [ldap] looking for reply items in directory...
 [ldap] user Usuario authorized to use remote access
  [ldap] ldap_release_conn: Release Id: 0
 ++[ldap] returns ok
 
Que la petición de autenticación se lleva a cabo correctamente contra el LDAP.
*Nota: importante, si hacemos backup de un fichero de configuración, no debemos dejarlo en el mismo directorio, ya que puede crear conflictos.