Apunts de Freeradius
Table of Contents
1 Introducció
Freeradius és la implementació amb llicència lliure de Radius, per tant es tracta d'un servidor d'autenticació d'usuaris. Es pot utilitzar per autenticar usuaris des de diferents tipus de clients (cisco, web, etc), però l'ús més típic és autenticar usuaris WiFi. L'autenticació la realitza el AP contra el Freeradius de manera que el usuari no interactua directament i el fa més difícil d'atacar. També cal remarcar que les dades d'autenticació que gestiona Freeradius poden provenir de diferents fonts, per exemple d'arxius de text plà, bases de dades, o fins i tot de Directoris Actius. Aquesta última opció és molt interessant en entorns empresarials per centralitzar tota la gestió d'usuaris. Finalment val la pena incidir en la nomenlatura que utilitza. Definirem:
- Servidor
- El equip que dona el servei de Freeradius.
- Client
- El equip que, donat d'alta a Freeradius té permés realitzar consultes i verificar l'identitat d'usuaris (p.e.: Un Access Point).
- Usuari
- El usuari que mitjançant un equip (un telèfon o portàtil) vol utilitzar un servei (wifi) i prèviament cal que s'autentiqui.
2 Configuració de la VM
- HD (si instal·lem Daloradius calen més de 8Gb!!!)
- Debian 10
- Adaptador pont amb IP estàtica
3 Prerequisits
ATENCIÓ: Tan sols si volem que Freeradius treballi amb MariaDB.
3.1 MariaDB
MariaDB és un gestor de bases de dades, derivat de /MySQL.
3.1.1 Instal·lació
apt update & upgrade -y apt install mariadb-server mariadb-client mysql_secure_installation
3.1.2 Creació de BBDD
mysql -u root -p
CREATE DATABASE radius;
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "StrongradIusPass";
FLUSH PRIVILEGES;
3.1.3 Verficiació
mysql -u radius -p SHOW DATABASES; USE radius;
4 FreeRadius
És el servei d'autenticació pròpiament dit.
4.1 Instal·lació
ATENCIÓ: El paquet freeradius-mysql tan sols necessari si volem fer instal·lació de Daloradius o utilitzar MySQL per emmagatzemar les dades de Radius.
apt -y install freeradius freeradius-mysql freeradius-utils systemctl enable --now freeradius.service
4.1.1 Verificació instal·lació
systemctl status freeradius
4.2 Configuració
4.2.1 Opció amb arxiu
Configurar els següents arxius:
- Clients
Cal modificar el següent arxiu, tanmateix com que és recomanable eliminar la configuració per defecte en farem una còpia.
cp /etc/freeradius/3.0/clients.conf /etc/freeradius/3.0/clients.conf.BK nano /etc/freeradius/3.0/clients.conf
I dins configurem el client:
client mikrotik { ipaddr = 0.0.0.0/0 proto = * secret = password requiremessageauthenticator = no nastype = other limit { maxconnextions = 16 lifetime = 0 idletimeout = 60 } }
ATENCIÓ: Els paràmetres bàsics i essencials son ipaddr i secret, així com el nom. ipaddr hauría de ser una ip o rang, per fer proves fem servir l'adreça 0.0.0.0/0 que denota "qualsevol adreça", per tant no estem fent filtratge.
- Usuaris
nano /etc/freeradius/3.0/users
Cal entrar els usuaris amb el següent format:
usuari Cleartext-Password := "contrasenya"
4.2.2 Opció amb MySQL / MariaDB
Les opcions a configurar son les mateixes que en configuració d'arxiu però contingudes en una BBDD.
Primer de tot carreguem un esquema bàsic de l'estructura de la BBDD.
mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
Es crea un enllaç simòlic (feble) de la configuració bàsica de sql a la carpeta de mods-enabled per activar l'ús de sql per part de Freeradius. (Semblant a com funciona Apache2).
ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
Editem l'arxiu de configuració de Freeradius en sql:
nano /etc/freeradius/3.0/mods-enabled/sql
I cerquem i modifiquem els següents paràmetres:
sql { driver = "rlm_sql_mysql" dialect = "mysql" # Connection info: server = "localhost" port = 3306 login = "radius" password = "StrongradIusPass" # Database table configuration for everything except Oracle radius_db = "radius" } # Set to ‘yes’ to read radius clients from the database (‘nas’ table) # Clients will ONLY be read on server startup. read_clients = yes # Table to keep radius client info client_table = "nas"
Finalment canviem propietaris i permisos per major seguretat.
chgrp -h freerad /etc/freeradius/3.0/mods-available/sql chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql systemctl restart freeradius
- Configuració clients a MariaDB
Els clients s'emmagatzemen a la taula nas.
mysql -u root -p show columns from nas; insert into nas (nasname,secret) values(“Mikrotik”, “clauAP”);
- Configuració d'usuaris a MariaDB
Els usuaris es configuren a la taula radcheck. Destacar que s'emmagatzemen els valors un per un com a atribut, operador i valor.
mysql -u root -p show columns from radcheck; insert into radcheck (username,attribute,op,value) values(“bob”, “Cleartext-Password”, “:=”, “password”);
4.3 Verificació estat servei
Utilitzem la comanda radtest de les freeradius-utils per realitzar una petició per comandes al servidor radius.
systemctl status freeradius
radtest usuari contrasenya_usuari ip_radius 0 contrasenya_client
5 Client Mikrotik
És el client que realitzarà les peticions d'autenticació a Freeradius per validar els usuaris que s'hi volen connectar. Cal remarcar que hi ha una gran varietat de possibles clients i per tant de possibles configuracions, tot i que els paràmetres bàsics seràn sempre comuns. ATENCIÓ: La interfície Wifi cal que tingui la IP configurada al client Radius, per tant ha d'estar al Bridge.
5.1 Creació servidor Radius
- Opcions "normals" + Src. Address.
5.2 Perfil de seguretat
- Opcions normals.
5.3 Wifi
- Opcions normals.
6 Gestor Daloradius
6.1 Pre-requisits
Cal:
- Apache2
- MariaDB (Mirar prerequisits de Freeradius).
6.2 Instal·lació
apt install wget unzip
wget https://github.com/lirantal/daloradius/archive/master.zip
unzip master.zip
mv daloradius-master/ daloradius
cd daloradius
mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql mysql -u root -p radius < contrib/db/mysql-daloradius.sql
cd .. mv daloradius /var/www/html/ chown -R www-data:www-data /var/www/html/daloradius/ chmod 664 /var/www/html/daloradius/library/daloradius.conf.php
pear install DB
6.2.1 Configuració
nano /var/www/html/daloradius/library/daloradius.conf.php
$configValues['CONFIG_DB_HOST'] = 'localhost'; $configValues['CONFIG_DB_PORT'] = '3306'; $configValues['CONFIG_DB_USER'] = 'radius'; $configValues['CONFIG_DB_PASS'] = 'StrongradIusPass'; $configValues['CONFIG_DB_NAME'] = 'radius';
systemctl restart freeradius.service apache2 systemclt status freeradius apache2
6.2.2 Configuració via web
Accedir a http://<ip>/daloradius/
amb usuari administrator i password radius
7 Webgrafia
- Freeradius.org: Getting Started.
- techexpert.tips:Instalacion de FreeRadius en Ubuntu Linux
- computingforgeeks.com: Install FreeRADIUS and Raloradius on Debian 10 (Buster).
8 Bitàcora
8.1
No aconsegueixo que el client (Android) connecti. Veig molts errors de SQL per tant és possible que sigui problema del Daloradius més que del Radius/propiament o el /Mikrotik o client Android.
Instal·laré de nou un FreeRadius però sense gestor, "a pelo", a veure si així funciona.
Red, després de refer FreeRadius de 0 i el Mirkotik, encara no funciona.
8.2
Per fi, ha pujat l'Arnau i hem aconseguit que funcioni. Han estat dues coses:
- La interfície de Wifi del Mikrotik calía que estigues dins del bridge.
- El meu telf no funciona correctament.
Festival.
8.3
Refeta la pràctica utilitzant MariaDB com a contenidor de les dades. La veritat és que canvia molt poc, simplement emmagatzemar els mateixos valors i paràmetres però en una taula. Refaig mínimament el document, amb alguna explicació i estructura una mica més lògica, i ho aparco aquí. No treu cap invertir més temps amb la feina que tinc per davant.