Instalación de Freeradius, MySQL y DaloRadius en Ubuntu 9.04

Autor Natanael Calderon Cabrera December 18, 2009 | Imprimir | Agregar a favoritos
Installation of Freeradius, MySQL and DaloRadius in Ubuntu 9.04



OS
Ubuntu 9.04 y 9.10
Objetivo
Instalación de RADIUS
Condición
Tener instaladas todas las dependencias necesarias

Esta Guía está elaborada para la configuración de un Sistema de Autenticacion basado en los siguientes paquetes:
Ubuntu 9.04 (Version Server) Freeradius 2.1
DaloRADIUS 0.9-8
Apache2
MySQL 5.1

Si la instalación se realizará en un Computador nuevo, lo recomendable es que cuando se haga la instalación de la distribución de UBUNTU instalemos la paquetería de LAMP (Linux, Apache, MySQL y PHP). Aqui está la guía .
Si no, se tendría que hacer la instalación de estos paquetes de forma manual:
sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo apt-get install mysql-server
Aquí una guía completa

1 - Primeramenta hacemos la instalación de algunas librerías necesarias para que todo funcione ok.

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

2 - Instalamos el paquete de FreeRadius:

apt-get install freeradius freeradius-mysql

3 - Editamos el archivo "users" y creamos un usuario para hacer las pruebas de funcionamiento del radius:

nano /etc/freeradius/users

*** En este archivo hay varios ejemplos de diferente tipo de usuarios que podemos utilizar. Podemos descomentar uno de estos o bien, crear uno nuevo con nuestros propios datos y lo ponemos al final del archivo. Ej:

ncalderon Cleartext-Password := "123456"
Service-Type = Framed-User,
Framed-Protocol = PPP,
# Framed-IP-Address = 172.16.3.33,
# Framed-IP-Netmask = 255.255.255.0,
# Framed-Routing = Broadcast-Listen,
# Framed-Filter-Id = "std.ppp",
# Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP

*** La primera prueba que podemos hacer es habilitar el programa en modo debug:
/etc/init.d/freeradius stop

freeradius -X
radtest ncalderon 1234561 127.0.0.1 1812 testing123

Si todo esta bien, veremos esta información:

Sending Access-Request of id 174 to 127.0.0.1 port 1812

User-Name = "ncalderon"

User-Password = "123456"

NAS-IP-Address = 127.0.1.1

NAS-Port = 1812

rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=174, length=38

Service-Type = Framed-User

Framed-Protocol = PPP

Framed-Compression = Van-Jacobson-TCP-IP
Debemos asegurarnos de recibir un "Access-Accept" del request que se ha enviado.

---------------------------- Configuración del Radius con MySQL ----------------------------------------

4 - Configuramos seguidamente el el FreeRadius para que pueda leer la data desde MySQL
En este punto, es necesario, editar el archivo, /etc/freeradius/radiusd.conf y descomentamos la linea "$INCLUDE sql.conf"

*** Para accesar a la administración de MySQL via CLI hacemos lo siguiente
mysql -u root -p

*** Creamos la base de datos
CREATE DATABASE radius;

*** Declararamos un usuario para la base de datos:
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "labserver";

*** En este caso asumimos que la Base de datos se llama "radius" y creamos un usuario tambien "radius" con password "labserver"

*** Salimos de la base de datos
exit;

5 - Ahora metemos algunas tablas en la base de Datos:

*** Las tablas de ejemplo estan dentro del directorio: /etc/freeradius/sql/mysql/
cd /etc/freeradius/sql/mysql/
mysql -u root -p radius < admin.sql
mysql -u root -p radius < ippool.sql
mysql -u root -p radius < nas.sql
mysql -u root -p radius < schema.sql

*** Para ver las tablas creadas podemos hacer lo siguiente:
mysql -u root -p
use radius;
show tables;

Apacerera algo como esto,
+------------------+
| Tables_in_radius |
+------------------+
| nas |
| radacct |
| radcheck |
| radgroupcheck |
| radgroupreply |
| radippool |
| radpostauth |
| radreply |
| radusergroup |
+------------------+
9 rows in set (0.00 sec)

*** Luego nos salimos de la base con:
quit;

6 - Luego editamos el archivo /etc/freeradius/sql.conf
nano /etc/freeradius/sql.conf

*** Configuramos los setting para la conexión con el server de MySQL:
# Connection info:
server = "localhost"
login = "radius"
password = "labserver"
Y descomentamo la variable: readclients = yes

7 - Luego Editamos el Archivo: /etc/freeradius/sites-available/default y agregamos la variable "sql" en las secciones de.: authorize{}, accounting{}, session{}, post-auth{} esto para traer los datos desde las tablas en la base de datos "radius"
nano /etc/freeradius/sites-available/default

 authorize {
       preprocess
       chap
       mschap
       suffix
       eap
       sql
       pap
}
accounting {
       detail
       sql
}

8 - Luego podemos insertar un usuario en la base de datos de la siguiente forma:
mysql -u root -p
use radius;
INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('usuario1', 'Password', 'password1');
select * from radcheck where UserName='usuario1';

*** En este caso debe de aparecer el usuario que hemos creado.

*** Para probar que todo esta ok,
freeradius -X
radtest usuario1 password1 127.0.0.1 1812 testing123

*** Debe aparecer un resultado mas o menos como este:
root@daloradius:~# radtest usuario1 password1 127.0.0.1 1812 testing123
Sending Access-Request of id 215 to 127.0.0.1 port 1812
User-Name = "usuario1"
User-Password = "password1"
NAS-IP-Address = 127.0.1.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=215, length=20

---------------------------------Instalación de DaloRADIUS ----------------------------------------------------

*** Como todas las pruebas que hemos hecho hasta este momento ya están ok y hemos obtenido buenos resultados, procedemos a instalar la interface de administración GUI de DALORADIUS.
9 - Primero debemos de bajar la versión mas reciente de este paquete, podemos bajarlo desde:
wget http://softlayer.dl.sourceforge.net/project/daloradius/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz esta es la versión mas reciente a la fecha.

*** Si damos el camando "ls" podremos ver el archivo daloradius-0.9-8.tar.gz el cual será necesario descomprimir con el siguiente comando:
tar xvzf daloradius-0.9-8.tar.gz

10 - Luego copiamos este archivo bajo el directorio de publicación del servidor web. Como en nuestro caso estamos trabajando con una distribución de Ubuntu (9.04), el directorio de publicación por defecto es: /var/www/. Entonces hacemos lo siguiente:
cp daloradius-0.9-8 /var/www/daloradius -R

*** Para esto asumimos que ya está instalado el paquete de "Apache2" y los paquetes mencionados al inicio de la guía

11 - Luego instalamos algunas librerias que son necesarias para el buen funcionamiento de la aplicación:
apt-get install php5 php5-mysql php-pear php5-gd php-DB

12 - Ahora cambiamos los permisos y propiedades del directorio de daloradius.
chown www-data:www-data /var/www/daloradius/ -R

13 - Cambiamos los permisos del archivo:
chmod 644 /var/www/daloradius/library/daloradius.conf.php

14 - 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 se muestra errores deberian estar estas nuevas tablas creadas en la base de datos. Una buena herramienta para administrar las bases de datos de MySQL es "phpmyadmin"

*** Si lo deseamos instalar hacemos lo siguiente:
apt-get install phpmyadmin (No es mandatorio pero nos facilitará la existencia)

*** Una vez instalado accesamos con asi: http://x.x.x.x/phpmyadmin
usuario: root
password: (el usuario asignado a la cuenta root del server)

*** Otra forma de ver las tablas seria siempre con la linea de comando:
mysql -u root -p
use radius ;
show tables;
Deberia de aparecer un listado mas o menos como este:

Database changed
mysql> 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;

15 - Seguidamente editamos el archivo daloradius.conf.php para poner los valores de la conexión al server de la base de datos:

......................
    CONFIG_DB_ENGINE = mysql
    CONFIG_DB_HOST = 127.0.0.1
    CONFIG_DB_USER = radius
    CONFIG_DB_PASS = labserver
    CONFIG_DB_NAME = radius
    .......................

*** Guardamos los cambios y salimos del editor.

16 - Una vez esto, reiniciamos el apache:
/etc/init.d/apache2 restart

17 - Ahora ya podemos accesar al GUI usando el siguiente enlace:
http://x.x.x.x/daloradius (En este caso "daloradius" hace referencia al directorio dentro de /var/www/ en donde publicamos el sitio)
Usuario: Administrator
Password: radius

*** Cambie "x.x.x.x" por la ip de su servidor.

*** Cambie tambien el password del administrador del DaloRADIUS para evitar problema de seguridad, y es también altamente recomendado borrar el usuario "liran" el cual se agrega por default y pertenece al creador de código de la aplicación. (Le agredecemos el desarrollo, pero no le dejaremos entrar a nuestro server, :)


NOTAS: En algunas versiones de DaloRADIUS algunas tablas vienen nombradas de forma diferente en el esquema de la Base de Datos y el Archivo de conexion de PHP, "daloradius.conf.php", por lo tanto es necesario luego comparar los nombres de las tablas en este archivo, con los nombres reales en las tablas dentro de la Base de Datos en MySQL.

Un ejemplo de ISSUE que trae la version 0.9.8 de DaloRADIUS es el nombre de la tabla de grupo de usuarios, en el archivo aparece como "usergroup" pero en la Base de datos aparece como "radusergroup"... Lo mas sencillo será cambiar en nombre dentro del archivo de configuración de "daloradius.conf.php"

Este error se presenta desde el GUI de Daloradius:
Database error
Error Message: DB Error: no such table
Debug info: SELECT distinct(radcheck.username),radcheck.value, radcheck.id,usergroup.groupname as groupname, radcheck.attribute, userinfo.firstname, userinfo.lastname FROM radcheck LEFT JOIN userinfo ON radcheck.username=userinfo.username LEFT JOIN usergroup ON radcheck.username=usergroup.username WHERE (Attribute LIKE '%-Password') OR (Attribute='Auth-Type') GROUP BY UserName [nativecode=1146 ** Table 'radiusdb.usergroup' doesn't exist]

Fatal error: Call to undefined method DB_Error::numRows() in /var/www/daloradius-0.9-8/mng-list-all.php on line 102



Realacionados :
Cómo Autenticar usuarios vía radius en un FortiGate



Referencias:
http://freeradius.org/
http://wiki.freeradius.org/SQL_HOWTO
http://sourceforge.net/projects/daloradius
http://www.howtoforge.com/wifi-authentication-accounting-with-freeradius-on-centos5
http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html

¿Encuentras este artículo de utilidad?

Si No

Categoría: Ubuntu

Última actualización February 27, 2010 with 37260 views