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:

  1. 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.

  2. 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
  1. 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”);
    
  2. 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.1.1 Apache

  1. Instal·lació
    apt install apache2
    apt install php libapache2-mod-php php-{gd,common,mail,mail-mime,mysql,pear,mbstring,xml,curl}
    
    1. Verificació
      php -v
      systemctl status apache2
      

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

8 Bitàcora

8.1 <2019-12-09 dl.>

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 <2019-12-10 dt.>

Per fi, ha pujat l'Arnau i hem aconseguit que funcioni. Han estat dues coses:

  1. La interfície de Wifi del Mikrotik calía que estigues dins del bridge.
  2. El meu telf no funciona correctament.

Festival.

Date: \today

Author: Raul Gimenez Herrada

Created: 2019-12-17 dt. 21:51

Validate