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.

4 comentarios:

  1. Anónimo

    Muchas gracias por la nota del final, después de 5 horas volviéndome tonto buscando porque no me pillaba mi modulo ldap y me seguía cargando la configuración por defecto ya estaba desesperado.

    De no haber leído tu nota, ya estaría tirando el ordenador por la ventana, jeje.

  2. Me alegro que haya servido de ayuda ;)

  3. Anónimo

    A mi tambien me salvo el dia, muchas gracias por la nota. En Centos 6 tenia un respaldo de /etc/raddb/modules/ldap.ori que estaba causando conflictos, ya llevaba un buen tiempo con este problema, lo borre y listo. Saludos,
    gil

  4. Anónimo

    Hola a todos, me arroja el siguiente error el radius:

    [ldap] ldap_search() failed: Operations error
    [ldap] search failed

    A que se puede deber?
    Gracias!

Publicar un comentario