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
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.
Defaultní heslo se dá změnit kliknutím na Config > Operators > List Operator a kliknout na administrator:
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:
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
Řešení problému:
Pro others (o) přidat práva pro čtení syslog souboru:
chmod o+r /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
Ř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