AP administrado via web (I)

Por azares del destino, hace unos días descubrí daloRADIUS, un proyecto open source para crear unas interfaz web de administración para FreeRADIUS. Este proyecto a día de hoy se encuentra un poco abandonado, pero poco a poco un grupo de desarrolladores lo está intentando reflotar para adaptarlo a la últimas versiones de PHP y FreeRADIUS.

Hé aquí mi pequeña contribución al proyecto, una pequeña guía sobre cómo montarnos un punto de acceso wifi con autenticación WPA-EAP y administrado vía web. Para ello necesitaremos MySQL, FreeRADIUS, Apache2 + PHP, hostapd y por supuesto un poquito de daloRADIUS.

Primero instalaremos todo el software necesario:

apt-get install mysql-server freeradius freeradius-mysql freeradius- utils apache2 libapache2-mod-php php php-db php-gd php-pear php-mail php- mysql hosted

daloRADIUS está desarrollado para funcionar con FreeRADIUS 2 y PHP 4/5, el comando anterior en la mayoría de sistemas actuales, terminará instalando FreeRADIUS 3 y PHP 7, pero no os preocupéis, las funcionalidades básicas siguen funcionando, aunque hay que tener en cuenta algunos detalles que iremos comentando.

Una vez instalado los servidores MySQL y FreeRADIUS, lo que haremos será preparar la base de datos para su correcto funcionamiento. Para ello crearemos un usuario y un base de datos para radius y le aplicaremos el esquema incluido en /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql:

root@dalo:~# service mysql start
root@dalo:~# mysql –u root –p
mysql> create database radius;
mysql> grant super on *.* to radius@localhost identified by “Radius.1617”; mysql> quit;
root@dalo:~# mysql –u radius –p radius < /etc/freeradius/3.0/mods- config/sql/main/mysql/schema.sql

Ahora configuraremos FreeRADIUS para que utilice el módulo SQL. Para llevarlo a cabo tendremos que configurar la conexión a base de datos a través del fichero /etc/freeradius/3.0/mods-available/sql estableciendo el driver de conexión a base de datos y los datos de conexión (que en nuestro caso será la MySQL que acabamos de configurar)

 sql {

# The sub-module to use to execute queries. This should match
... ...
# the database you're attempting to connect to. #
# * rlm_sql_mysql
# * rlm_sql_mssql
# * rlm_sql_oracle
# * rlm_sql_postgresql
# * rlm_sql_sqlite
# * rlm_sql_null (log queries to disk) #
driver = "rlm_sql_mysql"
dialect = "mysql"
# Connection info:
#
server = "localhost" port = 3306
login = "radius" password = "Radius.1617"
# Database table configuration for everything... radius_db = "radius"

Tras editar el fichero de configuración del módulo SQL, lo activaremos para que se aplique durante el inicio de FreeRADIUS. Para ello bastará con crear un enlace simbólico en el directorio mods-enabled:

 root@dalo:/etc/freeradius/3.0/mods-enabled# ln -s ../mods-available/sql sql

Tras esto, nos situaremos en el directorio /var/www/html y descargaremos daloRADIUS

root@dalo:/var/www/html # wget http://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz 
root@dalo:/var/www/html # tar -xvzf daloradius-0.9-9.tar.gz 
root@dalo:/var/www/html # mv daloradius-0.9-9 daloradius root@dalo:/var/www/html # chown www-data:www-data -R daloradius

Aplicamos sobre la base de datos de radius las modificaciones necesarias para que daloRADIUS funciones correctamente:

 root@dalo:/var/www/html # mysql -u radius -p radius < daloradius/contrib/db

Creamos el fichero de log

root@dalo:~# mkdir /var/log/daloradius
root@dalo:~# touch /var/log/daloradius/daloradius.log
root@dalo:~# chown www-data:www-data /var/log/daloradius/daloradius.log

Ahora configuramos el acceso a base de datos para la aplicación. Esta configuración se realiza a través del fichero <daloradius_home>/library/daloradius.conf.php. Lo editamos y establecemos la siguiente configuración:

$configValues['DALORADIUS_VERSION'] = '0.9-9';
$configValues['FREERADIUS_VERSION'] = '2';
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'Radius.1617';
$configValues['CONFIG_DB_NAME'] = 'radius';
…
$configValues['CONFIG_LOG_FILE'] = '/var/log/daloradius/daloradius.log'

Ya tenemos todo el sistema instalado, así que ahora procederemos a la comprobar el correcto funcionamiento del mismo. Para ello levantaremos los distintos servicios y crearemos un usuario de prueba para comprobar que podemos realizar la autenticación del mismo.

Arrancamos los servicios:

root@dalo:~# service mysql start && service freeradius start && service apache2 start

Accedemos a la interfaz web de daloRADIUS y nos autenticamos con el usuario administrator/radius. desde el apartado de administración de usuarios procederemos a la creación de un usuario de prueba:

dalo1

Una vez tengamos el usuario de prueba creado, realizaremos una prueba de autenticación con el comando radtest:

root@dalo:~# radtest testuser test.1617 localhost 1812 testing123

Sent Access-Request Id 144 from 0.0.0.0:38110 to 127.0.0.1:1812 length 78

     User-Name = "testuser"

     User-Password = "test.1617"

     NAS-IP-Address = 127.0.1.1

     NAS-Port = 1812

     Message-Authenticator = 0x00

     Cleartext-Password = "test.1617"

Received Access-Accept Id 144 from 127.0.0.1:1812 to 0.0.0.0:0 length 20

Podemos ver también los distintos intentos de autenticación desde la interfaz web a través del menú Reports > Last connection attemps:
dalo2

 

A continuación desglosaremos incidencias que pueden ocurrir durante proceso de instalación y cómo resolverlas:

  • El servidor Apache arranca pero al acceder a la página de daloRADIUS (http://locahost/daloradius) muestra que la página no se encuentra, error 404
  • Comprueba que la ruta que escrita en el navegador se corresponde con el nombre de la carpeta en la que hemos descargado daloRADIUS.
  • Revisa que la carpeta daloradius se encuentre en /var/www/html o en la ruta que tengamos como DocumentRoot en la configuración de apache (podemos consultar la configuración con apachectl -S)

 

  • El servidor Apache arranca pero al acceder a la página de daloRADIUS (http://locahost/daloradius) muestra que la página está prohibida, error 403
  • Chequea que el usuario que utiliza Apache (por defecto www-data, nobody o http, esta configuración se puede consultar con apachectl -S) tiene permisos para leer y ejecutar la carpeta daloradius y los archivos que se encuentran en ella.

 

  • El servidor Apache arranca pero al acceder a la página de daloRADIUS (http://locahost/daloradius) muestra una pagina vacía o un error de base de datos
  • Chequear que se han instalado correctamente todas las librería php necesarias: php, php-db, php-gd, php-mail, php-mysql, php-pear. Se puede consultar con dpkg –l | grep php
  • Revisar si se han aplicado los scripts de configuración de base de datos de daloRADIUS.
  • Comprobar que daloRADIUS está configurado para usar el motor de base de datos mysqli. Por defecto, está configurado para usar el driver/motor de base de datos “mysql”, API que ya no está disponible en PHP 7. Durante la realización de esta práctica se ha hecho uso de mysqli por ofrecer un conjunto de funcionalidades similar pero ampliado al de mysql. Más información: http://php.net/manual/en/mysqlinfo.api.choosing.php

 

  • La prueba de autenticación no es satisfactoria
  • Comprobar que en el fichero /etc/freeradius/3.0/clients.conf está dado de alta el cliente “localhost” con el secreto “testing123”
  • Comprobar que el servidor freeradius está haciendo uso del módulo SQL. Para cerciorarnos podemos parar el servidor freeradius y levantarlo con las opciones de depuración, freeradius –X

 

Y con esto lo dejamos por hoy. En próximas entregas veremos cómo configurar hostapd para obtener el caso de uso completo

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s