Configuración de Autenticación Remota
C@mpus - @cademia Linux

Introducción 

En este apartado se explicará cómo instalar y configurar el servicio de Radius. Radius por si solo es un protocolo que tiene como función la autenticación de usuarios. De esta forma diversos servicios de terceros ajenos a LXE podrán utilizar su base de usuarios.


Paquetes necesario

  • freeRadius,
  • libfreeradius-ldap
  • libfreeradius-krb5

Configuración

Una vez instalados los paquetes se procederá a su configuración.


Configuración para LDAP

A continuación se configurará FreeRadius para que utilice la estructura de datos formada en el directorio LDAP. Para esto dos archivos son importantes: radiusd.conf y dictionary usualmente ubicados en el directorio /etc/raddb. Recordar que los pasos descritos en el presente documento están basados de acuerdo a las configuraciones por defecto de Mandrake Linux.

A partir de freeradius >= 2.0.5 cada módulo ha sido asignado a un archivo específico en el directorio /etc/raddb/modules y los servidores virtuales son apoyados  en el directorio /etc/raddb/sites-available.  Para efectos de LinuXchangE, que no tiene esta característica, el archivo a editar es default.  El siguiente ejemplo puede variar en la ubicación.  

/etc/raddb/radiusd.conf (parcial) o /etc/raddb/modules/pam|ldap o /etc/raddb/sites-available/default

modules {
...
  pam {
    pam_auth = radiusd
  }
...

  ldap {
    server = ldap.linuxchange.com
    #login = "cn=root,dc=linuxchange,dc=com"
    #password = mypass
    basedn = "ou=People,dc=linuxchange,dc=com"
    filter = "(|(cn=%{Stripped-User-Name:-%{User-Name}})(uid=%{Stripped-User-Name:-%{User-Name}}))
    start_tls = no
    tls_mode = no
    access_attr = "dialupAccess"
    dictionary_mapping = ${raddbdir}/ldap.attrmap
    ldap_connections_number = 5
    password_header = "{clear}"
    password_attribute = userPassword
    timeout = 4
    timelimit = 3
    do_xlat = yes
  }

...
}
...
authorize {
  preprocess
  ...
  ldap
  ...
}

authenticate {
  ...
  Auth-Type LDAP {
    ldap
  }

  pam
  ...
}

 

Se podría llegar a pensar y de cierta forma es cierto que la autenticación por PAM y por LDAP redunda puesto que PAM utiliza LDAP. Lo cual es una ventaja puesto que en todo servidor se tiene instalado el Name Chacing.

En algunas versiones de Radius 1.0+ podría existir un desbordamiento de pila provocado por el módulo LDAP.  Para corregir esto, se podrá sustituir su uso con pam dentro de la sección authenticate.


Configuración para Kerberos

/etc/raddb/radiusd.conf (parcial)
modules {
...

  krb5 {
    keytab = "/etc/krb5.keytab"
  service_principal = radius
  }

...
}
...

authenticate {
  ...
  Auth-Type Kerberos {
    krb5
  }
  ...
}

Es importante tener los servicios dados de alta en kerberos según lo muestra el documento en la sección de Kerberos.


Configuración del Diccionario

Verificar que la siguiente línea exista, en caso de existir el valor que contenga será más que suficiente.

/etc/raddb/dictionary (parcial)
VALUE Auth-Type Local 0
VALUE Auth-Type System 1
VALUE Auth-Type SecurID 2
VALUE Auth-Type Crypt-Local 3
VALUE Auth-Type Reject 4
VALUE Auth-Type ActivCard 4
VALUE Auth-Type LDAP 5

Método por default 

Por último se tiene que indicar cómo se manejará los fallos de la autenticación modificando el archivo users con la siguiente línea:

/etc/raddb/dictionary (parcial)
DEFAULT Auth-Type := LDAP
Fall-Through = 1

El valor 1 en el parámetro FallThrought obedece a los valores del archivo dictionary.

Al terminar la configuración se tendrá que ejecutar la orden: service radiusd restart para reiniciar el demonio.


Prueba de Configuración 

Suponiendo que se tiene almeno sun usuario en el directorio LDAP por la migración realizada en el servidor de directorio, se genera la siguiente línea:

radtest username "password" radius.server.com 1 testing123

En caso de ser exitosa la prueba un mensaje Access-Accept packet será desplegado.