"RADIUS" (Remote Authentication Dial-In User Server") es un protocolo AAA (Autenticación, Autorización y registro de Auditoria) empleado para controlar el acceso a los servicios de red. Nosotros lo utilizaremos para nuestro punto de acceso "Wifi", reemplazando a los famosos e inseguros métodos de clave compartida.
El dispositivo cuando se intenta conectar a cualquier punto de acceso, enviará un nombre y una contraseña al cliente del servicio (NAS), que será la propia "AP". Este consultará las credenciales en el servidor "Radius", el cual, utilizando esquemas de autenticación como PAP, CHAP o EAP, autorizará o denegará el acceso.
Para implementar este servicio, utilizaremos el programa "FreeRadius" y lo integraremos en una base de datos "MySQL". Instalaremos también el programa "DaloRadius", que nos facilitará la administración de nuestro servidor "Radius" via "Browser".
Primero instalaremos los paquetes para "FreeRadius" y su módulo para "MySQL":
$ sudo apt-get install freeradius freeradius-mysql freeradius-utils
Posteriormente, instalaremos las dependencias necesarias para "FreeRadius", entre ellas el servidor "MySQL" y "apache2":
$ sudo apt-get install apache2 php5 php5-gd php-pear php-db libapache2-mod-php5 php-mail php5-mysql mysql-server
Por último, descargaremos "DaloRadius" desde su código fuente:
$ sudo wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
Descomprimiremos el archivo:
$ sudo tar xzf daloradius-0.9-9.tar.gz
Moveremos el contenido y añadiremos un directorio nuevo llamado "daloradius" dentro del directorio raíz web de "Apache":
$ sudo mv -f daloradius-0.9-9 /var/www/daloradius/
Crearemos ahora la base de datos en "MySQL" con los esquemas pertinentes:
$ mysqladmin -u root -p create radius
$ cd /var/www/daloradius/contrib/db
$ mysql -u root -p radius < fr2-mysql-daloradius-and-freeradius.sql
Añadiremos el usuario "radius" y le otorgamos los permisos oportunos en "MySQL" para que "Freeradius" pueda administrar la base de datos que acabamos de crear:
$ mysql -u root -p
>GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY 'radpass';
>quit
Una vez configurada la base de datos, pasaremos a modificar los archivos pertinentes en "FreeRadius".
Abrimos el archivo principal "/etc/freeradius/radiusd.conf" y descomentamos la siguiente línea para habilitar el archivo de configuración "sql.conf":
$INCLUDE sql.conf
Editaremos ahora el archivo "/etc/freeradius/sql.conf" y modificamos estos parámetros:
server = "localhost"
login = "radius" password = "radpass" readclients = yes |
Posteriormente, ediatremos el archivo "default" y "inner-tunnel", habilitando las opciones "sql" para que "Freeradius" pueda conectar con la base de datos.
$ sudo nano /etc/freeradius/sites-enabled/default
En los apartados "authorize", "accouting" y "post-auth" descomentamos las líneas "sql".
$ sudo nano /etc/freeradius/sites-enabled/inner-tunnel
También descomentamos en este archivo la opción "sql" en la sección "authorize".
Nos queda permitir que "DaloRadius" pueda también acceder a la base de datos con el usuario "radius", por lo que editamos el archivo " /var/www/daloradius/library/daloradius.conf.php":
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radpass'; |
Reiniciamos "FreeRadius" y "Apache2" para que nuestra configuración surta efecto:
$ sudo /etc/init.d/freeradius restart
$ sudo /etc/init.d/apache2 restart
Ahora haremos un "test" para confirmar que todos los programas funcionan correctamente.
Abrimos nuestro navegador e introducimos:
http://ip_o_nombre_Raspberry/daloradius
http://ip_o_nombre_Raspberry/daloradius
Introducimos las credenciales por defecto que son "administrator/radius":
Vamos a "management > new user" y creamos el usuario "prueba" con password "prueba".
Testearemos la conexión en el t:
$ radtest prueba prueba 127.0.0.1 1581 testing123
Si nos devuelve el mensaje "Access-Accept" es que es la conexión es correcta.
Ya solo nos falta configurar el cliente "NAS", que en nuestro caso es el punto de acceso "Wifi".
Abriremos el archivo de configuración "/etc/hostapd/hostapd.conf" y modificaremos o añadiremos estos parámetros:
En este archivo podemos observar que está configurado de forma que nuestro servidor "Radius" corresponde en ip con que nuestro "NAS", ya que La Raspberry va a desempeñar esos dos roles.
Solo nos queda conectarnos a la "AP" introduciendo nuestras credenciales de prueba de manera automática desde un pc Windows 8/10, un móvil "Android", o un mac...
Si tenemos un pc con Windows 7 o anterior, deberemos configurar nuestra conexión de red de la siguiente forma:
Podremos observar en el archivo de registro "syslog" de nuestra Raspberry que nos hemos auntentificado correctamente.
Ya tendremos por tanto nuestro servidor "RADIUS" activo. Con la amigable interface web "DaloRadius" podremos configurar y administrar todos los párametros relativos al servidor como control de usuarios, grupos, visualizar logs, vigencia de las cuentas, monitorizar el tráfico,... y muchas opciones más.
Hasta una nueva entrada...
Vamos a "management > new user" y creamos el usuario "prueba" con password "prueba".
Testearemos la conexión en el t:
$ radtest prueba prueba 127.0.0.1 1581 testing123
Si nos devuelve el mensaje "Access-Accept" es que es la conexión es correcta.
Ya solo nos falta configurar el cliente "NAS", que en nuestro caso es el punto de acceso "Wifi".
Abriremos el archivo de configuración "/etc/hostapd/hostapd.conf" y modificaremos o añadiremos estos parámetros:
interface=wlan0
driver=rtl871xdrv
country_code=ES
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ssid=castillo_movil
macaddr_acl=0
hw_mode=g
channel=11
wme_enabled=1 # Habilitta el modo n
ieee80211n=1 # Requerire autorización IEEE 802.1X
auth_algs=3 ieee8021x=1 # Ip de nuestra interfaz
eapol_version=2 # Version EAP
eap_message="bienvenidos al castillo" # Mensaje de bienvenida
eapol_key_index_workaround=1
wpa=3 # Tipo de WPA
wpa_key_mgmt=WPA-EAP # Controla los algoritmos de gestión de claves del #cliente.
wpa_pairwise=TKIP # Controla el cifrado de datos WPA
wpa_group_rekey=600 # Intervalo de tiempo para el cambio de claves GTK en segundos
wpa_gmk_rekey=86400 # Intervalo de tiempo para el cambio de claves GMK en segundos
rsn_pairwise=CCMP
eap_server=0 # Es necesario si nuestro hostapd está configurado para actuar #como un servidor RADIUS
own_ip_addr=192.168.0.102 # La dirección IP del punto de acceso
nas_identifier=castilloAP # Identificador de nuestro NAS
auth_server_addr=192.168.0.102 # Ip del servidor RADIUS para la #autentificación
auth_server_port=1812 # Puerto de comunicación de RADIUS
auth_server_shared_secret=clave # Clave compartida entre NAS y RADIUS
acct_server_addr=192.168.0.102 # Ip del servidor RADIUS para la #cuentas de usuario
acct_server_port=1813 # Puerto de comunicación de RADIUS
acct_server_shared_secret=clave # Clave compartida entre NAS y RADIUS
|
En este archivo podemos observar que está configurado de forma que nuestro servidor "Radius" corresponde en ip con que nuestro "NAS", ya que La Raspberry va a desempeñar esos dos roles.
A continuación reiniciaremos "hostapd":
$ sudo /etc/init.d/hostapd restart
Añadiremos ahora nuestra "AP" como cliente "NAS". Accederemos via "web" a "Daloradius" y vamos a "management>nas>new nas".
Solo nos queda conectarnos a la "AP" introduciendo nuestras credenciales de prueba de manera automática desde un pc Windows 8/10, un móvil "Android", o un mac...
Si tenemos un pc con Windows 7 o anterior, deberemos configurar nuestra conexión de red de la siguiente forma:
Podremos observar en el archivo de registro "syslog" de nuestra Raspberry que nos hemos auntentificado correctamente.
Ya tendremos por tanto nuestro servidor "RADIUS" activo. Con la amigable interface web "DaloRadius" podremos configurar y administrar todos los párametros relativos al servidor como control de usuarios, grupos, visualizar logs, vigencia de las cuentas, monitorizar el tráfico,... y muchas opciones más.
Hasta una nueva entrada...