Instalar y configurar FreeRadius con MySQL en Centos 5.5

Voy a explicar paso a paso como instalar y configurar FreeRadius en un servidor Linux con CentoOS 5.5. Para posteriormente usar un router MikroTik RouterBOARD 750G contra el servidor FreeRadius.

Este router dispone del sistema operativo RouterOS y evidentemente de los servicio Radius y HotSpot con los que nos comunicaremos contra el servidor.

Para realizar el proceso de instalación, nos conectaremos a la consola bash del servidor, ya sea localmente o por SSH, y realizaremos los siguientes pasos:

1.Instalamos los paquetes de FreeRadius2:

yum -y install freeradius2 freeradius2-mysql freeradius2-utils

Nota:
Hasta la version de CentOS 5.4, solo hay paquetes de FreeRadius 1.1.x
A partir de la version de CentOS 5.5, ya hay paquetes de FreeRadius 2.x.
No se pueden instalar la dos versiones a la vez.

2. Instalamos los paquetes de MySQL:

yum -y install mysql mysql-server

3. Generamos los certificados predeterminados:

radiusd -X

4. Si nos aparece lo siguiente, todo a ido bien. Entonces pulsaremos Ctrl+C para finalizar el proceso:

Ready to process requests.

5. Iniciamos MySQL:

/etc/init.d/mysqld start

6. Marcamos el servicio para que se inicie al arrancar el S.O, ejecutando el siguiente comando:

ntsysv

6.1. Marcamos:

[*] mysqld

7. Le damos contraseña al usuario root:

mysqladmin -uroot password ’123qwe’

8. Creamos una base de datos llamada radius:

mysqladmin -uroot -p123qwe create radius

9. Accedemos al interprete de ordenes de MySQL:

mysql -uroot -p123qwe

10. Creamos el usuario radius con password 123qew y con permisos totales sobre la BD radius:

GRANT all ON radius.* TO radius@localhost IDENTIFIED BY ’123qwe’;

11. Salimos del interprete de ordenes:

exit;

12. Añadimos a la base de datos radius con el usuario radius los esquemas de FreeRadius:

mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/cui.sql
mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/ippool.sql
mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/nas.sql
mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/schema.sql
mysql -uradius -p123qwe radius < /etc/raddb/sql/mysql/wimax.sql

13.Editamos el fichero de configuración de Radius:

vim /etc/raddb/radiusd.conf

14. Descomentamos la linea que dice $INCLUDE sql.conf (linea 863, aprox.):

$INCLUDE sql.conf

15. Editamos el fichero de configuración de SQL de Radius:

vim /etc/raddb/sql.conf

16. Modificamos los valores de los datos de acceso a la base de datos, con los que nosotros hemos usado (linea 35, aprox.):

# Connection info:
server = “localhost”
#port = 3306
login = “radius”
password = “123qwe”

# Database table configuration for everything except Oracle
radius_db = “radius”

17. Descomentamos la linea que dice readclients = yes (linea 100, aprox.):

readclients = yes

18. Editamos el fichero de configuracion de los sitios habilitados por defecto:

vim /etc/raddb/sites-enabled/default

19. Descomentamos la linea que dice sql de la sección See “Authorization Queries” in sql.conf (linea 159, aprox.):

sql

19. Descomentamos la linea que dice sql de la sección See “Accounting queries” in sql.conf (linea 365, aprox.):

sql

20. Accedemos nuevamente al interprete de ordenes de MySQL

mysql -uradius -p123qwe radius

21.Damos de alta un usuario, por ejemplo, usuario marius con contraseña temporal:

INSERT INTO radcheck (username, attribute, value) VALUES (‘marius’, ‘Password’, ‘temporal’);

Nota: Esto equivale a añadir marius Cleartext-Password := “123qwe” en el fichero /etc/raddb/users

22. Comprobamos que el usuario se ha añadido correctamente:

select * from radcheck;

22.1. Veremos algo así:

+—-+———-+———–+—-+———-+
| id | username | attribute | op | value    |
+—-+———-+———–+—-+———-+
|  1 | marius   | Password  | == | temporal |
+—-+———-+———–+—-+———-+
1 row in set (0.00 sec)

23. Salimos de MySQL:

exit;

24. Iniciamos el servicio RADIUS:

/etc/init.d/radiusd start

25. Marcamos el servicio para que se inicie al arrancar el S.O, ejecutando el siguiente comando:

ntsysv

25.1. Marcamos:

[*] radiusd

26. Verificamos que el servicio radius puede autentificarse con mysql, con el usuarios que hemos creado.

radtest marius temporal localhost 1812 testing123

27. Si ha ido bien nos devolverá algo como esto:

Sending Access-Request of id 201 to 127.0.0.1 port 1812
User-Name = “marius”
User-Password = “temporal”
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=201, length=20

28. Ahora podemos autenticar usuarios de manera local (localhost). Si queremos conectarnos desde un punto de acceso, volvemos a acceder al interprete de ordenes de MySQL:

mysql -uradius -p123qwe radius

29. Añadimos a la tabla NAS, los datos de nuestro P.A: ip, nombre, tipo y contraseña. Para el tipo de NAS podemos usar (other, cisco, livingston, computon, max40xx, multitech, natserver, pathras, patton, portslave, tc o usrhiper) si es otro, escribimos other.

INSERT INTO nas (nasname, shortname, type, secret) VALUES (’10.0.0.20′, ‘MikroTik20′, ‘other’, ’123qwe’);

30. Comprobamos que el nas se ha añadido correctamente:

select * from nas;

+—-+———–+————+——-+——-+——–+———–+—————+
| id | nasname   | shortname  | type  | ports | secret | community | description   |
+—-+———–+————+——-+——-+——–+———–+—————+
|  1 | 10.0.0.20 | MikroTik20 | other |  NULL | 123qwe | NULL      | RADIUS Client |
+—-+———–+————+——-+——-+——–+———–+—————+
1 row in set (0.01 sec)

30.1 Esto equivale a añadir al fichero /etc/raddb/clients.conf lo siguiente:

client 10.0.0.20 {
secret = 123qwe
shortname = MikroTik20
nastype = other
}

31. Para aplicar los cambios reiniciamos el servicio radius:

/etc/init.d/radiusd restart

32. Para realizar pruebas de conexión remota añadimos otro NAS, pero que sea un servidor linux donde le instalaremos el paquete freeradius2-utils.

INSERT INTO nas (nasname, shortname, type, secret) VALUES (’10.0.0.9′, ‘Pruebas’, ‘other’, ’123qwe’);

33. Para aplicar los cambios reiniciamos el servicio radius:

/etc/init.d/radiusd restart

34. Accedemos al servidor que hemos configurado en el NAS y le instalamos el paquete freeradius2-utils.

yum -y install freeradius2-utils

35. Realizamos la prueba de conexion remota ejecutando un radtest contra el servidor FreeRadius (10.0.0.6).

radtest marius temporal 10.0.0.6 1812 123qwe

36. Si ha ido bien nos devolverá algo como esto:

Sending Access-Request of id 48 to 10.0.0.6 port 1812
User-Name = “marius”
User-Password = “temporal”
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 10.0.0.6 port 1812, id=48, length=20

Hecho esto, ya tenemos nuestro servidor FreeRadius preparado para configurar-lo en nuestro router y hacer pruebas con el usuario que hemos creado anteriormente.





You can leave a response, or trackback from your own site.

6 Responses to “Instalar y configurar FreeRadius con MySQL en Centos 5.5”

  1. SWO dice:

    Buenas, te comento, sigo todos los pasos y cuando hago la prueba de conectar el usr de test no escribe la tabla de radacct, abro una ventana corriendo el radiusd -X y en otra hago la prueba donde me tira el error. Me podrán dar una mano con este tema?? tengo un CentOS 5 donde lo estoy corriendo.
    Gracias.

    Error:

    [root@VALIDADOR ~]# radtest swko tempo localhost 1812 testing123
    radclient:: Failed to find IP address for VALIDADOR
    radclient: Nothing to send.

  2. iso 9001…

    [...]Instalar y configurar FreeRadius con MySQL en Centos 5.5[...]…

  3. Abiel dice:

    diculpe se puede utilizar los serviciosfreeradius en Centos6..gracias..

  4. Tomas dice:

    Nose porque pero no puedo iniciar el servicio Radius, e seguido todas las indicaciones sin saltarme una sola linea, favor tu apoyo con el tema

    Saludos

  5. Tomas dice:

    no naaa naa ya ta.

  6. Juanito dice:

    Todo me corre bien, hasta la prueba radtest, pero no consiguo auntenticar una netbook u otro dispositivo via wireless.

    Para la Netbook con WinXP he realizado la configuración de otros foros, pero me pregunto si es el adecuado para esta configuración.

    La netbook me pide las credenciales y todo (id, pass), pero no pasa nada.

    Gracias de antemano

Deja un comentario

Page optimized by WP Minify WordPress Plugin

Màrius Duch is Stephen Fry proof thanks to caching by WP Super Cache