El tema de la seguridad en las redes WiFi nos trae de cabeza a mas de uno. Cada vez son más los programas que permiten averiguar, en unos pocos minutos, la clave de red y aún más fácil cuando son instalados en dispositivos móviles android (por ejemplo el programa Pullwifi).
Esto no lleva a plantearnos nuevos retos que permitan hacer mas seguro nuestra red, es por esto que vamos a instalar un servidor RADIUS en mi instituto ¿quieres saber qué es? ¿qué elementos hardware y software necesitas? ¿cómo se instala y configura? pues no dejes de leer el resto de la entrada en la que doy respuesta a todas estas preguntas, seguro que no te arrepentirás.
¿Qué es un servidor Radius?
Vamos a intentar explicarlo lo más sencillo posible. Las siglas RADIUS corresponden a Remote Authentication Dial-In User Server. Es un protocolo de autenticación y autorización para aplicaciones de acceso a la red, en nuestro caso red inalámbrica (WiFi). Cuando se realiza la conexión con un punto de acceso WiFi, en lugar de una clave de red típica, se enviará un nombre de usuario y una contraseña. Esta información se transfiere a un servidor RADIUS sobre el protocolo RADIUS. El servidor RADIUS comprueba que la información de usuario es correcta (en nuestro caso se almacenará en la base de datos MySQL) utilizando esquemas de autenticación como PAP, CHAP o EAP. Si el usuario es aceptado, el servidor autorizará el acceso al sistema del dispositivo (ordenador, smartphone, tablet, etc) y le asigna los recursos de red necesarios para establecer la conexión a la misma tales como una dirección IP, puerta de enlace, etc. Una vez que sabemos qué hemos entendido qué objetivo perseguimos, el siguiente gráfico ilustra el mapa final de nuestra red local, para que al lector le quede aún más claro.
Si seguimos las lineas verdes numeradas de la imagen, tendremos el siguiente ejemplo:
- Un ordenador portátil solicita acceso a la red WiFi (punto de acceso TP-LINK) mediante un usuario y password, proporcionado por el departamento de informática del centro.
- El punto de acceso enviará las credenciales al servidor RADIUS para que sean autenticadas. Si no son válidas, no se concederá la autorización para acceder a la red y se informará al cliente (autenticación incorrecta)
- En caso que las credenciales del usuario sean correctas, el servidor radius autorizará al cliente al acceso a la red, comunicándoselo al punto de acceso.
- El punto de acceso, a través del protocolo DHCP, enviará la dirección IP, macara, puerta de enlace y DNS al cliente para que este pueda acceder a la red WiFi.
¿Qué necesitamos?
Antes de ponernos el mono de trabajo, lo primero que tenemos que tener en cuenta es qué componentes software y hardware necesitamos para llevar a cabo el proceso. En nuestro caso hemos usado los siguientes:
- Un punto de acceso que soporte seguridad RADIUS (en nuestro caso, hemos utilizado el siguiente modelo de punto de acceso TP-LINK TL-WA801ND)
- Un ordenador con Linux Ubuntu 11.10
- Freeradius v2.1, uno de los servidores Radius más populares y de libre distribución.
- MySQL 5, una de las bases de datos más populares.
Instalación de MySQL y del servidor freeRadius
1. Lo primero que haremos es instalar la base de datos MySQL. Para ello, abriremos un terminal de Linux Ubuntu y cambiaremos a modo administrador con el comando sudo su. Cuando hayamos introducido la contraseña de administrador, utilizaremos el comando apt-get para descargar las comentadas librerías:
root@jmramirez-vmware:/home/jmramirez# apt-get update
root@jmramirez-vmware:/home/jmramirez# apt-get install mysql-server
En el proceso de instalación, nos pedirá la contraseña de administrador (root) para MySQL. Es muy importante poner una contraseña que recordemos fácilmente, ya que si no, no podremos acceder a las opciones de configuración de base de datos.
2. Concluido el proceso de instalación de MySQL, debemos instalar ahora algunas librerías necesarias para que todo funcione de forma correcta. Estas librerías son:
root@jmramirez-vmware:/home/jmramirez# apt-get install debhelper libltdl3-dev libpam0g-dev libmysqlclient15-dev build-essential libgdbm-dev libldap2-dev libsasl2-dev libiodbc2-dev libkrb5-dev snmp autotools-dev dpatch libperl-dev libtool dpkg-dev libpq-dev libsnmp-dev libssl-dev
3. Con el comando apt-get, también instalaremos el paquete freeRadius, junto con el paquete freeRadius-mysql que nos permitirá la integración de freeRadius en la base de datos:
root@jmramirez-vmware:/home/jmramirez# apt-get install freeradius freeradius-mysql
4. Editamos (por ejemplo, con el editor de texto vi) el archivo /etc/freeradius/users y creamos un usuario para hacer las pruebas del funcionamiento correcto del servidor freeRadius:
root@jmramirez-vmware:/home/jmramirez# vi /etc/freeradius/users
En el archivo /etc/freeradius/users hay varios ejemplos, ya creados, de diferentes tipos de usuarios los cuales podemos reutilizar para la prueba. Podemos descomentar (quitar el carácter # de delante de la línea) uno de estos usuarios o bien, crear uno nuevo con nuestros propios datos y lo ponemos al final del archivo. La siguiente pantalla muestra el que yo he usado:
5. Una vez modificado el fichero anterior, probaremos mediante la utilidad propia de freeRadius, denominada radtest, si funciona la autenticación. Pero antes, es importante reiniciar el servidor para que los cambios hechos en el fichero surtan efecto.
root@jmramirez-vmware:/home/jmramirez# service freeradius restart
root@jmramirez-vmware:/home/jmramirez# radtest jmramirez 1234561 127.0.0.1 1812 testing123
Si todo está configurado correctamente, debemos ver en el terminal de Ubuntu la información mostrada en la siguiente imagen. Es muy importante asegurarnos de recibir un Access-Accept del Access-Request que se ha enviado.
Inicialmente vemos que funciona correctamente, ahora lo siguiente será integrarlo con MySQL para utilizar los usuarios de base de datos, en lugar del usuario de pruebas del fichero users.
Integración de freeRadius con MySQL
6. Configuramos seguidamente el servidor freeRadius para que pueda leer los datos desde MySQL. En este punto, es necesario editar el archivo /etc/freeradius/radiusd.conf y descomentar la linea $INCLUDE sql.conf
7. Deberemos acceder a la administración de MySQL y crear la base de datos que albergará la configuración de freeRadius y un usuario para la misma. En este caso asumimos que la base de datos se llama radius:
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p
mysql > CREATE DATABASE radius;
mysql > exit;
Para el usuario, editaremos el fichero /etc/freeradius/sql/mysql/admin.sql con el fin de que quede de la siguiente manera. Nótese que el usuario, para la base de datos creada, se llama radius y su clave es admin:
8. Ahora introduciremos, mediante 4 scripts de base de datos, los datos de las tablas SQL de freeRadius en MySQL para el correcto funcionamiento del servidor. Estos scripts, están situados dentro del directorio /etc/freeradius/sql/mysql/
root@jmramirez-vmware:/home/jmramirez# cd /etc/freeradius/sql/mysql/
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius < admin.sql
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius < ippool.sql
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius < nas.sql
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius < schema.sql
9. Para ver si las tablas SQL se han creado correctamente, podemos hacer lo siguiente:
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius
mysql > show tables;
mysql > exit;
Si vemos los datos tal y como los muestra la siguiente ventana, todo habrá salido correctamente:
10. Ahora nos toca editar el archivo /etc/freeradius/sql.conf para establecer una conexión entre nuestro servidor freeRadius y la base de datos MySQL.
root@jmramirez-vmware:/home/jmramirez# vi /etc/freeradius/sql.conf
Buscamos la etiqueta Connection info y la dejamos como sigue:
#Connection info:
server = "localhost"
#port = 3306
login = "radius"
password = "admin"
Y también, en el mismo fichero, descomentamos la linea readclients = yes
11. El siguiente paso que daremos es el de editar el archivo /etc/freeradius/sites-available/default y descomentar la variable sql en las secciones authorize{} y accounting{}.Esto es necesario para que el servidor pueda obtener los datos desde las tablas SQL de la base de datos radius y así poder autenticar y autorizar los usuarios que creemos:
root@jmramirez-vmware:/home/jmramirez# vi /etc/freeradius/sites-available/default
Se procederá de la misma forma con el archivo /etc/freeradius/sites-available/default en la sección authorize{}
root@jmramirez-vmware:/home/jmramirez# vi /etc/freeradius/sites-enabled/inner-tunnel
12. Ahora procederemos a insertar un nuevo usuario en la base de datos. Este usuario nos servirá para poder autenticarnos desde un equipo, por ejemplo con Windows XP/7, contra el servidor freeRadius:
root@jmramirez-vmware:/home/jmramirez# mysql -u root -p radius;
mysql > INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('profesor', 'Cleartext-Password', 'clavewifi');
Nos aseguramos que el usuario se ha creado correctamente con la siguiente sentencia SQL. En este caso debe aparecer el usuario que hemos creado en la tabla radcheck.
mysql > SELECT * from radcheck WHERE UserName='profesor';
Con el fin de evitar problemas en la autenticación de radius actualizaremos el campo op del usuario recién creado al valor ‘:=’. Para ello ejecutamos en MySQL la sentencia:
mysql > UPDATE radcheck SET op =':=' WHERE username = 'professor';
El resultado es el que nos muestra la siguiente imagen:
13. Para probar que todo esta ok, y que podemos autenticarnos con el usuario recién creado, en lugar del usado al principio de este tutorial, reiniciamos freeRadius y usamos nuevamente la utilidad radtest.
root@jmramirez-vmware:/home/jmramirez# service freeradius restart
root@jmramirez-vmware:/home/jmramirez# radtest profesor clavewifi 127.0.0.1 1812 testing123
Debe aparecer el resultado que se muestra en la siguiente imagen. Como se puede apreciar en ella, al igual que ocurría al validar contra el fichero users, al hacerlo ahora contra MySQL también necesitamos seguir recibiendo un Access-Accept para el Access-Request que hemos solicitado con la utilidad radtest.
14. Ahora mismo, nuestro servidor radius sólo es capaz de autenticar en local. Para que pueda hacerlo con clientes remotos (nuestro punto de acceso será uno de ellos) se ha de modificar la tabla SQL nas. Para ello usaremos la siguiente sentencia:
mysql > INSERT INTO nas (nasname, shortname, type, secret) VALUES ('192.168.1.250', 'tplink', 'other', 'admin');
El significado de cada uno de los parámetros que acabamos de introducir en la tabla SQL es el siguientes:
- nasname = Dirección IP privada del cliente radius (en este caso la IP del punto de acceso)
- shortname = Nombre identificativo del cliente radius (puede ser cualquier valor)
- type = Tipo del dispositivo (cisco, etc.) se recomienda poner el valor other
- secret = Clave del usuario radius creado al principio, en nuestro caso admin
Cada uno de los clientes radius que tengamos se añadirá como nueva entrada en la tabla nas. Nosotros para probar que funciona, también añadiremos la IP del propio servidor RADIUS (en nuestro caso la 192.168.1.254) y utilizaremos la herramienta radtest para comprobarlo. Acabadas las pruebas, este registro podrá ser eliminado de base de datos.
Nótese que ahora, se usa la clave admin del usuario radius, en lugar de testing123, que era la clave del cliente local para pruebas.
mysql > INSERT INTO nas (nasname, shortname, type, secret) VALUES ('192.168.1.254', 'servidor', 'other', 'admin');
El resultado de la prueba lo podemos ver en la imagen siguiente. Hemos de tener en cuenta de nuevo el reiniciar otra vez el servidor freeRadius para que acepte los cambios introducidos. Si olvidamos hacer esto, no nos funcionará.
En este instante hemos concluido, de forma satisfactoria, la instalación y configuración de freeRadius con MySQL. El siguiente paso, es configurar la seguridad en el punto de acceso para que autentique contra el servidor freeRadius.
Configuración del punto de acceso como cliente Radius
15. Configuraremos el punto de acceso a través de la administración web del mismo. Para ello tendremos en cuenta los siguientes parámetros: IP privada, SSID de la WiFi, Servidor DHCP y por último la configuración de la seguridad para que apunte al servidor freeRadius.
NOTA: Usaremos un navegador de Internet, pondremos la IP 192.168.1.254 y las credenciales por defecto admin/admin.
Empezaremos configurando la IP del punto de acceso en el apartado Network. En nuestro caso hemos elegido la 192.168.1.250, que está en el rango de direcciones de la red clase C de nuestro router ADSL y que además fue añadida con anterioridad a la tabla SQL nas.
La puerta de enlace (Gateway) será la IP privada del Router ADSL, en nuestro caso la IP 192.168.1.1. así, el punto de acceso podrá tener salida a Internet. Para acabar, pulsaremos el botón Save para reiniciar. Todos los datos comentados los podemos ver en la siguiente imagen.
16. Ahora, en el apartado Wireless Settings, nos tocará configurar el modo de operación, que nosotros dejaremos por defecto (Access Point), el nombre del SSID de la red, que en nuestro caso será FPINFORMATICA y el país Spain. Una vez hecho esto, pulsamos sobre el botón Save y reiniciamos nuevamente el punto de acceso.
17. Antes de configurar la seguridad del punto de acceso, vamos a hacer que éste se comporte como servidor DHCP. Esto es así, porque en el router ADSL el DHCP será desactivado junto con su WiFi, de tal forma que dicho router se comporte como un router por cable de toda la vida. Para llevar a cabo esta configuración nos vamos al apartado DHCP Settings. Queremos destacar el rango de direcciones que va a servir y los DNS (hemos usado los de google). Nosotros hemos elegido de la dirección 192.168.1.2 a la 192.168.1.249, pero se puede poner otro rango. También le indicaremos que la puerta de enlace servida a los clientes sea la dirección IP privada del router ADSL. Una vez hecho esto, pulsamos nuevamente sobre el botón Save y reiniciamos el punto de acceso.
18. Lo último, y mas importante, que nos queda de configurar en el punto de acceso es la seguridad WPA/WPA2 del mismo para que valide contra el servidor freeRadius. En este caso, en el apartado Wireless Security, sólo tenemos que configurar la IP 192.168.1.254 de nuestro servidor Radius y la clave del usuario radius de MySQL, que si recordamos era admin. Pulsamos sobre el botón Save y reiniciamos el punto de acceso.
Por fin hemos acabado!!! ahora ya sólo nos queda configurar el adaptador de red WiFi de los sistemas operativos Windows XP y Windows 7 para que autentiquen contra el punto de acceso, y puedan tener acceso a la red. En la siguiente entrada de masqueteclas, aprenderás cómo llevar a cabo este proceso.
Si a parte de la seguridad en nuestra red queremos aumentar la velocidad de conexión de la misma, sustituyendo el router que nos proporciona la compañía ADSL por uno genérico, sin duda tenéis que leer los artículos:
- Configurar el router TP-LINK TD-W8970
- Cómo configurar el Router ASUS RT-N66 con Movistar Fibra
- #006 – Hablemos de RADIUS
Adios, os!