Después de la introducción, vamos a configurar un servidor Freeradius en una Raspberry Pi con linux Raspbian y lo vamos a usar como autenticador de 802.1X
En esencia: un server radius 802.1X sobre Debian.
Usaremos EAP-TLS como método de autenticación, esto es, el cliente inalámbrico y el servidor usarán un certificado respectivamente creado a partir de una entidad cerficadora que instalaremos. Con estos certificados, el punto de acceso y el servidor radius transportarán esta información dentro del tráfico radius y encapsulados por un túnel TLS.
- Requisitos mínimos:
Un equipo que hará de servidor para instalar freeradius Un punto de acceso inalámbrico que soporte radius y métodos EAP. (Casi cualquier router inalámbrico doméstico es compatible) Un cliente con suplicante 802.1X: (windows XP SP2 o superior, linux, mac os X, iphone, android ...)
- Equipos usados en este ejemplo para crear una red doméstica segura:
Punto de Acceso inalámbrico Cisco AIR-AP1121G-E-K9 : (software c1100-k9w7-mx.123-8.JEE para WPA2) Servidor Freeradius instalado en un linux con Raspberry Pi Un switch PoE Cisco WS-C3750-24PS-S que usaremos para 802.1X cableado Un cliente Windows 7 con tarjeta de red inalámbrica
- Requisitos del servidor:
Como hay diferentes compilaciones disponibles de Freeradius, el sistema operativo del servidor no debería ser un handycap.
El servidor deberá tener ip fija o reserva del dhcp para que el punto de acceso envíe inequívocamente las peticiones radius. Así evitamos sorpresas al reiniciar. Necesitaremos instalar openssl para crear la Autoridad Certificadora ( CA ). Freeradius también necesitará las librerías de openssl para poder usar los certificados.
En versiones de Freeradius antiguas, era necesario descargar el código fuente y compilarlo con soporte openssl para poder autenticar con EAP-TLS. Además era necesario modificar algunos ficheros del código fuente para adaptar la compilación al sistema operativo del servidor.
Actualmente no es necesario al menos en las versiones para Debian y Ubuntu. En el caso de Raspbian, distribución linux para Raspberry Pi basada en Debian, realizaremos una instalación de paquetes y será totalmente operativa y rápida de instalar para EAP-TLS. Más información en http://wiki.freeradius.org/building/Build
- Direccionamiento IP de la red doméstica:
punto de acceso inalámbrico = 192.168.5.139 servidor freeradius = 192.168.5.6
- Configuración de ip fija en raspberry:
Editamos el fichero /etc/network/interfaces Comentamos la línea de obtener la ip por dhcp Añadimos la ip manualmente pi@raspberrypi ~ $ sudo vi /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.5.6 netmask 255.255.255.0 gateway 192.168.5.1
- Instalación de Freeradius:
Actualizamos el sistema: pi@raspberrypi ~ $ sudo apt-get update Instalamos vim, openssl y librerías: pi@raspberrypi ~ $ sudo apt-get install vim openssl libssl-dev -y Instalamos Freeradius y utilidades: pi@raspberrypi ~ $ sudo apt-get install freeradius freeradius-utils freeradius-common -y
Durante la instalación se generarán los parámetros Diffie-Helman (DH) y se incia el servicio freeradius.
Si todo ha ído bien, veremos que durante el arranque del servicio, muestra por pantalla la configuración y carga de los módulos por defecto y finalmente en las últimas líneas vemos que se pone a la escucha:
... adding new socket proxy address * port 58543 Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Listening on proxy address * port 1814 Ready to process requests.
Pararemos de momento el servicio:
pi@raspy ~ $ sudo /etc/init.d/freeradius stop
Creamos el fichero xpextensions que permite autenticar con EAP-TLS las estaciones Windows, ya que necesitan unas OID’s que deben cumplir los certificados de servidor y cliente.
Si no realizamos este paso, cuando creemos la Entidad Certificadora y generemos los certificados, éstos no servirán para autenticar en estaciones Windows.
Cambiamos a root: pi@raspy ~ $ sudo su - root@raspy:~# Entramos en el directorio /etc/freeradius/certs root@raspy:~# cd /etc/freeradius/certs Creamos el fichero xpextensions con el siguiente contenido: root@raspy:/etc/freeradius/certs# vim xpextensions [ xpclient_ext] extendedKeyUsage = 1.3.6.1.5.5.7.3.2 [ xpserver_ext ] extendedKeyUsage = 1.3.6.1.5.5.7.3.1
Generamos el fichero random y serial:
root@raspy:/etc/freeradius/certs# dd if=/dev/urandom of=random count=2 root@raspy:/etc/freeradius/certs# echo '01' > /etc/freeradius/certs/demoCA/serial
- Creamos los certificados de raíz, de servidor y de cliente.
Podemos realizarlo de diferentes formas. En el site de Freeradius encontraremos un script que realiza la tarea al completo. En el site de Nantes-Wireless colgaron tres scripts que realizan la misma tarea por partes (Certificado Raíz, Certificado de Servidor y Certificados de Cliente). Esta idea me parece muy buena porque nos permitirá crear los certificados de cada cliente rápidamente. En esencia se trata usar los comandos openssl pero automatizado es más rápido.
Para poder hacerlos funcionar correctamente sobre la Raspberry con Raspbian he tenido que modificar alguna ruta, así que es bastante probable que este manual pueda servirte paso a paso también para Debian y Ubuntu.
Un aporte adicional que he realizado sobre los scripts se basa en pasar como parámetro la contraseña de los certificados en los casos que es posible. Por defecto, en ambos sitios el password de los certificados era “whatever”.
Las contraseñas que usaremos en el ejemplo serán:
Certificado Raíz (contraseña-CA)= eFca8zvQKH8ZnsGFUNr
Certificado Servidor (contraseña-SRV)= 66fGbGGf95sYh1QwbfIy
Certificado Cliente Xavi (contraseña-CLT)= s3cl3t0d3l4tl0mpl3t4
Los scripts generan los certificados en formato pem, p12 y der, este último útil para Windows.
Script del Certificado raíz:
Si en tu distribución de linux te fallan los scripts, puedes ejecutar línea a línea los comandos openssl del script y encontrar dónde falla.
#!/bin/sh # Uso : ./CA.root contraseña-CA SSL=/usr/lib/ssl export PATH=${SSL}/bin/:${SSL}/misc:${PATH} export LD_LIBRARY_PATH=${SSL}/lib rm -rf demoCA openssl req -new -days 730 -x509 -keyout newreq.pem -out newreq.pem -passin pass:$1 -passout pass:$1 echo "newreq.pem" | /usr/lib/ssl/misc/CA.pl -newca >/dev/null openssl pkcs12 -export -in newreq.pem -inkey newreq.pem -out root.p12 -cacerts -passin pass:$1 -passout pass:$1 openssl pkcs12 -in root.p12 -out root.pem -passin pass:$1 -passout pass:$1 openssl x509 -inform PEM -outform DER -in root.pem -out root.der rm -rf newreq.pem
Uso : ./CA.root contraseña-CA root@raspy:/etc/freeradius/certs# chmod +x CA.root root@raspy:/etc/freeradius/certs# ./CA.root eFca8zvQKH8ZnsGFUNr Generating a 2048 bit RSA private key ..............+++ .....+++ writing new private key to 'newreq.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:Barcelona Organization Name (eg, company) [Internet Widgits Pty Ltd]:capa3.es Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:raspy.capa3.es Email Address []:xxx@capa3.es MAC verified OK
Script del Certificado de Servidor CA.srv:
#!/bin/sh # Uso : ./CA.srv contraseña-CA nombre-servidor openssl req -new -keyout newreq.pem -out newreq.pem -passin pass:$1 -passout pass:$1 openssl ca -policy policy_anything -out newcert.pem -passin pass:$1 -key $1 -extensions xpserver_ext -extfile xpextensions -infiles newreq.pem openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out $2.p12 -clcerts -passin pass:$1 -passout pass:$1 openssl pkcs12 -in $2.p12 -out $2.pem -passin pass:$1 -passout pass:$1 openssl x509 -inform PEM -outform DER -in $2.pem -out $2.der rm -rf newert.pem newreq.pem
En un determinado punto de la ejecución del script, openssl nos solicitará una contraseña para el Certificado de Servidor.
Usaremos una contraseña diferente a la del Certificado Raíz ya especificada más arriba.
Uso : ./CA.srv contraseña-CA nombre-servidor root@raspy:/etc/freeradius/certs# chmod +x CA.srv root@raspy:/etc/freeradius/certs# ./CA.srv eFca8zvQKH8ZnsGFUNr raspy.capa3.es Generating a 2048 bit RSA private key .................................+++ .................................................................+++ writing new private key to 'newreq.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:Barcelona Organization Name (eg, company) [Internet Widgits Pty Ltd]:capa3.es Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:rootca.capa3.es Email Address []:xxx@capa3.es Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:66fGbGGf95sYh1QwbfIy An optional company name []:capa3.es Using configuration from /usr/lib/ssl/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: May 13 22:02:02 2013 GMT Not After : May 13 22:02:02 2014 GMT Subject: countryName = ES stateOrProvinceName = Barcelona localityName = Barcelona organizationName = capa3.es commonName = raspy.capa3.es emailAddress = admin@capa3.es X509v3 extensions: X509v3 Extended Key Usage: TLS Web Server Authentication Certificate is to be certified until May 13 22:02:02 2014 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated MAC verified OK
Certificado de Cliente:
#!/bin/sh # Uso : ./CA.clt usuario contraseña-CLT contraseña-CA openssl req -new -keyout newreq.pem -out newreq.pem -passin pass:$2 -passout pass:$2 openssl ca -policy policy_anything -out newcert.pem -passin pass:$2 -key $3 -extensions xpclient_ext -extfile xpextensions -infiles newreq.pem openssl pkcs12 -export -in newcert.pem -inkey newreq.pem -out $1.p12 -clcerts -passin pass:$2 -passout pass:$2 openssl pkcs12 -in $1.p12 -out $1.pem -passin pass:$2 -passout pass:$2 openssl x509 -inform PEM -outform DER -in $1.pem -out $1.der rm -rf newcert newreq.pem
Uso : ./CA.clt usuario contraseña-CLT contraseña-CA root@raspy:/etc/freeradius/certs# chmod +x CA.clt root@raspy:/etc/freeradius/certs# ./CA.clt xavi s3cl3t0d3l4tl0mpl3t4 eFca8zvQKH8ZnsGFUNr Generating a 2048 bit RSA private key ....................+++ ..........................................+++ writing new private key to 'newreq.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:Barcelona Locality Name (eg, city) []:Barcelona Organization Name (eg, company) [Internet Widgits Pty Ltd]:capa3.es Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:xavi Email Address []:xavi@capa3.es Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:s3cl3t0d3l4tl0mpl3t4 An optional company name []:capa3.es Using configuration from /usr/lib/ssl/openssl.cnf Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: May 13 22:36:10 2013 GMT Not After : May 13 22:36:10 2014 GMT Subject: countryName = ES stateOrProvinceName = Barcelona localityName = Barcelona organizationName = capa3.es commonName = xavi emailAddress = xavi@capa3.es X509v3 extensions: X509v3 Extended Key Usage: TLS Web Client Authentication Certificate is to be certified until May 13 22:36:10 2014 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated MAC verified OK
Finalmente veremos en el directorio /etc/freeradius/certs los certificados de raíz, servidor y cliente en los tres formatos diferentes ( root, raspy.capa3.es y xavi en el ejemplo):
root@raspy:/etc/freeradius/certs# ls -al *.der *.pem *.p12 lrwxrwxrwx 1 root freerad 34 May 13 18:51 ca.pem -> /etc/ssl/certs/ca-certificates.crt -rw-r--r-- 1 root freerad 4142 May 13 22:36 newcert.pem -rw-r--r-- 1 root freerad 920 May 13 22:02 raspy.capa3.es.der -rw-r--r-- 1 root freerad 2525 May 13 22:02 raspy.capa3.es.p12 -rw-r--r-- 1 root freerad 3543 May 13 22:02 raspy.capa3.es.pem -rw-r--r-- 1 root freerad 985 May 13 21:42 root.der -rw-r--r-- 1 root freerad 2589 May 13 21:42 root.p12 -rw-r--r-- 1 root freerad 3632 May 13 21:42 root.pem lrwxrwxrwx 1 root freerad 36 May 13 18:51 server.pem -> /etc/ssl/certs/ssl-cert-snakeoil.pem -rw-r--r-- 1 root freerad 908 May 13 22:36 xavi.der -rw-r--r-- 1 root freerad 2509 May 13 22:36 xavi.p12 -rw-r--r-- 1 root freerad 3515 May 13 22:36 xavi.pem
- Ficheros de configuración
Para EAP-TLS necesitaremos modificar tres ficheros:
eap.conf nos proveerá la configuración del método EAP-TLS
users especificará los CN o Nombre Común de los usuarios y coincidirá con el CN del certificado de cada cliente
clients.conf será la lista de ip’s de los puntos de acceso y switches con su secreto compartido radius
Estos ficheros se encuentran en el directorio /etc/freeradius
clients.conf ( configuramos un AP con ip 192.168.5.139 y secreto radius = shhh ):
cd /etc/freeradius root@raspy:/etc/freeradius# cp clients.conf clients.conf.old root@raspy:/etc/freeradius# echo ' ' > clients.conf root@raspy:/etc/freeradius# vim clients.conf client localhost { ipaddr = 127.0.0.1 secret = testing123 require_message_authenticator = no } client 192.168.5.139 { secret = shhh shortname = AP nastype = other }
eap.conf
En este fichero, se especifican entre otros, la contraseña de la Root CA y las rutas a los certificados.
root@raspy:/etc/freeradius# cp eap.conf eap.conf.old root@raspy:/etc/freeradius# echo ' ' > eap.conf root@raspy:/etc/freeradius# vi eap.conf eap { default_eap_type = tls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no tls { private_key_password = eFca8zvQKH8ZnsGFUNr private_key_file = ${raddbdir}/certs/raspy.capa3.es.pem certificate_file = ${raddbdir}/certs/raspy.capa3.es.pem CA_file = ${raddbdir}/certs/root.pem dh_file = ${raddbdir}/certs/dh random_file = ${raddbdir}/certs/random fragment_size = 1024 include_length = yes cipher_list = "DEFAULT" max_entries = 255 } }
users (pondremos un usuario por cada certificado de cliente)
root@raspy:/etc/freeradius# cp users users.old root@raspy:/etc/freeradius# echo ' ' > users root@raspy:/etc/freeradius# vi users "xavi" Auth-Type := EAP
- Permisos:
cd /etc/freeradius/certs root@raspy:/etc/freeradius# chmod 750 * root@raspy:/etc/freeradius# chmod g-s * root@raspy:/etc/freeradius# cd /etc/freeradius/ root@raspy:/etc/freeradius# chown root:freerad users eap.conf clients.conf root@raspy:/etc/freeradius# chmod 640 users eap.conf clients.conf
Ya podemos arrancar el freeradius en modo debug con freeradius -X
Si todo va bien, veremos el arranque cargando los módulos, configuraciones y al final se pondrá a la escucha:
... adding new socket proxy address * port 57555 Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel Listening on proxy address * port 1814 Ready to process requests.
Una vez verificado podemos arrancarlo como servicio con:
pi@raspy ~ $ sudo /etc/init.d/freeradius start
[ ok ] Starting FreeRADIUS daemon: freeradius.
- Revocación de Certificados
Un aspecto importante de la seguridad es mantener la lista de certificados.
Si deseamos anular un certificado porque se ha comprometido o el usuario ya no existe, podemos revocar un certificado.
Para tal motivo he creado un usuario y certificado llamado “borrable”.
Verificamos la lista de certificados emitidos.
Si sale una V al principio de la línea, el certificado es Válido:
root@raspy:/# cat /etc/freeradius/certs/demoCA/index.txt V 140513220202Z 01 unknown /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=raspy.capa3.es/emailAddress=xxx@capa3.es V 140513223610Z 02 unknown /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=xavi/emailAddress=xxx@capa3.es V 140514000202Z 03 unknown /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=borrable/emailAddress=borrable@capa3.es
Revocamos el certificado del usuario “borrable”.
Usaremos la contraseña de la root CA:
root@raspy:/etc/freeradius/certs# openssl ca -revoke borrable.pem
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Revoking Certificate 03.
Data Base Updated
Verificamos que el certificado está revocado.
Si sale una R al princio de la linea, el certificado ha sido revocado:
root@raspy:/etc/freeradius/certs# grep borrable /etc/freeradius/certs/demoCA/index.txt R 140514000202Z 130514001935Z 03 unknown /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=borrable/emailAddress=borrable@capa3.es
- Logs
Cuando ya tengamos un AP o switch configurados con 802.1x, en el directorio /var/log/freeradius/radacct/ se generarán logs por cada NAS y día del tipo:
cat /var/log/freeradius/radacct/192.168.5.139/detail-20130404
Wed Apr 24 20:26:44 2013
Acct-Session-Id = "00000039"
Called-Station-Id = "001e.eeee.ffff"
Calling-Station-Id = "0024.aaaa.bbbb"
Cisco-AVPair = "ssid=capa3.es"
Cisco-AVPair = "vlan-id=1"
Cisco-AVPair = "nas-location=unspecified"
Cisco-AVPair = "auth-algo-type=eap-tls"
User-Name = "xavi"
Acct-Authentic = RADIUS
Cisco-AVPair = "connect-progress=Call Up"
Acct-Session-Time = 104
Acct-Input-Octets = 25466
Acct-Output-Octets = 1357
Acct-Input-Packets = 300
Acct-Output-Packets = 12
Acct-Terminate-Cause = Lost-Carrier
Cisco-AVPair = "disc-cause-ext=No Reason"
Acct-Status-Type = Stop
NAS-Port-Type = Wireless-802.11
Cisco-NAS-Port = "300"
NAS-Port = 300
Service-Type = Framed-User
NAS-IP-Address = 192.168.5.139
Acct-Delay-Time = 0
Acct-Unique-Session-Id = "b9d6b426065adde2"
Timestamp = 1366835204
Wed Apr 24 20:27:05 2013
Acct-Session-Id = "0000003C"
Called-Station-Id = "001e.eeee.ffff"
Calling-Station-Id = "0024.aaaa.bbbb"
Cisco-AVPair = "ssid=capa3.es"
Cisco-AVPair = "vlan-id=1"
Cisco-AVPair = "nas-location=unspecified"
User-Name = "xavi"
Cisco-AVPair = "connect-progress=Call Up"
Acct-Authentic = RADIUS
Acct-Status-Type = Start
NAS-Port-Type = Wireless-802.11
Cisco-NAS-Port = "301"
NAS-Port = 301
Service-Type = Framed-User
NAS-IP-Address = 192.168.5.139
Acct-Delay-Time = 0
Acct-Unique-Session-Id = "b89c30055a6a1cb6"
Timestamp = 1366835225
Los logs del propio servidor se hallan en /var/log/freeradius/radiusd.log
Si existiera algún error en la configuración, permisos etc, a parte de arrancar el servicio en modo debug como antes hemos explicado podemos revisar los logs del radiusd. En el siguiente ejemplo vemos que carga mal por pemisos y por el módulo eap.conf y al final ya arranca bien después de la corrección:
root@raspy:~# cat /var/log/freeradius/radius.log Wed Apr 3 22:44:24 2013 : Info: Loaded virtual server Wed Apr 3 22:44:24 2013 : Info: Loaded virtual server inner-tunnel Wed Apr 3 22:44:24 2013 : Info: ... adding new socket proxy address * port 56128 Wed Apr 3 22:44:24 2013 : Info: Ready to process requests. Wed Apr 3 22:46:11 2013 : Info: Signalled to terminate Wed Apr 3 22:46:11 2013 : Info: Exiting normally. Wed Apr 3 23:39:13 2013 : Error: rlm_eap: SSL error error:0200100D:system library:fopen:Permission denied Wed Apr 3 23:39:13 2013 : Error: rlm_eap_tls: Error reading certificate file /etc/freeradius/certs/server.pem Wed Apr 3 23:39:13 2013 : Error: rlm_eap: Failed to initialize type tls Wed Apr 3 23:39:13 2013 : Error: /etc/freeradius/eap.conf[17]: Instantiation failed for module "eap" Wed Apr 3 23:39:13 2013 : Error: /etc/freeradius/sites-enabled/default[310]: Failed to load module "eap". Wed Apr 3 23:39:13 2013 : Error: /etc/freeradius/sites-enabled/default[252]: Errors parsing authenticate section. Wed Apr 3 23:39:13 2013 : Error: Failed to load virtual server Thu Apr 4 18:25:53 2013 : Error: rlm_eap: SSL error error:0200100D:system library:fopen:Permission denied Thu Apr 4 18:25:53 2013 : Error: rlm_eap_tls: Error reading certificate file /etc/freeradius/certs/server.pem Thu Apr 4 18:25:53 2013 : Error: rlm_eap: Failed to initialize type tls Thu Apr 4 18:25:53 2013 : Error: /etc/freeradius/eap.conf[17]: Instantiation failed for module "eap" Thu Apr 4 18:25:53 2013 : Error: /etc/freeradius/sites-enabled/default[310]: Failed to load module "eap". Thu Apr 4 18:25:53 2013 : Error: /etc/freeradius/sites-enabled/default[252]: Errors parsing authenticate section. Thu Apr 4 18:25:53 2013 : Error: Failed to load virtual server Thu Apr 4 21:03:55 2013 : Info: Loaded virtual server Thu Apr 4 21:03:55 2013 : Info: Loaded virtual server inner-tunnel Thu Apr 4 21:03:55 2013 : Info: ... adding new socket proxy address * port 55038 Thu Apr 4 21:03:55 2013 : Info: Ready to process requests.
Para finalizar la parte de freeradius, a continuación veremos el resultado de un debug de una sessión EAP-TLS satisfactoria:
rad_recv: Access-Request packet from host 192.168.5.139 port 1645, id=22, length=161 User-Name = "xavi" Framed-MTU = 1400 Called-Station-Id = "001e.eeee.ffff" Calling-Station-Id = "0024.aaaa.bbbb" Service-Type = Login-User Message-Authenticator = 0x30e0359ebbe607c572f38c89c496332f EAP-Message = 0x0206001f0d002e639bc9e2c0509b01653f2c24131d24a9f0950580d5eea41b NAS-Port-Type = Wireless-802.11 NAS-Port = 391 State = 0x8282207481842d48f44a42587b911ea1 NAS-IP-Address = 192.168.5.139 NAS-Identifier = "ap" # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "xavi", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] EAP packet type response id 6 length 31 [eap] No EAP Start, assuming it's an on-going EAP conversation ++[eap] returns updated [files] users: Matched entry xavi at line 1 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns noop Found Auth-Type = EAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group authenticate {...} [eap] Request found, released from the list [eap] EAP/tls [eap] processing type tls [tls] Authenticate [tls] processing EAP-TLS [tls] eaptls_verify returned 7 [tls] Done initial handshake [tls] <<< TLS 1.0 Handshake [length 0397], Certificate [tls] chain-depth=1, [tls] error=0 [tls] --> User-Name = xavi [tls] --> BUF-Name = raspy.capa3.es [tls] --> subject = /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=raspy.capa3.es/emailAddress=raspy@capa3.es [tls] --> issuer = /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=raspy.capa3.es/emailAddress=raspy@capa3.es [tls] --> verify return:1 [tls] chain-depth=0, [tls] error=0 [tls] --> User-Name = xavi [tls] --> BUF-Name = xavi [tls] --> subject = /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=xavi/emailAddress=raspy@capa3.es [tls] --> issuer = /C=ES/ST=Barcelona/L=Barcelona/O=capa3.es/CN=raspy.capa3.es/emailAddress=raspy@capa3.es [tls] --> verify return:1 [tls] TLS_accept: SSLv3 read client certificate A [tls] <<< TLS 1.0 Handshake [length 0106], ClientKeyExchange [tls] TLS_accept: SSLv3 read client key exchange A [tls] <<< TLS 1.0 Handshake [length 0106], CertificateVerify [tls] TLS_accept: SSLv3 read certificate verify A [tls] <<< TLS 1.0 ChangeCipherSpec [length 0001] [tls] <<< TLS 1.0 Handshake [length 0010], Finished [tls] TLS_accept: SSLv3 read finished A [tls] >>> TLS 1.0 ChangeCipherSpec [length 0001] [tls] TLS_accept: SSLv3 write change cipher spec A [tls] >>> TLS 1.0 Handshake [length 0010], Finished [tls] TLS_accept: SSLv3 write finished A [tls] TLS_accept: SSLv3 flush data [tls] (other): SSL negotiation finished successfully SSL Connection Established [tls] eaptls_process returned 13 ++[eap] returns handled Sending Access-Challenge of id 22 to 192.168.5.139 port 1645 EAP-Message = 0x010700450d800000003b14030100010116030100307adf7a076b43a1ce3c40dd9e3b4a97a59f052be65a0f82656e26794241cfa251c4a5a11cf33b28059cc3aee9bf826a5f Message-Authenticator = 0x00000000000000000000000000000000 State = 0x8282207486852d48f44a42587b911ea1 Finished request 12. Going to the next request Waking up in 4.7 seconds. rad_recv: Access-Request packet from host 192.168.5.139 port 1645, id=23, length=136 User-Name = "xavi" Framed-MTU = 1400 Called-Station-Id = "001e.eeee.ffff" Calling-Station-Id = "0024.aaaa.bbbb" Service-Type = Login-User Message-Authenticator = 0x761c1d941cfa4aeaf34232a44d38870e EAP-Message = 0x020700060d00 NAS-Port-Type = Wireless-802.11 NAS-Port = 391 State = 0x8282207486852d48f44a42587b911ea1 NAS-IP-Address = 192.168.5.139 NAS-Identifier = "ap" # Executing section authorize from file /etc/freeradius/sites-enabled/default +- entering group authorize {...} ++[preprocess] returns ok ++[chap] returns noop ++[mschap] returns noop ++[digest] returns noop [suffix] No '@' in User-Name = "xavi", looking up realm NULL [suffix] No such realm "NULL" ++[suffix] returns noop [eap] EAP packet type response id 7 length 6 [eap] No EAP Start, assuming it's an on-going EAP conversation ++[eap] returns updated [files] users: Matched entry xavi at line 1 ++[files] returns ok ++[expiration] returns noop ++[logintime] returns noop ++[pap] returns noop Found Auth-Type = EAP # Executing group from file /etc/freeradius/sites-enabled/default +- entering group authenticate {...} [eap] Request found, released from the list [eap] EAP/tls [eap] processing type tls [tls] Authenticate [tls] processing EAP-TLS [tls] Received TLS ACK [tls] ACK handshake is finished [tls] eaptls_verify returned 3 [tls] eaptls_process returned 3 [tls] Adding user data to cached session [eap] Freeing handler ++[eap] returns ok # Executing section post-auth from file /etc/freeradius/sites-enabled/default +- entering group post-auth {...} ++[exec] returns noop Sending Access-Accept of id 23 to 192.168.5.139 port 1645 MS-MPPE-Recv-Key = 0xaec64d137815c0ca86bd6f108a1e8fb4abdc94a2257c9fbb38d2b47435aa2206 MS-MPPE-Send-Key = 0x1d7b896b053ad4c645ebbdd0c7696be01f14966dc2597b4519c7eecff4b28144 EAP-Message = 0x03070004 Message-Authenticator = 0x00000000000000000000000000000000 User-Name = "xavi" Finished request 13. Going to the next request