IngDiaz

Servidor de autenticación con FreeRadius, MySQL y DaloRadius en Ubuntu

¡Hola!

Mencionar que éste es un post «repoio» de uno que hice en Julio de 2010, por cuanto seguramente algunas cositas han de cambiar… pero no creo que sea mucho.

Primero, necesitamos la plataforma LAMP. Lo más recomendable es usar la versión servidor de Ubuntu, y durante la instalación elegir la paquetería LAMP (Linux, Apache, MySQL y PHP). Si en caso la instalación ya esta terminada y no se eligió LAMP, se puede volver a instalar ejecutando el comando como root siguiente:

tasksel

Otra alternativa es instalar todo con las siguientes líneas de comando:

sudo apt-get install apache2 php libapache2-mod-php mysql-server

Para comenzar, se instalarán algunas librerías con la siguiente línea de comando:

sudo apt-get install debhelper libltdl-dev libpam0g-dev libmysqlclient-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

 

INSTALACIÓN DE FREERADIUS

Luego, instalamos el paquete FreeRadius con la siguiente línea:

sudo apt-get install freeradius freeradius-mysql

Editamos el archivo «users» y creamos un usuario (al final del archivo) para hacer las pruebas de funcionamiento del radius:

sudo nano /etc/freeradius/users
oscard Cleartext-Password := «clave»

Cambiamos la clave secreta de nuestro servidor, de tal manera podamos hacer la prueba. Buscamos en el archivo clients.conf la parte que hace referencia a localhost ( client localhost { ), y buscamos el parámetro secret.

sudo nano /etc/freeradius/clients.conf
....
secret = clave_radius

Ahora, también podemos aprovechar que estamos en éste archivo para habilitar el acceso remoto al servicio… digamos, si nuestra red es 192.168.1.0/24 , haríamos algo así:

client 192.168.1.0/24 {
        secret = clave_radius
        shortname = mi_red
}

Con esto, estaríamos permitiendo que cualquier dispositivo de dicha red podrá hacer conectarse al servidor FreeRadius para la autenticación.

Ahora vamos a probar que esté funcionando bien el FreRadius habilitándolo en modo debug (para resolver problemas) y luego haciendo la prueba:

sudo service freeradius stop

sudo freeradius -X

radtest oscard clave localhost 1812 clave_radius

Si todo esta bien, veremos esta información:

Sending Access-Request of id 174 to 127.0.0.1 port 1812User-Name = "ncalderon"
User-Password = "clave"
NAS-IP-Address = localhost
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812,, length=38

Hay que asegurarse que recibamos el mensaje «Access-Accept«.

 

MYSQL

Ahora configuraremos FreeRadius para que pueda leer la información desde MySQL.

Editaremos el archivo /etc/freeradius/radiusd.conf y descomentamos la linea «$INCLUDE sql.conf»

Ahora, accederemos al MySQL via CLI de la siguiente forma:

mysql -u root -p

Creamos la base de datos

CREATE DATABASE radius;

Creamos un usuario llamado “radius” con permisos totales en la base de datos que creamos:

GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY «mypassword»;

Donde la Base de datos es llamada «radius», el usuario a crear es también «radius» y el password “mypassword”

Ahora nos salimos de la base de datos.

exit;

Se creará la estructura de la base de datos con los scripts que se encuentran en: /etc/freeradius/sql/mysql (Tomar en cuenta que, dependiendo de la distribución, la versión, etc., puede diferir la ubicación de éste).

Se deberá de hacer esto:

mysql -u root --password=xxxx radius < /etc/freeradius/sql/mysql/schema.sql
mysql -u root --password=xxxx radius < /etc/freeradius/sql/mysql/nas.sql

Donde “xxxx” es la contraseña de acceso a la base de datos por medio del usuario “root”.

Para comprobar lo que hemos hecho, podemos ejecutar las siguientes instrucciones:

mysql -u root -p radius;

show tables;

Deberemos ver las 7 tablas. Ahora, nos salimos del MySQL.

quit;

Bien, ahora editaremos el archivo: /etc/freeradius/sql.conf

sudo nano /etc/freeradius/sql.conf

Y configuraremos los parámetros respectivos de la conexión de la base de datos y descomentamos una línea:

sql {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "localhost"
        port = 3306
        login = "radius"
        password = "mypassword"
        radius_db = "radius"
…
readclients = yes

Ahora, editamos el Archivo: /etc/freeradius/sites-available/default y, si tiene comentario la variable «sql», se la quitamos (el comentario es con el símbolo # por cuanto habría que quitarlo). Esto, en las secciones: authorize{}, accounting{}, session{}, post-auth{}

Necesario para traer los datos desde las tablas en la base de datos «radius»

sudo gedit /etc/freeradius/sites-available/default
authorize {
   sql
}
accounting {
   sql
}
...

Finalmente, agregamos un usuario de prueba a la base de datos para comprobar que funciona la autenticación:

mysql -u root –p radius;

INSERT INTO radcheck (UserName, Attribute, op, Value) VALUES (‘usuario’, ‘Password’, ‘:=’, ‘123’);

select * from radcheck where UserName=’usuario’;

El resultado mostrará el usuario que hemos creado.

Para comprobar que todo esta funcionando bien, ejecutamos freeradius en modo debug y hacemos la prueba:

freeradius -X

radtest usuario 123 localhost 1812 clave_radius

…rad_recv: Access-Accept packet from host localhost port 1812,, length=20

Ahora instalarémos la interfaz de administración DaloRadius. Primero debemos de bajar la versión mas reciente de este paquete (este post es viejito (repoio), por cuanto la versión usada es 0.9-8) y descomprimirlo porque generalmente viene comprimido.

cd /tmpwget http://softlayer.dl.sourceforge.net/project/daloradius/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz

tar xvzf daloradius-0.9-8.tar.gz

Puedes descargar éste paquete desde aquí también.

Ahora, copiamos esta carpeta en el directorio de publicación del servidor web, que generalmente para apache es /var/www

cp daloradius-0.9-8 /var/www/daloradius –R

Ahora instalamos algunas otras librerías así:

sudo apt-get install php php-mysql php-pear php-gd php-DB

Cambiamos al usuario propietario y grupo por defecto del directorio de daloradius.

sudo chown www-data:www-data /var/www/daloradius/ -R

Y ahora cambiamos los permisos también:

sudo chmod 644 /var/www/daloradius/library/daloradius.conf.php

Para que Daloradius funcione correctamente, se requiere agregar algunas tablas mas a la base de datos de MySQL. Estas tablas ya estan incluidas en el directorio de DaloRadius, por lo que solo es necesario ejecutar el siguiente comando:

mysql -u root -p radius < /var/www/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

Si no hay errores, todas las tablas debieron de haber sido creadas en la base de datos. Para poder gestionar la base de datos, recomiendo usar PHPMyAdmin, el cual se puede instalar con el siguiente comando:

sudo apt-get install phpmyadmin

Cuando ya esté instalado se puede acceder mediante la dirección: http://localhost/phpmyadmin

La manera más práctica de poder ver si se crearon las tablas adecuadamente es mediante la línea de comando así:

mysql -u root -puse radius ;

show tables;

Tendría que aparecer algo así:

Database changedmysql> show tables;

+——————+

| Tables_in_radius |

+——————+

| billing_history  |

| billing_paypal   |

| billing_plans    |

| billing_rates    |

| dictionary       |

| hotspots         |

| nas              |

| operators        |

| proxys           |

| radacct          |

| radcheck         |

| radgroupcheck    |

| radgroupreply    |

| radippool        |

| radpostauth      |

| radreply         |

| radusergroup     |

| realms           |

| userbillinfo     |

| userinfo         |

| wimax            |

+——————+

21 rows in set (0.01 sec)

exit;

Ahora, editamos el archivo daloradius.conf.php para parametrizar los valores de la conexión al servidor MySQL:

…CONFIG_DB_ENGINE = mysql

CONFIG_DB_HOST = 127.0.0.1

CONFIG_DB_USER = radius

CONFIG_DB_PASS = mipassword

CONFIG_DB_NAME = radius

Ahora solo nos queda reiniciar el servicio de apache:

/etc/init.d/apache2 restart

Y acceder a la interfaz Web del Daloradius: http://localhost/daloradius

El usuario sería: Administrador

Y el Password: radius

Es recomendado borrar el usuario «liran» el cual se agrega por defecto en la instalación, dado que iba implicito en el código del creador de la aplicación.

¡Eso es todo! ¡Saludos!

Comentarios por Facebook

comentarios