FreeRADIUS es una suite RADIUS
gratuita, modular y de alto rendimiento, desarrollada y distribuida bajo la Licencia Pública General GNU, versión 2, y se puede descargar y usar libre de costo.
RADIUS
(Remote Authentication Dial-In User Server), es un protocolo ampliamente empleado para controlar el acceso a servicios en red. Permite gestionar la autenticación, autorización y registro de usuarios remotos sobre un determinado recurso. La tupla "autenticación, autorización y registro" es más conocida como AAA
, proveniente del acrónimo inglés Authentication, Authorization and Accounting
.
daloRADIUS, se basa en una implementación de FreeRADIUS
con un servidor de base de datos que actúa como backend.
daloRADIUS
es una aplicación avanzada de administración web RADIUS
destinada a administrar hotspots e implementaciones de ISP de propósito general. Cuenta con gestión de usuarios, informes gráficos, contabilidad, un motor de facturación y se integra con GoogleMaps
para la localización geográfica. Está escrito en PHP
y JavaScript
y utiliza una capa de abstracción de base de datos, lo que significa que es compatible con muchos sistemas de bases de datos, entre ellos los populares MySQL
, MariaDB
, PostgreSQL
, Sqlite
y MSSQL
.
-
Instalar servidor (físico, máquina virtual o contenedor) con sistema operativo
Debian 10 Buster
, básico -
Establecer internalización
en_US.UTF-8
y zona horariaAmerica/Havana
dpkg-reconfigure locales
dpkg-reconfigure tzdata
- Establecer nombre
FQDN
del sistema
nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.100 daloradius.example.tld daloradius
- Establecer parámetros de red
nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.254
- Configurar repositorio de paquetes
nano /etc/apt/apt.conf
Acquire::Check-Valid-Until "false";
nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib
deb http://deb.debian.org/debian-security/ buster/updates main contrib
deb http://deb.debian.org/debian/ buster-updates main contrib
deb http://deb.debian.org/debian/ oldstable main contrib
NOTA: La definición del repositorio
oldstable
, obedece a la dependencia deDaloradius
del paquetephp-bd
, no disponible enDebian 10 Buster
.
- Actualizar el sistema
apt update && apt full-upgrade -y
- Crear certificado de seguridad
TLS/SSL
openssl req -x509 -nodes -days 3650 -sha512 \
-subj "/C=CU/ST=Provincia/L=Ciudad/O=EXAMPLE TLD/OU=IT/CN=Daloradius/emailAddress=postmaster@example.tld/" \
-addext "subjectAltName = DNS:daloradius.example.tld,IP:192.168.0.100" \
-newkey rsa:4096 \
-out /etc/ssl/certs/daloradius.crt \
-keyout /etc/ssl/private/daloradius.key
openssl dhparam -out /etc/ssl/dh2048.pem 2048
chmod 0444 /etc/ssl/certs/daloradius.crt
chmod 0400 /etc/ssl/private/daloradius.key
- Descargar y desplegar
daloRADIUS
apt install unzip
cd /opt
wget https://github.com/lirantal/daloradius/archive/master.zip
unzip daloradius-master.zip
mv daloradius-master/ daloradius/
- Instalar paquetes necesarios
apt install apache2 php libapache2-mod-php php-{gd,common,mail,mail-mime,mysql,pear,mbstring,xml,curl}
apt install php-db && apt-mark hold php-db
- Definir zona horaria
sed -i "s/^;date\.timezone =.*$/date\.timezone = 'America\/Havana'/;
s/^;cgi\.fix_pathinfo=.*$/cgi\.fix_pathinfo = 0/" \
/etc/php/7*/cli/php.ini
- Crear
VirtualHost
nano /etc/apache2/sites-available/daloradius.conf
<VirtualHost *:80>
ServerName daloradius.example.tld
Redirect permanent / https://daloradius.example.tld/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName daloradius.example.tld
Protocols h2 h2c http/1.1
ProtocolsHonorOrder Off
ServerAdmin postmaster@example.tld
DirectoryIndex index.php
DocumentRoot /opt/daloradius/
<Directory "/opt/daloradius/">
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/daloradius.crt
SSLCertificateKeyFile /etc/ssl/private/daloradius.key
SSLOpenSSLConfCmd DHParameters "/etc/ssl/dh2048.pem"
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
SSLHonorCipherOrder on
SSLCompression off
SSLOptions +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ErrorLog ${APACHE_LOG_DIR}/daloradius_error.log
CustomLog ${APACHE_LOG_DIR}/daloradius_access.log combined
</VirtualHost>
</IfModule>
- Activar módulos necesarios,
VirtualHost
y reiniciar el servicio
a2enmod rewrite ssl
a2dissite 000-default.conf
a2ensite daloradius.conf
systemctl restart apache2.service
- Instalar paquetes necesarios
apt install mariadb-server mariadb-client
- Asegurar el servicio
mysql_secure_installation
Enter current password for root (enter for none):
Change the root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
mysql -u root
MariaDB [(none)]> UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
- Crear usuario administrativo de bases de datos
mysql -u root -p
MariaDB [(none)]> GRANT ALL ON *.* TO 'db_admin'@'%' IDENTIFIED BY 'P@s$w0rd' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
- Reiniciar el servicio
systemctl restart mariadb.service
Si se desea utilizar la última versión estable proporcionada por los desarrolladores, se deben seguir estos sencillos pasos:
- Agregar la firma
PGP
del repositorio de paquetesFreeRADIUS
apt-key adv --keyserver keys.gnupg.net --recv-key 0x41382202
- Agregar al final del fichero
/etc/apt/sources.list
deb https://packages.networkradius.com/releases/debian-buster/ buster main
- Actualizar base de datos de paquetes
apt update
- Instalar paquetes necesarios
apt install freeradius freeradius-mysql freeradius-utils
NOTA: Si se instala la última versión estable disponible en el repositorio de paquetes oficial de
freeRADIUS
, en la ubicación de los ficheros de configuración del servicio, se elimina la versión del paquete, es decir de/etc/freeradius/3.0/
pasaría a ser/etc/freeradius/
.
- Crear e inicializar base de datos
mysql -u db_admin -p
MariaDB [(none)]> CREATE DATABASE radius;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
mysql -u db_admin -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
- Configurar acceso a la base de datos
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
nano /etc/freeradius/3.0/mods-enabled/sql
sql {
dialect = "mysql"
driver = "rlm_sql_${dialect}"
server = "localhost"
port = 3306
login = "db_admin"
password = "P@s$w0rd"
radius_db = "radius"
}
read_clients = yes
client_table = "nas"
NOTA: Sólo se muestran los parámetros modificados.
Además, se deben descomentar las líneas de configuración que contengan -sql
, existentes en los ficheros /etc/freeradius/3.0/sites-available/default
y /etc/freeradius/3.0/sites-available/inner-tunnel
.
- Establecer permisos y reiniciar el servicio
chgrp -h freerad /etc/freeradius/3.0/mods-available/sql
chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql
systemctl restart freeradius.service
- Establecer permisos
cd /opt
chown -R www-data:www-data daloradius/
cp daloradius/library/daloradius.conf.php.sample daloradius/library/daloradius.conf.php
chmod 664 daloradius/library/daloradius.conf.php
- Actualizar la base de datos
mysql -u db_admin -p radius < daloradius/contrib/db/mysql-daloradius.sql
mysql -u db_admin -p radius < daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
- Configurar acceso a la base de datos
nano daloradius/library/daloradius.conf.php
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'db_admin';
$configValues['CONFIG_DB_PASS'] = 'P@s$w0rd';
$configValues['CONFIG_DB_NAME'] = 'radius';
NOTA: Sólo se muestran los parámetros modificados.
- Reiniciar los servicios correspondientes
systemctl restart freeradius.service apache2.service
Finalmente, acceder a la aplicación web, introduciendo la dirección http://daloradius.example.tld/
, en el navegador de preferencia y usar el par usuario/contraseña (administrator/radius
) para efectuar el login
y comenzar a explotar el sistema.
NOTA: Se debe cambiar la contraseña por defecto del usuario
Administrator
; así como renombrar el fichero/opt/daloradius/update.php
.