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!


Muy interesante y PERFECTA explicación.
Muchas gracias, porqué me has dado la idea para mejorar el sistema del instituto el año que viene. 😉
La verdad es que imagino que poco a poco iremos derivando a estos tipos de sistemas de autenticación y control de la red wifi.
Por cierto, ¿No crees interesante que poder tener el siguiente es quema?
1) Una zona con ancho de banda restringido para alumnos/profesores para que se pudieran conectar directamente (sin contraseña) y sin que ello afecte considerablemente al servicio.
2) Una zona con mayor ancho de banda restringida con el Radius (como comentas en el artículo).
Gracias por el super-currado-tutorial que has hecho.
Muchas gracias!! me alegra que te pueda ayudar… Me parece bastante interesante también el esquema del tráfico de red que propones, pero en el caso de mi centro, de momento no lo vamos a implementar…
Nuestro mayor problema ahora es la seguridad WiFi puesto que detectábamos que los alumnos cada vez mas entraban sin autorización con sus dispositivos móviles, portátiles, etc. con lo que ello supone….
Estamos en contacto…
Un saludo
saludos….tengo un problema y quisiera que me ayudaran.
tengo un servidor freeradius que trabaja perfecto y autentico contra mysql sin problemas. el problema es que lo tengo que poner en texto plano porque si pongo algun tipo de encryptacion en mysql (a traver de daloradius) no me deja me da error. y no puedo autentificarme.
me podrian ayudar? gracias por adelantado
Hola Mauro!! Te lo intento mirar y te digo algo. Aún así, a ver si alguno de mis fieles lectores se les ocurre qué puede estar pasando para darte una respuesta más inmediata…
Seguimos en contacto!! Muchas gracias por tu comentario y por seguir mi trabajo!!
Un abrazo,
JM
Es una excelente idea. Voy a proponérselo al coordinador de mi centro. Cuánto sabes, JM!
Gracias!!! Claro!!! ya me cuentas a ver que pasa… 😉
Me parece una verguenza que no podamos usar el wifi, para que esta entonces?para dos profesores y sus tablet particulares?
¿Tu en casa compartes tu WiFi con todo el mundo? Supongo que no. Acceder a la red WiFi del centro, no solo supone tener acceso a Internet, también a ordenadores de profesores, creándose un problema grave de seguridad de datos para los mismos… No voy a entrar en polémicas, es lo que hay.
Claro, totalmente de acuerdo, es PÚBLICO (sin las comillas), y para acceder a la red ya están los equipos de clase, o acaso no tienes acceso a ellos? entonces por el hecho de ser público, deberías de entran también a usar los equipos de la sala de profesores, o dirección, etc. Sabes que no.
Tu, supongo que como alumno que serás, tienes derecho a usar un cierto material para completar tus estudios con éxito. La WiFi para acceder con tu portátil/móvil no está dentro de ese material, no es necesario.
Repito, no quiero polemizar con este tema.
Un saludo
Se supone que el instituto no es la casa de los profesores, es «público» y que la línea se paga de los impuestos que pagan padres de alumnos, hay formas de implementar seguridad para no tener acceso y solventar esos problemas, el caso como siempre es prohibir.
Si nos regimos por esa norma, los profesores para completar sus clases con éxito tampoco necesitan tener una red sin ninguna restricción en la que también la usan para los móviles.
En muchas empresas tienen restringido el acceso a redes sociales y demás que tampoco son un uso necesario para el profesorado.
Perfecto! Tema cerrado!
Hola todos los pasos de la configuraciond el servidor radios me salen ala perfeccion solo en la ultima linea cuando se agrega a la tabla nas me marco que no responde que peudo hacer en ese caso¡?
esta es la linea mysql > INSERT INTO nas (nasname, shortname, type, secret) VALUES (‘192.168.1.254’, ‘servidor’, ‘other’, ‘admin’);
Hola Marco!! Gracias por tu comentario. Me podrías indicar qué error te da exactamente? Descríbemelo con el mayor detalle posible… Gracias!!
Al ingresar la ultima linea de radtest para checar el ultimo usuario que se ingreso en la tabla nas , el mensaje que me indica no es un Acces-Acept si no un mensaje de server no responde
Marco, ¿Puedes mandarme una captura de pantalla para que vea el error? Gracias!!
Hola
Gran tutorial lo estoy probando para aplicarlo a un proyecto de fin de grado
Mi problema que seguramente sea algo que se me haya pasado reside en que cuando hago la prueba de RADIUS antes de meterme con MYSQL me da este error:
radtest radius radius 127.0.0.1 1812 testing123
Sending Access-Request of id 153 to 127.0.0.1 port 1812
User-Name = «radius»
User-Password = «radius»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=153, length=20
Si me puedieras explicar en que fallo te lo agradeceria
Un saludo
Hola!!
El problema que te da es con la autenticación. En el fichero /etc/freeradius/users, ¿has creado el usuario de prueba radius con la contraseña radius? Si te fijas en mi ejemplo yo creo el siguiente usuario:
jmramirez Cleartext-Password := «1234561»
Realiza estos cambios y después reinicias el servidor con el comando:
service freeradius restart
Y para finalizar prueba de nuevo, el mi caso:
radtest jmramirez 1234561 127.0.0.1 1812 testing123
Si todo lo has hecho como te cuento, deberías obtener un Access-Accept del Access-Request que se ha enviado.
Ya me cuentas!! Gracias por tu comentario
Saludos
JM
Saludos José Manuel, Tengo la misma situación ( use tus usuarios y contraseñas para probar)
por otro lado al momento de llegar a este paso : radtest jmramirez 1234561 127.0.0.1 1812 testing123
Testing123 era la clave del cliente local para pruebas locales, se define en algún apartado o ya esta definida por defecto ? De antemano mil gracias
Hola Ferraz!!
Te paso un hilo donde se habla de ello…
http://freeradius.1045715.n5.nabble.com/how-to-change-the-radius-default-quot-testing123-quot-password-td5722684.html
Comentan que es editando el fichero raddb/clients.conf y buscando la cadena «testing123».
No lo he probado por falta de tiempo pero te agradecería que si tu lo haces, me lo comentes por aquí para que mis lectores puedan saber cómo es.
Muchas gracias por tu comentario y por leer mi blog!!
Un abrazo
JM
Pingback: Autenticar en freeRadius con Windows
amigo tendras alguna informacion o ayuda para poder unir el freeradius a un controlador de dominio en windows server 2012 y realizar el (NAS) de una red wifi con la cuentas de usuarios y contraseñas de antemano gracias
Hola! de momento no tengo hecho el escenario que me planteas, pero es una practica muy interesante para realizar con los alumnos. Si te parece, si podemos llevarla acabo este curso, realizaré un artículo para que te pueda ayudar!! Muchas gracias por tu comentario!! Seguimos!!
Un abrazo Victor!
JM
ok men gracias por todo saludos y buena suerte
Se puede implementar el servidor radios par solo registro de usuarios, osea que no tenga uantenticacion pero que para acceder a intertet a travez del punto acceso deba ingresar un mail, y se guarde en la BD de mysql?
Hola Ivan!!
No entiendo muy bien la pregunta pero te intento contestar. En principio Radius está para aportar un grado de seguridad extra y un mayor control de una red WiFi. Ten en cuenta que creamos cuentas de usuario/contraseña para autenticar y poder acceder a la red, y estas cuentas pueden residir en ficheros de texto o bien en BD.
Resumiendo: La autenticación es el objetivo principal por lo que me comentas de «sin autenticación» es algo que quedaría fuera de lo que es Radius.
Me gustaría que me precisaras más tu escenario para ver si Radius te puede servir o bien te tienes que buscar otro tipo de tecnología.
Ya me dices.
Muchas gracias por tu comentario!!!!
Un abrazo
JM
Hola.
Muchas gracias por compartir tu trabajo.
Estoy haciendo pruebas para hacer lo mismo, controlar la conexión wifi del centro y que sea accesible solo para los profesores. Todos los profesores ya tienen su cuenta de usuario y contraseña para acceder a los ordenadores y quiero usar esa misma para freeradius más mysql.
El problema lo tengo que con una misma cuenta se pueden loguear todo el instituto y tarde o temprano es lo que pasará.
Se que se puede hacer poniendo un límite de accesos simultáneos. Llevo días haciendo pruebas y no lo consigo. Por casualidad ¿tienes eso implementado o lo sabes como hacerlo?
Muchas gracias.
Hola!!! No se si lo que me comentas se puede hacer con freeradius o no!! Tal vez el limite de accesos simultáneos se pueda a hacer de otra manera. @gkmylo:disqus que creo que también es del gremio de la enseñanza igual nos puede arrojar un poco de luz al respecto!!
Seguirmos en contacto.
Gracias por comentar
Un saludo
JM
Nuevamente un saludo, con una consulta sobre el AP, en mi caso estoy usando un AVAYA WAP9103 el cual no tiene encriptacion WPA 2 Enterprise ni modo auto como tu lo manejas en tu AP, la consulta es si la configuración funciona en alguna otra versión distinta de WPA 2 Enterprise. Gracias por tu respuesta. Buen día.
Hola Ferraz… lo tengo que probar para confirmártelo pero creo que también funciona con WEP y WPA. Si puedo lo miro y te digo algo.
Muchas gracias por tu comentario!!
Un saludo
JM
Un cordial saludo, he estado probando y siempre me falla en el paso 11, hasta el 10 no hay problema puedo reiniciar el servicio pero después de modificar en authorize{} y accounting{}. Donde haces mencion que 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 se crean.
y también comentas modificar
el archivo /etc/freeradius/sites-available/default en la sección authorize{}
Y posterior se reinicia el servicio pero no me lo permite, aparte de lo que comentas faltaría algún apartado de des comentar. Gracias. Anexo imagen
Ferraz,
¿¿Has descomentado la variable sql en las secciones authorize{} y accounting{} ?? Prueba a descomentar la primera y reiniciar y si te funciona lo mismo con la segunda para acotar donde puede estar el error.
Si puedes pon algunas pantallas más de lo que vas realizando en esos pasos para intentar encontrar el problema. Yo voy a seguir buscando información al respecto.
Muchas gracias por tu comentario!
Seguimos!
Un saludo
JM!
Buen día, nuevamente comentando, reinstalar todo desde 0 y nuevamente en el punto 11 tengo problemas, he hecho Cómo comenta primeramente habilite solo la variable SQL en el apartado authorize {}, quise reiniciar el servicio y me da error, hice lo mismo con el apartado accounting {} y también da error al reiniciar, lo hice con las 2 habilit a das y error(fail), habilite nuevamente y el servicio si reinicio (ok), probé hacer lo mismo en el archivo ……./sites-enabled/inner-tunel y mismo resultado. Anexo unas capturas, espero me pueda apoyar. De antemano lo agradezco muchísimo. Un abrazo y buen dia
Hola Ferraz!
Pues la verdad ahora mismo no se que puede pasar. A ver si @gkmylo:disqus puede echarte una mano con el error. Yo también voy a seguir investigando sobre ello porque la verdad es que estoy bastante intrigado con el problema. A ver si entre todos te podemos dar una solución…
Seguimos hablando!
Un saludo y gracias por el nuevo comentario!!
JM
Hola José Manuel!
Tengo una gran duda con respecto a la administración de los usuarios.
En mi trabajo hace dos años utilizamos freeradius. No he logrado encontrar una mejor administración de los usuarios, ya que son demasiados. Hay alguna forma de administrar los usuarios en diferentes archivos?, me explico: tener un archivo donde tenga los usuarios de personal docente, otro archivo con alumnos, otro de personal administrativo, etc, etc, etc. Más bien tener mas de dos o tres archivos «users». Existe de alguna forma tener varios archivos, para así tener mejor administrado los usuarios?. Ya he implementado administración web y la encuentro mucho más lenta que la de un documento de texto.
Espero que me puedas ayudar.
Saludos!!!
Atte.,
Camilo Berroeta R.
Hola Camilo!!
No lo he probado pero te propongo esta solución:
1. Edita el fichero radius.conf
2. Localiza la cadena: files { usersfile = ${confdir}/users simplemente para ver que el nombre y la ruta del fichero, que en este caso es «users»
3. Añade dentro del fichero users las siguientes líneas:
$INCLUDE ruta-fichero-usuarios-a.txt
$INCLUDE ruta-fichero-usuarios-b.txt
4. Reinicia freeradius
Si esto te funciona, posiblemente puedas tener a los usuarios clasificados por departamentos, alumnos, etc.
Te agradecería que comentaras por aquí si esta solución es válida para que el resto de lectores del blog estén al tanto de los avances en el tema.
Muchas gracias por tu comentario.
Un abrazo!
JM
Estimado, excelente respuesta. He generado varios ficheros que los he incluído en el users y el radtest funcionó a la perfección. Después lo hice en la práctica y todo bien. Muy agradecido por tu ayuda. Tu solución ha sido propicia!.
Saludos cordiales amigo y nuevamente muchas gracias.
Atte.,
Camilo Berroeta Rubio
Hola de nuevo Camilo!!
Estoy muy contento que la solución que te he propuesto funcione!! Me hace mucha ilusión poder ayudar a personas inquietas como tu. Solo te pido humildemente que si te parece y puedes, compartas este (y otros artículos del blog que sean de tu agrado) en tus círculos de familia y amigos para que de esta manera pueda llegar a más gente.
Muchas gracias a ti por leerme.
Seguimos en contacto!!
Un abrazo!
JM
Hola Jose Manuel!!
En mi caso ya lo instale hice el laboratorio y todo bien, con algunas complicaciones por los cambios pero ya todo esta funcionando, hasta la prueba del radtest en el servidor local, donde me acepta, mi problema reside en en login a traves del router en mi caso use un tplink TL-WR740N le puse ip del servidor radius, puerto y el pass admin, pero cuando intento entrar por wifi no me acepta si hago el radtest con el usuario pero usando la ip del router, radclient: no response from server for ID 99 socket 3, si uso la ap del servidor
rad_recv: Access-Accept packet from host 192.168.0.101 port 1812, id=199, length=20
Alguna idea?? muy buen tutorial
Hola Angel!!
Asegúrate que tienes el puerto 1812 abierto en tu router. Si lo tienes coméntamelo y seguimos viendo alguna solución.
Muchas gracias por tu comentario!
Seguimos en contacto!!
Un abrazo,
JM
Gracias por responder Jose Manuel Pues tengo esta información y no he podido hacer el enlace del router. he intentado con otro router y el mismo problema va de que no se enlaza el router con el server!!
Saludos
netstat -anup | grep «:181»
udp 0 0 127.0.0.1:18120 0.0.0.0:* 32036/freeradius
udp 0 0 0.0.0.0:1812 0.0.0.0:* 32036/freeradius
udp 0 0 0.0.0.0:1813 0.0.0.0:* 32036/freeradius
udp 0 0 0.0.0.0:1814 0.0.0.0:* 32036/freeradius
Veo que es un problema que ha pasado, he buscado en google que de manera local haciendo test funciona con mysql,
en modo debuger se ejecuta bien y logra añadir
Reserving sql socket id: 4
Debug: rlm_sql (sql): Read entry nasname=192.168.0.1,shortname=tplink,secret=admin
Debug: rlm_sql (sql): Adding client 192.168.0.1 (tplink, server=) to clients list
Debug: rlm_sql (sql): Read entry nasname=192.168.0.100,shortname=servidor,secret=admin
Debug: rlm_sql (sql): Adding client 192.168.0.100 (servidor, server=) to clients list
Tue Nov 17 09:45:04 2015 : Debug: } # server
Tue Nov 17 09:45:04 2015 : Debug: radiusd: #### Opening IP addresses and Ports ####
Tue Nov 17 09:45:04 2015 : Debug: listen {
Tue Nov 17 09:45:04 2015 : Debug: type = «auth»
Tue Nov 17 09:45:04 2015 : Debug: ipaddr = *
Tue Nov 17 09:45:04 2015 : Debug: port = 0
Tue Nov 17 09:45:04 2015 : Debug: }
Tue Nov 17 09:45:04 2015 : Debug: listen {
Tue Nov 17 09:45:04 2015 : Debug: type = «acct»
Tue Nov 17 09:45:04 2015 : Debug: ipaddr = *
Tue Nov 17 09:45:04 2015 : Debug: port = 0
Tue Nov 17 09:45:04 2015 : Debug: }
Tue Nov 17 09:45:04 2015 : Debug: listen {
Tue Nov 17 09:45:04 2015 : Debug: type = «auth»
Tue Nov 17 09:45:04 2015 : Debug: ipaddr = 127.0.0.1
Tue Nov 17 09:45:04 2015 : Debug: port = 18120
Tue Nov 17 09:45:04 2015 : Debug: }
Tue Nov 17 09:45:04 2015 : Info: … adding new socket proxy address * port 34811
Tue Nov 17 09:45:04 2015 : Debug: Listening on authentication address * port 1812
Tue Nov 17 09:45:04 2015 : Debug: Listening on accounting address * port 1813
Tue Nov 17 09:45:04 2015 : Debug: Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel
Tue Nov 17 09:45:04 2015 : Debug: Listening on proxy address * port 1814
Tue Nov 17 09:45:04 2015 : Info: Ready to process requests.
————— ejecutando el debugger —————–
radtest angelwifi clavewifi 192.168.0.100 1812 admin
Sending Access-Request of id 66 to 192.168.0.100 port 1812
User-Name = «angelwifi»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 192.168.0.100 port 1812, id=66, length=20
—————————- probando el IP del tp link———————
radtest angelwifi clavewifi 192.168.0.1 1812 admin
Sending Access-Request of id 185 to 192.168.0.1 port 1812
User-Name = «angelwifi»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
…….
radclient: no response from server for ID 185 socket 3
Me salio algo en el debugger me ayudan a saber que es o donde esta el error?
——————————————–
Reserving sql socket id: 4
Tue Nov 17 09:54:44 2015 : Info: [sql] expand: SELECT id, username, attribute, value, op FROM radcheck WHERE username = ‘%{SQL-User-Name}’ ORDER BY id -> SELECT id, username, attribute, value, op FROM radcheck WHERE username = ‘[email protected]’ ORDER BY id
Tue Nov 17 09:54:44 2015 : Info: [sql] expand: SELECT groupname FROM radusergroup WHERE username = ‘%{SQL-User-Name}’ ORDER BY priority -> SELECT groupname FROM radusergroup WHERE username = ‘[email protected]’ ORDER BY priority
Tue Nov 17 09:54:44 2015 : Debug: rlm_sql (sql): Released sql socket id: 4
Tue Nov 17 09:54:44 2015 : Info: [sql] User [email protected] not found
Tue Nov 17 09:54:44 2015 : Info: ++[sql] returns notfound
Tue Nov 17 09:54:44 2015 : Info: ++[expiration] returns noop
Tue Nov 17 09:54:44 2015 : Info: ++[logintime] returns noop
Tue Nov 17 09:54:44 2015 : Info: [pap] WARNING! No «known good» password found for the user. Authentication may fail because of this.
Tue Nov 17 09:54:44 2015 : Info: ++[pap] returns noop
Tue Nov 17 09:54:44 2015 : Info: Found Auth-Type = EAP
Tue Nov 17 09:54:44 2015 : Info: # Executing group from file /etc/freeradius/sites-enabled/default
Tue Nov 17 09:54:44 2015 : Info: +- entering group authenticate {…}
Tue Nov 17 09:54:44 2015 : Info: [eap] Request found, released from the list
Tue Nov 17 09:54:44 2015 : Info: [eap] EAP NAK
Tue Nov 17 09:54:44 2015 : Info: [eap] NAK asked for unsupported type SIM
Tue Nov 17 09:54:44 2015 : Info: [eap] NAK asked for unsupported type UMTS
Tue Nov 17 09:54:44 2015 : Info: [eap] No common EAP types found.
Tue Nov 17 09:54:44 2015 : Info: [eap] Failed in EAP select
Tue Nov 17 09:54:44 2015 : Info: ++[eap] returns invalid
Tue Nov 17 09:54:44 2015 : Info: Failed to authenticate the user.
Tue Nov 17 09:54:44 2015 : Info: Using Post-Auth-Type Reject
Tue Nov 17 09:54:44 2015 : Info: # Executing group from file /etc/freeradius/sites-enabled/default
Tue Nov 17 09:54:44 2015 : Info: +- entering group REJECT {…}
Tue Nov 17 09:54:44 2015 : Info: [attr_filter.access_reject] expand: %{User-Name} -> [email protected]
Tue Nov 17 09:54:44 2015 : Debug: attr_filter: Matched entry DEFAULT at line 11
Tue Nov 17 09:54:44 2015 : Info: ++[attr_filter.access_reject] returns updated
Tue Nov 17 09:54:44 2015 : Info: Delaying reject of request 9 for 1 seconds
Tue Nov 17 09:54:44 2015 : Debug: Going to the next request
Tue Nov 17 09:54:44 2015 : Debug: Waking up in 0.5 seconds.
Tue Nov 17 09:54:45 2015 : Info: Cleaning up request 7 ID 5 with timestamp +575
Tue Nov 17 09:54:45 2015 : Debug: Waking up in 0.4 seconds.
Tue Nov 17 09:54:45 2015 : Info: Sending delayed reject for request 9
Sending Access-Reject of id 7 to 192.168.0.1 port 56260
EAP-Message = 0x04010004
Message-Authenticator = 0x00000000000000000000000000000000
Tue Nov 17 09:54:45 2015 : Debug: Waking up in 3.9 seconds.
Tue Nov 17 09:54:49 2015 : Info: Cleaning up request 8 ID 6 with timestamp +580
Tue Nov 17 09:54:49 2015 : Debug: Waking up in 1.0 seconds.
Tue Nov 17 09:54:50 2015 : Info: Cleaning up request 9 ID 7 with timestamp +580
Tue Nov 17 09:54:50 2015 : Info: Ready to process requests.
Bueno despues de muchas pruebas ya esta corriendo el servidor Freeradius! despues de ver el log ya no supe ni que le movi, per entiendo que puedes probar el servidor radius de manera local, mas si se intenta probar el servidor freeradius con la ip del AP o Router no respondra debido a las credenciales del cliente, hice una prueba desde una mac y se conecto, hice una prueba desde windows 7 y no se conecto debido a que se usa mschapv2 y hay que configurarlo de manera manual.
Agradezco el apoyo incondicional a aprender. Saludos
Genial Angel!! Me alegra mucho que hayas dado con la solución y que por supuesto la hayas compartido en el blog para que más gente pueda saber de ella!! Estoy a tu disposición para cualquier otra cuestión que tengas.
Muchas gracias!!!
Un saludo,
JM
Se puede hacer un formulario de registro para poder registrar nuevos usuarios a la red atravez de radius
Hola Nodier!!
¿Has probado a instalar daloRADIUS? Seguro que te puede servir para lo que tu necesitas… te paso el link http://www.daloradius.com
Seguimos en contacto…
Muchas gracias por tu comentario.
Un saludo,
JM
Pingback: #006 – Hablemos de RADIUS
El paso numero 14 no me funciono:
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á.
Me salio esto al hacer el radtest
radcilent: no response from server for ID 290 socket 3
Segui al pie de la letra todo el procedimiento, solo me estanque al final.
Seria de gran ayuda su respuesta, gracias…
Cabe mencionar que estoy usando una maquina virtual.
Hola Luis!! Si te parece, mándame al correo (contacto arroba jmramirez.pro) alguna captura de pantalla de lo que te está ocurriendo y de la configuración para que pueda ver exactamente el error y el problema que tienes…
Ya me cuentas…
Un saludo,
JM
Estupendo contenido de como montar un servidor FreeRADIUS con su base de datos MySQL, todo muy bien detallado y practico y ademas con imagenes, tan solo una peticion:
montar un servidor FreeRADIUS contra una base de datos de usuario/password basada en LDAP que quede todo bien detallado e imagenes de todo el proceso. Muchas gracias por ser tan buen profesor
Hola Carmelo!!! Me apunto el tema de LDAP para cuando tenga un momento libre (cada vez más difícil jejeje). Me alegro mucho que te guste el artículo. Si te parece lo puedes compartir para que llegue a más gente. Muchas gracias por el amable comentario…
Seguimos en contacto para lo que necesites…
Un abrazo,
JM
Buenas tardes, estoy tratando de crear un servidor radius con freeradius en ubuntu y segui tu tutorial y todo va bien hasta que intento el paso 14 que intento auntenticar usarios externos porque con el localhost si jala perfectamente y al parecer no lo ve, soy nuevo en ubuntu y en freeradius y la verdad me siento perdido, me gustaria que me pudieran ayudar, me pone el siguente mensaje de error:
root@radius-vm:/etc/freeradius# radtest profesor clavewifi 10.13.15.226 1812 prueba
Sending Access-Request of id 114 to 10.13.15.226 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Sending Access-Request of id 114 to 10.13.15.226 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Sending Access-Request of id 114 to 10.13.15.226 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
radclient: no response from server for ID 114 socket 3
Les agradeceria inmesamente que me pudieran ayudar
Hola Cristina!! Te lo miro y a ver si se me ocurre que puede estar pasando. Es muy importante que revises uno a uno todos los pasos que vas dando para que tengas éxito en la configuración. También te invito a leer los comentarios anteriores porque creo que a alguien le pasaba lo miso. Seguimos en contacto para lo que necesites.
Un abrazo,
JM
Desconectar un usuario creado
-Añadir usuario en radcheck
INSERT INTO radcheck (username, attribute, value) VALUES (‘unnombre’, ‘Password’, ‘contraseña’);
-Añadir el grupo para usuarios desconectados
INSERT INTO radgroupcheck (groupname, attribute, value) VALUES (‘Disabled-Users’, ‘Auth-Type’, ‘Reject’);
select * from radgroupcheck where groupname=’Disabled-Users’;
-Insertar Usuario al grupo y desconectarlo.
INSERT INTO radusergroup (username, groupname) VALUES (‘erick’, ‘Disabled-Users’);
-Desconectar usuario
echo «User-Name=’unnombre’,» | radclient -c ‘1’ -n ‘3’ -r ‘3’ -t ‘3’ -x ‘IPdelNaS:3799’ ‘disconnect’ ‘contraseñaSecret’ 2>&1
Alguna sugerencia para desconectar al usuario ahorrándome el echo?
Tengo un router microtik con los parametros ppp-pppoe configurados apuntando al radius.
Hola Erick!! En principio no se me ocurre como desconectar el usuario de forma distinta. Si tengo un momento lo intento realizar y te digo algo. Muchas gracias por seguir mi trabajo. Estamos en contacto!!
Un abrazo,
JM
Hola, quisiera hacerte una pregunta.
porque cuando pongo el comando «Service freeradius restart» me parece el siguiente error.
service freeradius restart
stop: Unknown instance:
freeradius start/running, process 15238
y no puedo reiniciar el freeradius y cuando ejecuto el radtest me aparece esto:
radtest profesor clavewifi 127.0.0.1 1812 testing123
Sending Access-Request of id 79 to 127.0.0.1 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
radclient: no response from server for ID 79 socket 3
espero sus respustas.
saludos.
gracias
Hola Alan, mira los comentarios porque creo que a alguien le pasa lo mismo. Ya me cuentas…
Gracias por seguir mi trabajo,
Un saludo,
JM
Amigo, estaba siguiendo a la perfección paso por paso, y todo funcionaba. Pero al llegar al paso de hacer la prueba con usuarios de la tabla de MySql me dió el siguiente error:
radtest profesor clavewifi 127.0.0.1 1812 testing123
Sending Access-Request of id 184 to 127.0.0.1 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
Sending Access-Request of id 184 to 127.0.0.1 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
Sending Access-Request of id 184 to 127.0.0.1 port 1812
User-Name = «profesor»
User-Password = «clavewifi»
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
Message-Authenticator = 0x00000000000000000000000000000000
radclient: no response from server for ID 184 socket 3
//Leí que a algunos les respondiste que leyeran los comentarios porque a alguien más le pasó…pero leí todos y nadie da la solucion. Espero que puedas ayudarme, de antemano…gracias
No he podido probar esto aún. Si me entero de algo te digo.
Muchas gracias por tu comentario Jorge.
Un saludo,
JM
Buenos dias,
He realizado tu tutorial a la perfeccion y todo funciona perfectamente el local. El problema viene a la hora de configurar para que autentique mi router como cliente, esta la configuracion como tu indicas salvo que yo lo hago directamente contra el router y el server esta en maquina virtual visible desde el router. Deberia poner un acces point que conecte al router en vez de directamente al router ?
el problema es que no autentica da error, la conexion a fallado
Un Saludo
Se queda mucho tiempo en autenticando cuando te conectas y finalmente no conecta, esto desde android, desde windows 7 directamente da fallo y listo
Hola Joan! depende de si el router soporta RADIUS o no. Ya me cuentas.
Muchas gracias!!
Un saludo,
JM
Hola José, saludos desde Colombia.
Habia revisado n mil videos y algunos tutoriales y ninguno habia funcionado, afortunadamente logré encontrar el tuyo que esta más que PERFECTO, muy bien explicado y funcional, pasaba a darte las gracias por el post realizado, me ayudo mucho.
Hola Jorge!! Muchas gracias por tu comentario!! Me alegra mucho que te haya servido el tutorial. Si te puedo ayudar a algo mas me cuentas.
Seguimos en contacto!
Un saludo,
JM
no me sale el paso 8 ayuda porfavor
Hola Hector!!
Necesito saber que error te está dando para poder ayudarte.
Muchas gracias!
JM
Buenas tardes José,
tengo todo instalado FreeRadius y Mysql, estoy haciendo una pagina que estará en un webserver, para por medio de ella preguntar «usuario y contraseña», hasta ahí todo bien,
la duda es:
Basta con que agregue al usuario en el archivo radcheck de la bd de RADIUS para que le permita el acceso si yo le asigno los valores en dicha tabla, por ejemplo
username: Jorge
attribute: ClearText-Password
operator: :=
Value: ContraseñadeJorge
o que mas debo hacer?
Gracias