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

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *