FREERADIUS: en debian 9 con dolaRADIUS

Esta guía explica como instalar un freeradius en un debian 9. Basada en: https://kifarunix.com/install-freeradius-with-dolaradius-on-debian-9/

  • Actualizamos el sistema
apt update
apt upgrade
apt dist-upgrade

Apache

apt install apache2 -y
  • Verificamos que el servicio esta corriendo
systemctl status apache2
  • RESULTADO:
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: 
   Active: active (running) since Tue 2019-06-11 16:38:33 UTC; 15s ago
 Main PID: 875 (apache2)
   CGroup: /system.slice/apache2.service
           ├─875 /usr/sbin/apache2 -k start
           ├─877 /usr/sbin/apache2 -k start
           └─878 /usr/sbin/apache2 -k start

Jun 11 16:38:33 freeradius systemd[1]: Starting The Apache HTTP Server...
Jun 11 16:38:33 freeradius systemd[1]: Started The Apache HTTP Server.

MariaDB

  • Instalamos
apt install mariadb-server -y
  • La configuramos
mysql_secure_installation
  • RESULTADO:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: HB0
Re-enter new password: HB0
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]  Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

PHP

  • Instalamos
apt install php libapache2-mod-php php-mysql php-common php-gd php-mbstring php-curl php-xml php-mail php-mail-mime php-pear -y
  • Abrimos el archivo
nano /etc/apache2/mods-enabled/dir.conf
  • Agregamos «index.php» de primero
<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
  • Reiniciamos
systemctl restart apache2

PEAR DB

  • Actualizamos
pear upgrade pear
pear channel-update pear.php.net
  • Instalamos
pear install DB
pear install MDB2
pear install pear/MDB2#MYSQLi

FREERADIUS

  • Instalamos
apt-get install freeradius freeradius-mysql freeradius-utils -y
  • Lo habilitamos
systemctl enable freeradius
  • Comprobamos que este escuchando por los puertos
ss -alun4 | grep -E '1812|1813'
  • RESULTADO:
UNCONN     0      0      127.0.0.1:18120                    *:*                  
UNCONN     0      0            *:1812                     *:*                  
UNCONN     0      0            *:1813                     *:*
  • Vamos a detener el FreeRadius y lo encendemos en modo depuración
systemctl stop freeradius
freeradius -X
  • RESULTADO:
...
listen {
  	type = "auth"
  	ipaddr = 127.0.0.1
  	port = 18120
}
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 53774
Listening on proxy address :: port 53428
Ready to process requests

  • Comprobamos que puertos están abiertos (desde otro servidor)
sudo nmap -sUT -v 10.20.200.16

PRIMER DEMO: Usuario de base de datos local

  • Creamos un nuevo cliente (NAS – Network access server) en el archivo
nano /etc/freeradius/3.0/clients.conf
  • Agregamos al final del archivo lo siguiente:
client "controlador" {
        ipaddr = 10.20.191.2
        proto = udp
        secret = 'Adrian_ADM_0'
        require_message_authenticator = no
        nas_type = cisco
        ### login = !root ### password = someadminpass ###
        limit {
                max_connections = 16
                lifetime = 0
                idle_timeout = 30
        }
}
  • Con esto hemos agregado al cliente con la IP 10.20.191.2 en este caso es nuestra controladora inalámbrica, encargada de autenticar a los clientes inalámbricos.
  • Ahora abrimos el archivo, para crear un usuario
nano /etc/freeradius/3.0/users
  • Ahora agregamos al final un usuario de prueba al que llamaremos user1, con la contraseña en texto plano user1
"user1" Cleartext-Password := "user1"
  • Reiniciamos el servicio
/etc/init.d/freeradius restart
  • RESULTADO:
[ ok ] Restarting freeradius (via systemctl): freeradius.service.
  • En este punto debemos de poder accesar a la red inalámbrica que autentica en el radius, con el usuario: user1 y la contraseña: user1

Configuración de MYSQL

  • Ingresamos a la BD como usuario «root»
mysql -u root -p
  • Creamos una base de datos de nombre «radius»
create database radius;
  • Creamos un usuario para conectarnos a la BD de manera local
  • User: radius
  • Pass: RB0
grant all privileges on radius.* to radius@localhost identified by 'P@ssWORD';
  • Recargamos los privilegios de la tablas para que los cambios tengan efecto
flush privileges;
  • Salimos de Mysql
quit
  • Ahora vamos a importar el esquema por defecto de radius a la base de datos que creamos en el paso anterior, el esquema se va importar a la ruta /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
  • Ahora habilitamos el modulo SQL, creando un enlace simbólico del modulo sql que se encuentra en /etc/freeradius/3.0/mods-available/ a /etc/freeradius/3.0/mods-enabled
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
  • Ahora abra el modulo sql habilitado y configure la base de datos radius como se muestra a continuación
nano /etc/freeradius/3.0/mods-enabled/sql
  • Primero buscamos la linea driver = «rlm_sql_null», y remplazamos por driver = «rlm_sql_mysql»
  • Buscamos la linea dialec= «sqlite» para ubicarnos y hacemos los siguientes cambios
  • Ahora buscamos la línea read_clients = yes y la descomentamos
  • Salvamos los cambios (Ctrl + o, en nano) y salimos del editor
  • Ahora cambiamos el usuario y el grupo dueño del modulo SQL habilitado (enlace simbólico) a freerad como se muestra a continuación
chown -h freerad.freerad /etc/freeradius/3.0/mods-enabled/sql
  • Luego reiniciamos el servicio
systemctl restart freeradius

Instalación y configuración de daloRadius

  • Descargamos la ultima versión de daloRadius

https://sourceforge.net/projects/daloradius/

  • Guardamos el archivo de una vez en la ruta donde necesitaremos extraerlo, en /var/www/html, la carpeta daloradius debe ubicarse en el directorio root del servidor web
  • En nuestro caso el archivo descargado es daloradius-1.0-0.zip y necesitaremos unzip para descomprimirlo, lo podemos instalar como sigue:
apt-get install unzip
  • Ahora descomprimimos el archivo descargado
unzip daloradius-1.0-0.zip
  • Esto extrae una carpeta llamada daloradius-master
  • daloRadius tiene por defecto sus propias tablas MySQL, necesitaremos importar esas tablas a la base de datos radius que creamos con anterioridad
mysql -u root -p radius < /var/www/html/daloradius-master/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radius < /var/www/html/daloradius-master/contrib/db/mysql-daloradius.sql
  • Ahora configuramos configuramos como dueño de los archivos de configuración web de daloRadius al usuario del servidor web de Apache, como se muestra a continuación
chown -R www-data.www-data /var/www/html/daloradius-master/
  • Configuramos los permisos de los archivos principales de configuración de daloRadius a 664 como se muestra
chmod 664 /var/www/html/daloradius-master/library/daloradius.conf.php
  • Abrimos los siguientes archivos de configuración de daloRadius y establecemos los parámetros de conexión a la base de datos
nano /var/www/html/daloradius-master/library/daloradius.conf.php
nano /var/www/html/daloradius-master/daloradius-users/library/daloradius.conf.php
  • Lo configuramos como se muestra
  • Debemos prestar atención a la línea $configValues[‘CONFIG_DB_ENGINE’] = ‘mysqli’; en nuestro caso no tuvimos que editarla pero en otro casos se debe cambiar de :
$configValues['CONFIG_DB_ENGINE'] = 'mysql';
  • por
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
  • Esto para evitar el error:
Error Message: DB Error: extension not found.
  • Salvamos los cambios (Ctrl + o, en nano) y salimos del editor
  • Reiniciamos el servicio freeradius
systemctl restart freeradius
  • Si no hay errores todo está listo y podemos accesar a la interfaz web daloRadius con la dirección del servidor como se muestra
http://10.20.200.16/daloradius-master/
  • Si todo va bien deberíamos de poder ver la interfaz de daloRadius, los credenciales por defecto son:
  • user: administrator
  • pass: radius