Instalace DaloRADIUS pro webovou správu FreeRADIUS

By | 19/12/2022

Last Updated on 04/07/2023 by administrator

Instalace DaloRADIUS pro webovou správu FreeRADIUS

Instalace DaloRADIUS

Motivace:

Článek popisuje instalaci aplikace DaloRADIUS. DaloRADIUS je pokročilá webová platforma sloužící pro rychlejší správu aplikace FreeRADIUS. Díky ní lze elegantně spravovat uživatelé, provádět grafické reporty, accounting, …

OS:

Instalace FreeRADIUS a daloRADIUS byla prováděna na Ubuntu 22.04 LTS. Ubuntu 20.04 LTS.

Implementace [1]:

Příkazem apt update se provede aktualizace seznamu balíčků z repozitářů:

sudo apt update

Příkazem níže budou nainstalované všechny balíčky, které budou potřebné k instalaci a běhu programu daloRADIUS. Jedná se např. o webový server Apache, relační databázi MariaDB, PHP, či další:

sudo apt-get install apache2 mariadb-server php libapache2-mod-php php-mail php-mail-mime php-mysql php-gd php-common php-pear php-db php-mbstring php-xml php-curl unzip wget -y

Příkaz zobrazí aktuální dostupnou verzi FreeRADIUS:

sudo apt policy freeradius

Provede instalaci FreeRADIUS a dalších nástrojů:

sudo apt install freeradius freeradius-mysql freeradius-utils

Zobrazí verzi FreeRADIUS:

freeradius -v

Nejdřív je potřeba zastavit službu FreeRADIUS:

sudo systemctl stop freeradius

Spustit Debug mód pro FreeRADIUS:

sudo freeradius -X

Výstup příkazu sudo freeradius -X by měl na konci ukázat Ready to process request:

Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
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 proxy address * port 47258
Listening on proxy address :: port 43872
Ready to process requests

Pomocí CTRL+C je možné ukončit tento mód debugu.

Vytvoření databáze:

FreeRADIUS potřebuje pro ukládání svých nastavení a dalších informacích databázi. Přihlášení do databáze se provede příkazem níže (-u = username):

sudo mysql -u root

Vytvoření nové databáze se jménem radius:

mysql> CREATE DATABASE radius;

Příkazem bude vytvořen nový MySQL uživatel se jménem radius s heslem a udělíme mu přístup k databázi se stejným jménem radius. Jméno uživatele lze libovolně zvolit:

mysql> GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "NejakeSilneHeslo";

Příkaz FLUSH PRIVILEGES; aplikuje nové změny:

mysql> FLUSH PRIVILEGES;

Všechno nastaveno, nyní je možné opustit MySQL shell příkazem:

mysql> exit

Příkazem níže lze vypsat všechny vytvořené databáze:

mysql -u root -p -e "show databases";

Výstup příkazu mysql -u root -p -e „show databases“; by měl ukázat vytvořenou databázi se jménem radius:

Enter password:
+--------------------+
| Database           | 
+--------------------+
| information_schema | 
| mysql              | 
| performance_schema |
| radius             |  
+--------------------+

Instalace daloRADIUS

Nejnovější verzi daloRADIUS lze stáhnout z GitHubu příkazem níže:

wget https://github.com/lirantal/daloradius/archive/master.zip

Rozbalit zazipovaný soubor master.zip:

unzip master.zip

Přejmenovat složku daloradius-master na daloradius:

mv daloradius-master daloradius

Přejít do složky daloradius:

cd daloradius

Nyní je potřeba naplnit již vytvořenou databázi radius. Ta bude naplněna ze dvou souborů fr2-mysql-daloradius-and-freeradius.sql a mysql-daloradius.sql. Import do databáze se provede pomocí příkazů níže:

sudo mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
sudo mysql -u root -p radius < contrib/db/mysql-daloradius.sql

Nyní jít o úroveň níže a přesunout složku daloradius z aktuálního adresáře do adresáře /var/www/html/:

cd
sudo mv daloradius /var/www/html/

Přejmenovat soubor daloradius.conf.php.sample na daloradius.conf.php:

sudo mv /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php

Změnit vlastníka složky /var/www/html/daloradius/ a její podsložky na www-data:

sudo chown -R www-data:www-data /var/www/html/daloradius/

Nastavit práva pro daloradius.conf.php soubor:

sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

Aby mohl daloRADIUS přistupovat k již vytvořené databázi, která byla vytvořená výše, je nutné mu poskytnout podrobnosti o této nové databázi v konfiguračním souboru daloradius.conf.php:

sudo vi /var/www/html/daloradius/library/daloradius.conf.php

Přepsat FreeRADIUS verzi na 3. Následně by uvedené parametry korespondovat s výše vytvořenou databázi v MySQL. V tomto případě byla výše vytvořena databáze (CONFIG_DB_NAME) radius s uživatelem (CONFIG_DB_USER) radius a heslem (CONFIG_DB_PASS) NejakeSilneHeslo:

$configValues['FREERADIUS_VERSION'] = '3';
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'NejakeSilneHeslo';
$configValues['CONFIG_DB_NAME'] = 'radius';

Aby bylo možné provádět změny v přes webové rozhraní daloRADIUS a ty synchronizovat z FreeRADIUSem, je nutné také modifikovat soubor /etc/freeradius/3.0/mods-available/sql [2]:

vi /etc/freeradius/3.0/mods-available/sql

Vše, co je nutné modifikovat v souboru /etc/freeradius/3.0/mods-available/sql, lze vidět níže i s popisky:

sql {
        ...
# parametr dialect prepsat z sqlite na hodnotu mysql
        dialect = "mysql" 
# parametr driver = "rlm_sql_null" zakomentovat a parametr driver = "rlm_sql_${dialect}" odkomentovat
#       driver = "rlm_sql_null"
        driver = "rlm_sql_${dialect}"
        mysql {

#zakomentovat radky nize parametru tls
#               tls {
#                       ca_file = "/etc/ssl/certs/my_ca.crt"
#                       ca_path = "/etc/ssl/certs/"
#                       certificate_file = "/etc/ssl/certs/private/client.crt"
#                       private_key_file = "/etc/ssl/certs/private/client.key"
#                       cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
#
#                       tls_required = yes
#                       tls_check_cert = no
#                       tls_check_cert_cn = no
#               }
        # odkomentovat vsechny parametry nize (server, port, login a password)  
        # a prepsat aby korespondovaly s vyse vytvorenou databazi v MySQL. 
        server = "localhost"
        port = 3306
        login = "radius"
        password = "NejakeSilneHeslo"

        # stejně tak at koresponduje jmeno databaze 
        radius_db = "radius"

        # odkomentovat parametr read_clients = yes pro cteni radius klientu z databaze 
        read_clients = yes

Vytvořit symbolický link a změnit vlastníka souboru sql /var/www/html/daloradius/ na freerad.freerad:

ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/
chown -h freerad.freerad /etc/freeradius/3.0/mods-enabled/sql

Nyní je vše nakonfigurováno, a tak restartovat FreeRADIUS a Apache:

sudo systemctl restart freeradius
sudo systemctl restart apache2

Pokud je nakonfigurovaný firewall (lze zjistit příkazem sudo ufw status), je nutné povolit provoz UDP/1812 a UDP/1813 pro RADIUS zprávy a TCP/80 a TCP/443 pro management webového rozhraní daloRADIUS:

sudo ufw allow 1812/udp
sudo ufw allow 1813/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Nyní je možné přistoupit k webovému rozhraní daloRADIUS. Ověření funkce Apache se provede zadáním IP adresy serveru do vyhledávače:

http://ip_adresa_serveru/daloradius/

nebo

http://ip_adresa_serveru/daloradius/login.php

Instalace DaloRADIUS
Defaultní login je administrator a heslo radius.

Upozornění: Při každé změně v GUI DaloRADIUS je nutné resetnout službu freeradius v CLI pomocí příkazu service freeradius restart.

Instalace DaloRADIUS
Defaultní heslo se dá změnit kliknutím na Config > Operators > List Operator a kliknout na administrator:

DaloRADIUS zmena hesla

Pozn. FreeRADIUS podporované EAP metody lze najít zde: https://wiki.freeradius.org/features/EAP

TIP – Jak zkrátit URL:

DaloRADIUS běží pod IP adresou 192.168.0.124. Jelikož URL název „192.168.0.124/daloradius/index.php“ je příliš dlouhý, je tady tip jak přesměrovat 192.168.0.124 na 192.168.0.124/daloradius/index.php aby se nemusela zadávat do prohlížeče tato celá URL adresa:

Přejít do souboru 000-default.conf ve složce /etc/apache2/sites-available/:

sudo vi /etc/apache2/sites-available/000-default.conf

Přepsat v souboru 000-default.conf :

DocumentRoot /var/www/html/

na

DocumentRoot /var/www/html/daloradius

Otevřít dir.conf ve složce /etc/apache2/mods-enabled/:

sudo vi /etc/apache2/mods-enabled/dir.conf

Defaultně Apache nejdříve vyhledává index.html. Aby preferoval PHP soubory před ostatními, vložit soubor index.php na začátek. Výsledný soubor pak bude vypadat takto:

<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Nyní je vše nakonfigurováno, restartovat službu Apache:

sudo systemctl restart apache2

Řešení problémů – chyby:

a) Problém Database connection error, Error Message: DB Error: connect failed:

Při nalogování přes daloRADIUS se objeví hláška níže:

Řešení problému:

Je nutné překontrolovat soubor daloradius.conf.php, tak aby korespondoval s vytvořenou databázi v MySQL:

Konfiguraci lze vidět zde

b) Failed binding to auth address 127.0.0.1 port 18120 bound to server inner-tunnel: Address already in use
/etc/freeradius/3.0/sites-enabled/inner-tunnel[33]: Error binding to port for 127.0.0.1 port 18120

je hláška, která se zobrazí při spuštění příkazu sudo freeradius -X

Řešení problému:

Je potřeba zastavit službu FreeRADIUS:

sudo systemctl stop freeradius

a následně spustit příkaz sudo freeradius -X

Pokud ani toto nepomůže, provést kill procesu FreeRADIUS a to tak, že nejdříve příkazem ss -tunlp | grep freeradius číslo FreeRADIUS procesu:

ss -tunlp | grep freeradius

Výstup příkazu ss -tunlp4 | grep freeradius ukazuje, že se jedná o process 219798:

udp    UNCONN  0       0            127.0.0.1:18120               0.0.0.0:*      users:(("freeradius",pid=219798,fd=14))
udp    UNCONN  0       0              0.0.0.0:radius              0.0.0.0:*      users:(("freeradius",pid=219798,fd=15))
udp    UNCONN  0       0              0.0.0.0:radius-acct         0.0.0.0:*      users:(("freeradius",pid=219798,fd=16))
udp    UNCONN  0       0              0.0.0.0:53345               0.0.0.0:*      users:(("freeradius",pid=219798,fd=19))
udp    UNCONN  0       0                 [::]:radius                 [::]:*      users:(("freeradius",pid=219798,fd=17))
udp    UNCONN  0       0                 [::]:radius-acct            [::]:*      users:(("freeradius",pid=219798,fd=18))
udp    UNCONN  0       0                 [::]:58461                  [::]:*      users:(("freeradius",pid=219798,fd=20))
kill -9 219798

c) Při jakékoliv změně ve webové platformě daloRADIUS (přidání, upravování a mazání) FreeRADIUS neodpovídá, resp. není synchronizován.

Např. Při vytvoření nového uživatele přes Management > Users > New User a následném otestování, byla přijate zpráva Access-Reject. To znamená, že parametry FreeRADIUS uvedené níže jsou správně zadány, ale uživatel jako by neexistoval v databázi.

Řešení problému:

Je nutné překontrolovat soubor /etc/freeradius/3.0/mods-available/sql tak aby korespondoval s vytvořenou databázi v MySQL – konfiguraci lze vidět zde, nebo chybí vytvoření symbolického linku či změna vlastníka souboru sql – konfiguraci lze vidět zde.

d) Ignoring request to auth address * port 1812 bound to server default from unknown client 192.168.0.253 port 33268 proto udp

je hláška, která se zobrazí při spuštění příkazu sudo freeradius -X

Řešení problému:

Zkontrolovat zda nechybí odkomentovat parametr níže, který slouží pro čtení radius klientů z databáze:

read_clients = yes

Následně restartovat službu FreeRADIUS:

sudo systemctl restart freeradius

d) Error reading log file: /var/log/syslog. Is this file readable?

je hláška, která se zobrazí v GUI rubrice Reports > Logs > System Log

Error reading log file: /var/log/syslog.

Řešení problému:

Pro others (o) přidat práva pro čtení syslog souboru:

chmod o+r /var/log/syslog

Error reading log file: /var/log/syslog.

Je potřeba říct, že se tato práva automaticky „anulují“ po rebootu Ubuntu.

e) Error reading log file: /var/log/dmesg. Is this file readable?

je hláška, která se zobrazí v GUI rubrice Reports > Logs > Boot Log

Řešení problému:

Pro others (o) přidat práva pro čtení dmesg souboru:

chmod o+r /var/log/dmesg

Je potřeba říct, že se tato práva automaticky „anulují“ po rebootu Ubuntu.

f) Error accessing log file: /tmp/daloradius.log Looked for log file in /tmp/daloradius.log but could not find it. If you know where your daloradius log file is located, specify its location in your library/daloradius.conf.php file

je hláška, která se zobrazí v GUI rubrice Reports > Logs > daloRADIUS Log

/tmp/daloradius.log Looked for log file in /tmp/daloradius.log

Řešení problému:

Jedno z možných řešení je:

Přejít do souboru daloradius.conf.php ve složce /var/www/html/daloradius/library/

vi /var/www/html/daloradius/library/daloradius.conf.php

a přepsat /tmp/daloradius.log:

$configValues['CONFIG_LOG_FILE'] = '/tmp/daloradius.log';

na /var/log/daloradius.log:

$configValues['CONFIG_LOG_FILE'] = '/var/log/daloradius.log';

Defaultně je logování do souboru daloradius.log vypnuté, je možné zapnout různá logování do tohoto souboru parametrem „yes“.

$configValues['CONFIG_LOG_PAGES'] = 'yes';
$configValues['CONFIG_LOG_ACTIONS'] = 'yes';
$configValues['CONFIG_LOG_QUERIES'] = 'yes';

Vytvořit soubor daloradius.log v /var/log/ složce

touch /var/log/daloradius.log

Pro others (o) přidat práva pro čtení daloradius.log souboru:

chmod o+w /var/log/daloradius.log

Tato práva se automaticky „NEanulují“ po rebootu Ubuntu.

Zdroj:

[1] https://www.howtoforge.com/how-to-install-freeradius-and-daloradius-on-ubuntu-20-04/

[2] https://youtu.be/0cD_S-9UDvw

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *