FreeRadius: Ver y editar logs, modo depuración y resolver problemas

Buenas de nuevo chic@s, por no alargar el post anterior de cómo montar un servidor FreeRadius en Debian + AP Ubiquiti, he decidí en su momento crear otro post viendo algo sobre los logs, su edición, viendo el modo depuración para encontrar los errores y resolverlos.

Así que continuaremos un poco con lo que ya teniamos montado.

Modo depuración: freeradius -X, encontrando los errores

Aquí he recopilado distintos errores captados en el modo depuración:

Configuración errónea de un cliente NAS en clients.conf

En este primer ejemplo, he configurado mal un cliente NAS en el fichoer clients.conf. El perfil de Servidor Radius en Ubiquiti si esta bien configurado pero en la parte de FreeRadius no, ya que tengo otra IP distinta a la del AP Ubiquiti.

Por lo tanto, si FreeRadius no detecta ninguna coiniciencia en dicho fichero rechazará la comunicación, como vemos en el modo depuración

Ignoring request to auth address * port 1812 bound to server default from unknown client 192.168.120.51 port 41258 proto udp

El servidor FreeRADIUS nos indica que ignora la solicitud de autenticación de un cliente desconocido (AP Ubiquiti)

Clave precompartida entre cliente y servidor FreeRadius no es la misma

Este error es fácil de ver, la shared secret, clave compartida usada entre el cliente y servidor RADIUS no es la misma, por eso nos arroja dicho error.

FreeRADIUS exige una version minima de TLS 1.3

Si has entendido el primer post, hemos montado un servidor FreeRadius usando PEAP (que usa certificado en el servidor), por lo que TLS esta de por medio. FreRADIUS 3.0 exige una versión minima de TLS 1.3

Yo me he intentado conectar desde dos sistemas MAC ya antiguos (MacOS Mavericks y Yosemite), en los dos sistemas FreeRadius nos arroja el error con el cliente por el tema del TLS. En la linea 11 lo dice claramente.

(1) eap_peap: Continuing EAP-TLS
(2) eap_peap: Peer indicated complete TLS record size will be 142 bytes
(3) eap_peap: Got complete TLS record (142 bytes)
(4) eap_peap: [eaptls verify] = length included
(5) eap_peap: (other): before SSL initialization
(6) eap_peap: TLS_accept: before SSL initialization
(7) eap_peap: TLS_accept: before SSL initialization
(8) eap_peap: <<< recv TLS 1.3  [length 0089]
(9) eap_peap: >>> send TLS 1.0 Alert [length 0002], fatal protocol_version
(10) eap_peap: ERROR: TLS Alert write:fatal:protocol version
tls: TLS_accept: Error in error
(11) eap_peap: ERROR: Failed in __FUNCTION__ (SSL_read): error:14209102:SSL routines:tls_early_post_process_client_hello:unsupported protocol
(12) eap_peap: ERROR: System call (I/O) error (-1)
(13) eap_peap: ERROR: TLS receive handshake failed during operation
(14) eap_peap: ERROR: [eaptls process] = fail
(15) eap: ERROR: Failed continuing EAP PEAP (25) session.  EAP sub-module failed

Puedes comprobar la versión de TLS usando esta página, nuestro sistema soporta TLS 1.2 por lo que no es compatible con FreeRadius, habría que explorar alguna solución de cómo actualizar ese paquete del sistema o tocará actualizar directamente el sistema operativo.

Enlace a página: https://clienttest.ssllabs.com:8443/ssltest/viewMyClient.html

Con estos ejemplos ya sabes lo potente que es el modo depuración.

Logs:

Los registros de FreeRadius se guardan en el siguiente directorio:

/var/log/freeradius/
  • La carpeta raddact guarda la contabilidad/accounting.
  • El archivo radius.log almacena registros del servidor radius como errores, avisos, etc.
  • El archivo radwtmp también guarda registros de contabilidad pero en formato wtmp.

Accounting – raddact

La contalbilidad (Accounting) de FreeRadius se almacena en la carpeta radacct. Exactamente se creará una carpeta por cada cliente NAS (Punto de acceso, servidor VPN, Switch, etc). El nombre del directorio será su dirección IP.

Dentro de cada cliente NAS, se crean fichero por cada dia con el nombre: detail-AñoMesDia

Estos fichero guardan las conexiones de los usuarios finales (Mac, Linux, iOS, etc), vamos a analizar uno cualquiera.

Aqui podemos ver datos interesantes como la dirección MAC del cliente final, el tipo de puerto del cliente NAS, aque Wi-Fi se ha conectado, el usuario conectado y muchas cosas más…

Accounting – radwtmp

Como ya explicamos antes, el fichero radwtmp guarda los registros en formato wtmp.

Si este fichero lo abrimos con un cat se entenderá pero «a medias», debemos ejecutar con el comando utmpdump para poder verlo con claridad:

utmpdump fichero

Modificar los registros

También podemos modificar los logs tanto el directorio donde se registra todo, como el nombre de los ficheros que generá, tenemos que editar el modulo detail, que está en el directorio

/etc/freeradius/3.0/mods-enabled/

El fichero se llama detail, en los propios comentarios del archivo nos explica como cambiar esto e ir añadiendo varibles ya existentes.

Si haces lees el archivo radiusd.conf podrás ver las variables (radacctdir, logdir, etc) de los directorios.

sudo cat /etc/freeradius/3.0/radiusd.conf
#Variables de directorios que te vas a encontrar en los distintos ficheros.
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius/3.0
radacctdir = ${logdir}/radacct

#  name of the running server.  See also the "-n" command-line option.

name = freeradius

#  Location of config and logfiles.
confdir = ${raddbdir}
modconfdir = ${confdir}/mods-config
certdir = ${confdir}/certs
cadir   = ${confdir}/certs
run_dir = ${localstatedir}/run/${name}

Aquí te dejo un enlace https://wiki.freeradius.org/config/run_time_variables con variables y más cosas relacionadas para que te ilumines.

Espero que te haya gustado el post!, yo he aprendido más cosa. Como no hay mucha ayuda en internet sobre FreeRadius me ha tocado observar y luego tocar, por lo que me ha llevado más tiempo pero a veces la informática es así :D, nos vemos en el siguiente post!

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.