Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introducción

Este manual explica la instalación y configuración de un servidor RADIUS IdP (identity provider) y SP (service provider) para participar en la jerarquía de los servidores RADIUS del servicio eduroam. Autenticación: EAP-TTLS + PAP; cifrado: WPA(2) + TKIP. El manual está previsto para Ubuntu server 8.04 con freeradius-2.1.6 (pero debería funcionar para todas las versiones freeradius 2.1.x).

En este ejemplo se usa un certificado intermediate (de Verisign). Antes de usarlo hay que añadir el certificado intermediate al certificado root de la CA (certificate authority) correspondiente. Si se usan certificados de RedIRIS este paso no hace falta.

Preparación del certificado

generación de un clave RSA:

...

Code Block
languagebash
themeMidnight
$ cat ca.pem cert_verisign_intermediate.pem > ca_bundle.pe

Instalación freeradius-server-2.1.x

...

Code Block
languagebash
themeMidnight
$ grep -ri error config.log | sort | uniq
En Ubuntu salen las líneas siguientes que se puede ignorar. Si aparecen más u otras notificaciones hay que comprobar si se cumplen todas las dependencias del freeradius.
conftest.c:106: error: void value not ignored as it ought to be
conftest.c:110: error: 'struct utmpx' has no member named 'ut_xtime'
conftest.c:119: error: too many arguments to function 'ctime_r'
conftest.c:25: error: 'not' undeclared (first use in this function)
conftest.c:25: error: (Each undeclared identifier is reported only once
conftest.c:25: error: expected ';' before 'big'
conftest.c:25: error: for each function it appears in.)
conftest.c:34:22: error: resource.h: No such file or directory
conftest.c:51:21: error: winsock.h: No such file or directory
conftest.c:53:26: error: sys/security.h: No such file or directory
conftest.c:58:18: error: prot.h: No such file or directory
conftest.c:60:17: error: sia.h: No such file or directory
conftest.c:60:18: error: siad.h: No such file or directory
conftest.c:67:22: error: resource.h: No such file or directory
conftest.c:84:21: error: winsock.h: No such file or directory
conftest.c:86:26: error: sys/security.h: No such file or directory
conftest.c:8:28: error: ac_nonexistent.h: No such file or directory
conftest.c:91:18: error: prot.h: No such file or directory
conftest.c:93:17: error: sia.h: No such file or directory
conftest.c:93:18: error: siad.h: No such file or directory
conftest.cpp:19:28: error: ac_nonexistent.h: No such file or directory
/* Override any GCC internal prototype to avoid an error.

Arrancar el servidor freeradius

Para comprobar si la instalación ha ido bien, arranca el servidor radius en modo debug (genera mucha salida).

...

Code Block
languagebash
themeMidnight
......

Wed May 20 15:55:11 2009 : Debug: Listening on authentication address * port 1812

Wed May 20 15:55:11 2009 : Debug: Listening on accounting address * port 1813

Wed May 20 15:55:11 2009 : Debug: Listening on proxy address * port 1814

Wed May 20 15:55:11 2009 : Debug: Ready to process requests.

Para el freeradius con CTRL-C

Configuración freeradius

Hay que adaptar unos cuantos ficheros de configuración:

...

A continuación se muestra el contenido de estos ficheros.

clients.conf

El "shortname" sólo aparece en el fichero log. No tiene otra significación.

...

  1. solo requests para el "home" organización se autentifica vía LDAP
    if ("%{User-Name}" =~ /@DOMINIO.ORG/) {
    ldap
    }
    }
    authenticate {
    Auth-Type PAP {
    pap
    }
    unix
    Auth-Type LDAP {
    ldap
    }
    eap
    }
    preacct {
    preprocess
    acct_unique
    suffix
    files
    }
    accounting {
    detail
    unix
    radutmp
    attr_filter.accounting_response
    }
    session {
    radutmp
    }
    post-auth {
    exec
    Post-Auth-Type REJECT {
    attr_filter.access_reject
    }
    }
    pre-proxy {
    }
    post-proxy {
    eap
    }

Haz una copia de seguridad de la configuración original

$ tar vcf backupdir/raddb_orig.tar /usr/local/etc/raddb

Configuración del servidor freeradius

Se puede bajar un tarball con las configuraciones: Freeradius_eduroam_config.rar.

...

$ sudo chown -R freerad:freerad radius/

Arranca el servidor

Primero se debe arrancar el servidor freeradius en el modo "foreground + debug" para comprobar si el servidor arranca limpio

$ sudo radiusd -X -xx

El comando radtest

Se puede comprobar si funciona el servidor radius desde la línea de comando con el comando radtestá. El comando radtest se instala automáticamente junto con el servidor freeradius.

...

Nota: en principio, todos los miembros de Eduroam disponen de una cuenta radius-test. Asá se puede ejecutar el comando radtest contra cada miembro de Eduroam. Sólo hay que cambiar el dominio en el comando radtestá.

Haz que el servidor arranca durante el boot

Nota: este init-script está creado para Ubuntu Linux. Hay que adaptar el script para otras distribuciones Linux.

...

$ sudo /etc/init.d/freeradius start

Monitorización de los servidores RADIUS con Nagios

Nagios ([es un sistema open source de monitorización de redes, servicios y aplicaciones ampliamente utilizado.

...

/usr/bin/radtest radius-test@$REALM test $SERVER 10 hola123 2>&1| grep "RADIUS OK" >/dev/null 2>&1
STAT1=$?
/usr/bin/radtest radius-test@rediris.es test $SERVER 10 hola123 2>&1| grep "RADIUS OK" >/dev/null 2>&1
STAT2=$?

if Free Radius FreeRADIUS; then
echo $STATE_CRITICAL_LOCAL_MESSAGE
if Free Radius FreeRADIUS; then
echo $STATE_CRITICAL_REDIRIS_MESSAGE
fi
exit $STATE_CRITICAL
else
if Free Radius FreeRADIUS; then
echo $STATE_CRITICAL_REDIRIS_MESSAGE
exit $STATE_CRITICAL
fi
echo $STATE_OK_MESSAGE
exit $STATE_OK
fi

Depuración de conexiones en freeradius

Depurar en freeradius cuando el servidor ya se encuentra en producción, pudiera parecer una tarea imposible, pero no lo es. Eso sí, debemos olvidarnos de lanzar el servidor con la opción

...