Configuración de Freeradius

 

La configuración de Freeradius se almacena en /etc/raddb. Dentro de esta carpeta encontramos el fichero radiusd.conf que normalmente no será necesario editar. Sería necesario modificarlo, por ejemplo, si en un equipo con dos adaptadores de red queremos que freeradius actúe sólo en uno de ellos.

En radius vamos a configurar diferentes mecanismos de autenticación: PEAP, TLS y LDAP.

 

 

Ficheros de configuración

 El fichero eap.conf

eap {
 #default_eap_type = tls
 default_eap_type = peap
 
 timer_expire     = 60
 
 ignore_unknown_eap_types = no
 cisco_accounting_username_bug = no
 
 leap {
 }
 
 gtc {
  auth_type = PAP
 }
 
 tls {
 
  private_key_password = clave_de_llave_privada
  private_key_file = /etc/pki/tls/caronte.bezmi.ies/caronte.bezmi.ies.key
  certificate_file = /etc/pki/tls/caronte.bezmi.ies/caronte.bezmi.ies.pem
  CA_file = /etc/pki/CA/cacert.pem
 
  dh_file = ${raddbdir}/certs/dh
  random_file = ${raddbdir}/certs/random
  fragment_size = 1024
  include_length = yes
 }
 
 ttls {
  default_eap_type = mschapv2
  copy_request_to_tunnel = no
  use_tunneled_reply = yes
 }
 
 peap {
  default_eap_type = mschapv2
  copy_request_to_tunnel = yes
  use_tunneled_reply = yes
  proxy_tunneled_request_as_eap = no
 }
 
 mschapv2 {
 }
}
 

 

 El fichero sites-available/default

Añadiendo al fichero sites-available/default el siguiente contenido permitimos la autenticación LDAP:

       Auth-Type LDAP {
               ldap
      }


 

El fichero clients.conf

En este fichero establecemos qué clientes se pueden conectar al servicio radius, el tipo de acceso y la contraseña necesaria.

 

client 192.168.10.0/24 {
        secret          = radiusd123
        shortname       = wlan0
        nastype         = other
}
 

 

El fichero proxy.conf

proxy server {
        synchronous = no
        retry_delay = 5
        retry_count = 3
        dead_time = 120
        default_fallback = yes
        post_proxy_authorize = yes
 
}

 

realm LOCAL {
        type            = other
        authhost        = LOCAL
        accthost        = LOCAL
}

 

realm ATENEA {
       type            = ntlm_auth
       authhost        = LOCAL
       accthost        = LOCAL
}

 


 

El fichero modules/mschap

 

mschap {
        ntlm_auth = "/bin/ntlm_auth \
 --request-nt-key \
 --username=%{%{Stripped-User-Name}:-%{User-Name:-None}}  \
 --challenge=%{mschap:Challenge:-00} \
 --nt-response=%{mschap:NT-Response:-00}"
}

 

El fichero modules/ntlm_auth

exec ntlm_auth {
        wait = yes
}

 

El fichero modules/ldap

 

ldap {
        server = "caronte.bezmi.ies"
        basedn = "dc=bezmi.ies,dc=es"
        filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
 
        ldap_connections_number = 5
        max_uses = 0
        timeout = 4
        timelimit = 3
        net_timeout = 1
 
        tls {
                start_tls = no
        }
 
 
        dictionary_mapping = ${confdir}/ldap.attrmap
        edir_account_policy_check = no
 
        keepalive {
                idle = 60
                probes = 3
                interval = 3
        }
}
 


 

El servidor radiusd

El servicio radius lo podemos iniciar con

service radiusd start

No obstante, para verificar el funcionamiento, ejecutaremos radius desde una consola de root como:

radiusd -X

Si hay algún error en el fichero de configuración debería mostrarlo. Una vez corregidos los errores también podremos comprobar como efectúa la validación de una petición.


 

Los clientes radiusd

PEAP

Efectúa la validación contra un dominio o Active Directory, en nuestro caso el que hemos establecido con Samba.

Primero tenemos que asegurarnos que la validación ntlm_auth funciona:

ntlm_auth --request-nt-key –domain=BEZ.IES --username=usuariosamba –password=contraseña

Después comprobamos con radiusd ejecutando:

radtest -t mschap Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.  contraseña localhost  1 radiusd123

Si la respuesta no es correcta posibles puntos a tener en cuenta:

 

Comprobar la salida de radiusd -X

Mirar lo logs de Samba.

Están en ejecución todos los servicios necesarios.

Los permisos de la carpeta de winbind son:

drwxr-x--- 2 root radiusd   4096 abr 14 19:05 /var/lib/samba/winbindd_privileged

Comprobar:

getent passwd

 y tenemos que comprobar que aparecen los usuarios almacenados en LDAP

TLS

Efectúa la validación con certificados digitales. Tendremos que tener instalados la llave pública de nuestra autoridad certificadora, el fichero cacert.pem  y nuestro certificado emitido por la autoridad certificadora. Normalmente usaremos el fichero .p12. En ciertos clientes puede que tengamos que cambiar el formato del fichero de la autoridad certificadora.

LDAP

Efectúa la validación frente a un servidor LDAP, en nuestro caso el que hemos establecido.

Para comprobar que funciona ejecutamos:

radtest usuariosamba  contraseña localhost  1 radiusd123

Observamos que es el mismo usuario, pero ahora lo consultamos directamente al servidor LDAP. Con PEAP hacemos la consulta a través de Samba.