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 mschapEsta 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.