Instalează FreeRADIUS și Daloradius pe Rocky/Alma/CentOS 9|8


Vreau să instalez FreeRADIUS și Daloradius pe CentOS 8/RHEL 8. RADIUS, care reprezintă „Remote Authentication Dial-In User Service”, este un protocol de rețea utilizat pentru autentificarea și contabilizarea utilizatorilor la distanță. Oferă servicii AAA; și anume Autorizare, Autentificare și Contabilizare.

FreeRADIUS este un server RADIUS open source, de înaltă performanță, scalabil, modular și bogat în funcționalități. FreeRADIUS oferă suport pentru proxy de cereri, fail-over și echilibrarea încărcării, precum și acces la diverse baze de date.

Caracteristici principale ale FreeRADIUS

  • Configurare flexibilă printr-o gamă largă de metode pentru selectarea configurațiilor utilizatorului.
  • Suport complet pentru atributele RFC 2865 și RFC 2866.
  • EAP cu subtipurile EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP și Cisco LEAP
  • Atribute specifice furnizorului pentru aproape o sută de furnizori, inclusiv BinTec, Foundry, Cisco, Juniper, Lucent/Ascend, HP ProCurve, Microsoft, USR/3Com, Acc/Newbridge și mulți alții.

Introducerea daloRADIUS în mix

daloRADIUS este o platformă avansată de gestionare RADIUS prin web, scrisă în PHP și JavaScript. Este destinată în principal gestionării hotspoturilor și implementărilor ISP cu scop general, alimentate de serverul FreeRADIUS. Mai jos sunt principalele caracteristici ale daloRADIUS:

  • Strat de abstractizare a bazei de date cu suport pentru multe sisteme de baze de date – MySQL, SQLite, PostgreSQL, MsSQL și Oracle
  • Gestionare avansată a utilizatorilor
  • Raportare și contabilitate grafică puternică
  • Se integrează cu Google Maps pentru geolocalizare
  • Are un motor de facturare

Urmărește pașii următori discutați pentru a instala FreeRADIUS și daloRADIUS pe sistemul Linux CentOS 8/RHEL 8.

Pasul 1: Actualizează-ți serverul

Nu aveți încredere niciodată într-un sistem neactualizat. Toate pachetele instalate pot fi actualizate executând comanda de mai jos în terminal.

sudo dnf -y update

Pasul 2: Instalează Apache și PHP

Vom folosi serverul Apache httpd pentru a găzdui daloRADIUS pe sistemul dumneavoastră. Instalați ambele pachete, httpd și PHP, cu următoarea comandă.

sudo dnf module reset -y php
sudo dnf module reset -y php && sudo dnf module install -y php:8.0
sudo dnf -y install php-{cli,curl,mysqlnd,devel,gd,pear,mbstring,xml,pear,zip}
sudo pear install DB
sudo pear install MDB2

Verifică versiunea de PHP instalată pentru a confirma că instalarea a fost realizată cu succes.

$ php -v
PHP 8.0.30 (cli) (built: Aug  3 2023 17:13:08) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies

Instalează serverul web Apache:

sudo dnf -y install @httpd

Porniți și activați serviciile php-fpm și httpd.

sudo systemctl enable --now httpd php-fpm

Să validăm începutul verificând starea celor două servicii.

systemctl status httpd php-fpm

Permite porturile http și https pe firewall.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Referință pentru instalarea Apache httpd:

  • Instalați serverul Apache httpd pe RHEL/CentOS 8

Pasul 3: Instalarea și configurarea MariaDB

Avem un ghid separat pentru instalarea serverului de baze de date MariaDB pe RHEL/CentOS 8. Consultați-l folosind linkul de mai jos.

  • Instalați serverul de baze de date MariaDB pe CentOS/RHEL 8

După instalare, accesați consola MySQL ca utilizator root și creați baza de date/utilizator pentru FreeRADIUS/daloRADIUS.

$ mysql -u root -p
CREATE DATABASE radius;
GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "StrongradIusPass";
FLUSH PRIVILEGES;
\q

Pasul 4: Instalarea FreeRADIUS

Pachetele FreeRADIUS sunt disponibile în depozitul modular.

$ sudo dnf module list freeradius
Last metadata expiration check: 0:04:00 ago on Thu 10 Oct 2019 05:08:54 PM EAT.
CentOS-8 - AppStream
Name                      Stream                 Profiles                 Summary                                                                  
freeradius                3.0 [d]                server [d]               High-performance and highly configurable free RADIUS server              

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Pentru a instala, pur și simplu rulează comanda.

sudo dnf install -y @freeradius freeradius-utils freeradius-mysql

Porniți serviciul după instalare.

sudo systemctl enable --now radiusd.service

Acum poți verifica starea:

$ systemctl status radiusd.service
● radiusd.service - FreeRADIUS high performance RADIUS server.
   Loaded: loaded (/usr/lib/systemd/system/radiusd.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-11-23 01:53:42 UTC; 3s ago
  Process: 14781 ExecStart=/usr/sbin/radiusd -d /etc/raddb (code=exited, status=0/SUCCESS)
  Process: 14778 ExecStartPre=/usr/sbin/radiusd -C (code=exited, status=0/SUCCESS)
  Process: 14732 ExecStartPre=/bin/sh /etc/raddb/certs/bootstrap (code=exited, status=0/SUCCESS)
  Process: 14731 ExecStartPre=/bin/chown -R radiusd.radiusd /var/run/radiusd (code=exited, status=0/SUCCESS)
 Main PID: 14783 (radiusd)
    Tasks: 6 (limit: 22612)
   Memory: 77.8M
   CGroup: /system.slice/radiusd.service
           └─14783 /usr/sbin/radiusd -d /etc/raddb

Nov 23 01:53:41 rocky8.mylab.io sh[14769]:                   URI:http://www.example.com/example_ca.crl
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Certificate is to be certified until Jan 22 01:53:41 2024 GMT (60 days)
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Write out database with 1 new entries
Nov 23 01:53:41 rocky8.mylab.io sh[14769]: Data Base Updated
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:'whatever' -passout pass:'whatever'
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: chmod g+r client.p12
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: openssl pkcs12 -in client.p12 -out client.pem -passin pass:'whatever' -passout pass:'whatever'
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: chmod g+r client.pem
Nov 23 01:53:41 rocky8.mylab.io sh[14741]: cp client.pem '[email '.pem
Nov 23 01:53:42 rocky8.mylab.io systemd[1]: Started FreeRADIUS high performance RADIUS server..

Dacă aveți serviciul Firewalld activ, permiteți traficul radius și http1812 și 1813.

sudo firewall-cmd --add-service=radius --permanent
sudo firewall-cmd --reload

Pasul 5: Configurarea FreeRADIUS

Pentru a configura FreeRADIUS să folosească MariaDB, urmați pașii de mai jos.

1 – Importați schema bazei de date Radius pentru a popula baza de date radius

sudo su -
mysql -u root -p radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql

2 – Configurare Radius

Mai întâi trebuie să creezi un link simbolic pentru SQL în /etc/raddb/mods-enabled

sudo ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/

Configurează modulul SQL /raddb/mods-available/sql și schimbă parametrii de conectare la baza de date pentru a se potrivi cu mediul tău:

sudo vi /etc/raddb/mods-available/sql
  • Secțiunea sql ar trebui să arate similar cu cea de mai jos.
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"

Comentează setările SSL MySQL.

 mysql {
                # If any of the files below are set, TLS encryption is enabled
#               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
#               }

Apoi schimbă dreptul de grup al /etc/raddb/mods-enabled/sql în radiusd:

sudo chgrp -h radiusd /etc/raddb/mods-enabled/sql

Reporniți serviciul radiusd

sudo systemctl restart radiusd

Pasul 6: Instalează și configurează Daloradius (Opțional)

Poți folosi Daloradius pentru a gestiona serverul radius printr-o interfață web. Aceasta este o configurație opțională pe care o poți selecta în funcție de cazul tău de utilizare.

Descarcă codul daloradius de pe Github.

sudo yum -y install git vim
git clone https://github.com/lirantal/daloradius.git

Importați tabelele MySQL Daloradius

mysql -u root -p radius < daloradius/contrib/db/fr3-mariadb-freeradius.sql
mysql -u root -p radius < daloradius/contrib/db/mariadb-daloradius.sql

Mută folderul daloradius în calea /var/www/html

sudo mv daloradius /var/www/

Apoi schimbă permisiunile pentru folderul http și setează permisiunile corecte pentru fișierul de configurare daloradius.

cd /var/www/daloradius/app/common/includes/
sudo cp daloradius.conf.php.sample daloradius.conf.php
sudo chown -R apache:apache /var/www/daloradius/

Ar trebui să modificați acum fișierul daloradius.conf.php pentru a ajusta informațiile bazei de date MySQL.

sudo vim daloradius.conf.php

Setați numele bazei de date, utilizatorul și parola pentru conectare.

$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';

Pentru a fi sigur că totul funcționează, reporniți serviciile radiusd și httpd.

sudo systemctl restart radiusd.service httpd
systemctl status radiusd.service httpd

Nu ar trebui să existe nicio eroare în ieșirea stării serviciului:

Creează directoarele suplimentare necesare.

cd /var/www/daloradius/
sudo mkdir -p var/{log,backup}
sudo chown -R apache:apache var

Instalează modulele PHP de mai jos.

sudo pear install DB
sudo pear install MDB2

Configurează serverul web Apache

Configurează Apache să asculte pe portul 80 și pe portul 8000

$ sudo vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 8000

Configurează gazda virtuală pentru modulul operatori:

sudo tee /etc/httpd/conf.d/operators.conf<<EOF
<VirtualHost *:8000>
    ServerAdmin operators@localhost
    DocumentRoot /var/www/daloradius/app/operators

    <Directory /var/www/daloradius/app/operators>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Directory /var/www/daloradius>
        Require all denied
    </Directory>

    ErrorLog /var/log/httpd/daloradius/operators/error.log
    CustomLog /var/log/httpd/daloradius/operators/access.log combined
</VirtualHost>
EOF

Următorul pas este să creăm un host virtual pentru utilizatori:

sudo tee /etc/httpd/conf.d/users.conf<<EOF
<VirtualHost *:80>
    ServerAdmin users@localhost
    DocumentRoot /var/www/daloradius/app/users

    <Directory /var/www/daloradius/app/users>
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Directory /var/www/daloradius>
        Require all denied
    </Directory>

    ErrorLog /var/log/httpd/daloradius/users/error.log
    CustomLog /var/log/httpd/daloradius/users/access.log combined
</VirtualHost>
EOF

Creează directoare care vor stoca fișierele de jurnal.

sudo mkdir -p /var/log/httpd/daloradius/{operators,users}

Dezactivați pagina de întâmpinare implicită a serverului web Apache.

sudo rm /etc/httpd/conf.d/welcome.conf

Dacă ai SELinux activ, etichetează directoarele corespunzător.

sudo yum -y install policycoreutils-python-utils
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/daloradius(/.*)?"
sudo restorecon -Rv /var/www/daloradius

Dacă SELinux este activat, adaugă eticheta pentru portul 8000 pentru utilizare de către httpd.

sudo semanage port -m -t http_port_t -p tcp 8000

Verifică dacă a fost aplicat corect.

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      8000, 80, 81, 443, 488, 8008, 8009, 8443, 9000

Permite accesul la porturi din firewall.

sudo firewall-cmd --add-service={http,https,radius} --permanent
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Reporniți serviciile pentru a vă asigura că totul funcționează.

sudo systemctl restart httpd radiusd.service

Starea serviciilor dvs. poate fi verificată folosind systemctl:

systemctl status httpd radiusd

Accesează acum daloradius folosind URL-urile de mai jos.

  • Aplicație de gestionare RADIUS: http://<ip>:8000/
  • Aplicația portalului utilizatorului RADIUS: http://<ip>

Exemplu de interfață a portalului pentru aplicația de gestionare RADIUS.

Detaliile implicite pentru conectare sunt:

Username: administrator
Password: radius

Aspectul interfeței de administrare daloRADIUS:

Bucură-te de utilizarea FreeRADIUS și daloRADIUS:

  • Instalează FreeRADIUS și daloRADIUS pe Ubuntu