Instalación de Freeradius, MySQL y DaloRadius en 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:
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"
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





