Zoeken op website

Installeer FreeRADIUS en Daloradius op Rocky/Alma/CentOS 9|8


Ik wil FreeRADIUS en Daloradius installeren op CentOS 8/RHEL 8. RADIUS, wat staat voor "Remote Authentication Dial-In User Service", is een netwerkprotocol dat wordt gebruikt voor externe gebruikersauthenticatie en -boekhouding. Het biedt AAA-diensten, namelijk Autorisatie, Authenticatie en Boekhouding.

FreeRADIUS is een open source, hoogpresterende, schaalbare, modulaire en functionaliteitsrijke RADIUS-server. FreeRADIUS ondersteunt request proxy, fail-over en load balancing, evenals toegang tot verschillende databasetypen.

Belangrijkste functies van FreeRADIUS

  • Flexibele configuratie via een breed scala aan methoden om gebruikersconfiguraties te selecteren.
  • Volledige ondersteuning voor RFC 2865- en RFC 2866-attributen.
  • EAP met de EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP en Cisco LEAP EAP-subtypen
  • Specifieke attributen voor bijna honderd leveranciers, waaronder BinTec, Foundry, Cisco, Juniper, Lucent/Ascend, HP ProCurve, Microsoft, USR/3Com, Acc/Newbridge en nog veel meer.

daloRADIUS erbij betrekken

daloRADIUS is een geavanceerd RADIUS-webbeheersplatform geschreven in PHP en JavaScript. Het is voornamelijk bedoeld voor het beheren van hotspots en algemeen gebruikte ISP-implementaties die worden aangestuurd door de FreeRADIUS-server. Hieronder vindt u de belangrijkste kenmerken van daloRADIUS:

  • Database-abstractielaag met ondersteuning voor veel databasesystemen – MySQL, SQLite, PostgreSQL, MsSQL en Oracle
  • Geavanceerd gebruikersbeheer
  • Krachtige grafische rapportage en boekhouding
  • Integreert met Google Maps voor geolocatie
  • Heeft een factureringsengine

Volg de volgende besproken stappen om FreeRADIUS en daloRADIUS op een CentOS 8/RHEL 8 Linux-systeem te installeren.

Stap 1: Werk uw server bij

Vertrouw nooit een systeem dat niet is bijgewerkt. Alle geïnstalleerde pakketten kunnen worden bijgewerkt door het onderstaande commando in de terminal uit te voeren.

sudo dnf -y update

Stap 2: Installeer Apache en PHP

We zullen de Apache httpd-server gebruiken om daloRADIUS op uw systeem te hosten. Installeer zowel de httpd- als de PHP-pakketten met het volgende commando.

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

Controleer de versie van PHP die is geïnstalleerd om te bevestigen dat de installatie succesvol was.

$ 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

Installeer de Apache-webserver:

sudo dnf -y install @httpd

Start en schakel de php-fpm en httpd services in.

sudo systemctl enable --now httpd php-fpm

Laten we de start valideren door de status van de twee services te controleren.

systemctl status httpd php-fpm

Sta http- en https-poorten toe op de firewall.

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

Referentie voor Apache httpd-installatie:

  • Installeer de Apache httpd-server op RHEL/CentOS 8

Stap 3: Installeer en configureer MariaDB

We hebben een aparte handleiding voor de installatie van de MariaDB-database server op RHEL/CentOS 8. Raadpleeg deze via de onderstaande link.

  • Installeer de MariaDB-database server op CentOS/RHEL 8

Na de installatie, open de MySQL-console als root-gebruiker en maak een database/gebruiker aan voor FreeRADIUS/daloRADIUS.

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

Stap 4: FreeRADIUS installeren

FreeRADIUS-pakketten zijn beschikbaar in de modulaire repository.

$ 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

Om te installeren, voer gewoon het commando uit.

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

Start de service na installatie.

sudo systemctl enable --now radiusd.service

Nu kun je de status controleren:

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

Als je de Firewalld-service laat draaien, sta dan radius- en http-verkeer toe in en uit. De Radius-server gebruikt udp-poorten 1812 en 1813.

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

Stap 5: Configureer FreeRADIUS

Om FreeRADIUS te configureren om MariaDB te gebruiken, volgt u de onderstaande stappen.

1 – Importeer het Radius-databaseschema om de radius-database te vullen

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

2 – Radius configureren

Eerst moet je een symbolische link voor SQL aanmaken onder /etc/raddb/mods-enabled

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

Configureer de SQL-module /raddb/mods-available/sql en wijzig de databaseverbindingparameters zodat ze aansluiten bij uw omgeving:

sudo vi /etc/raddb/mods-available/sql
  • De sql-sectie zou er ongeveer als volgt uit moeten zien.
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"

Commentaar op MySQL SSL-instellingen.

 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
#               }

Wijzig vervolgens de groep van /etc/raddb/mods-enabled/sql naar radiusd:

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

Start de radiusd-service opnieuw

sudo systemctl restart radiusd

Stap 6: Installeer en configureer Daloradius (optioneel)

Je kunt Daloradius gebruiken om de radius-server te beheren via een webinterface. Dit is een optionele configuratie die je kunt kiezen, afhankelijk van je gebruikssituatie.

Download de daloradius-code van Github.

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

Importeer Daloradius MySQL-tabellen

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

Verplaats de daloradius-map naar het pad in /var/www/html

sudo mv daloradius /var/www/

Wijzig vervolgens de machtigingen voor de http-map en stel de juiste machtigingen in voor het daloradius-configuratiebestand.

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

Je moet nu het bestand daloradius.conf.php aanpassen om de MySQL-databasegegevens aan te passen.

sudo vim daloradius.conf.php

Stel de databasenaam, gebruiker en wachtwoord in voor de verbinding.

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

Om te zeker te zijn dat alles werkt, herstart de radiusd- en httpd-diensten.

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

Er mag geen foutmelding zijn in de uitvoer van de servicestatus:

Maak extra vereiste mappen aan.

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

Installeer de onderstaande PHP-modules.

sudo pear install DB
sudo pear install MDB2

Apache-webserver configureren

Configureer Apache zodat het luistert op poort 80 en poort 8000

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

Configureer virtuele host voor de operatorsmodule:

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

Vervolgens maken we een virtuele host voor gebruikers aan:

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

Maak mappen aan waarin logbestanden worden opgeslagen.

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

Schakel de standaard welkomstpagina van de Apache-webserver uit.

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

Als SELinux actief is, label dan de mappen overeenkomstig.

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

Als SELinux actief is, voeg dan een label toe aan poort 8000 voor gebruik door httpd.

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

Controleer of het correct is aangebracht.

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

Sta poorten toe via de firewall.

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

Start de services opnieuw op om te zorgen dat alles werkt.

sudo systemctl restart httpd radiusd.service

De status van uw diensten kan worden gecontroleerd met systemctl:

systemctl status httpd radiusd

Toegang tot daloradius via de onderstaande URL's.

  • RADIUS-beheerapplicatie: http://<ip>:8000/
  • RADIUS-gebruikersportaal applicatie: http://<ip>

Voorbeeld van de portalinterface van een RADIUS-beheerapplicatie.

De standaard inloggegevens zijn:

Username: administrator
Password: radius

daloRADIUS beheerdersinterface uiterlijk:

Veel plezier met het gebruik van FreeRADIUS en daloRADIUS:

  • Installeer FreeRADIUS & daloRADIUS op Ubuntu