Pasang FreeRADIUS dan Daloradius pada Rocky/Alma/CentOS 9|8


Saya ingin memasang FreeRADIUS dan Daloradius di CentOS 8/RHEL 8?. RADIUS, yang merupakan singkatan bagi "Remote Authentication Dial-In User Service", adalah protokol rangkaian yang digunakan untuk pengesahan pengguna jauh dan perakaunan. Ia menyediakan perkhidmatan AAA; iaitu Authorisasi, Pengesahan, dan Perakaunan.

FreeRADIUS adalah pelayan RADIUS sumber terbuka yang berprestasi tinggi, boleh skala, modular dan kaya dengan ciri. FreeRADIUS menyokong proksi permintaan, pemulihan automatik dan pengimbangan beban, serta akses kepada pelbagai pangkalan data backend.

Ciri-ciri Utama FreeRADIUS

  • Konfigurasi Fleksibel melalui pelbagai kaedah untuk memilih konfigurasi pengguna.
  • Sokongan penuh untuk atribut RFC 2865 dan RFC 2866.
  • EAP dengan sub-jenis EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP, dan Cisco LEAP
  • Atribut Khusus Vendor untuk hampir seratus vendor, termasuk BinTec, Foundry, Cisco, Juniper, Lucent/Ascend, HP ProCurve, Microsoft, USR/3Com, Acc/Newbridge dan banyak lagi.

Membawa daloRADIUS ke dalam campuran

daloRADIUS adalah platform pengurusan web RADIUS yang canggih yang ditulis dalam PHP dan JavaScript. Ia terutamanya bertujuan untuk mengurus Hotspot dan pengembangan ISP untuk kegunaan umum yang dikuasakan oleh pelayan FreeRADIUS. Berikut adalah ciri-ciri utama daloRADIUS:

  • Lapisan abstraksi pangkalan data dengan sokongan untuk pelbagai sistem pangkalan data – MySQL, SQLite, PostgreSQL, MsSQL dan Oracle
  • Pengurusan pengguna lanjutan
  • Laporan grafik dan perakaunan yang berkuasa
  • Boleh diintegrasikan dengan GoogleMaps untuk lokasi geografi
  • Mempunyai enjin pengebilan

Ikuti langkah-langkah berikut yang dibincangkan untuk memasang FreeRADIUS dan daloRADIUS pada sistem Linux CentOS 8/RHEL 8.

Langkah 1: Kemas kini Pelayan anda

Jangan sesekali mempercayai sistem yang tidak dikemas kini. Semua pakej yang dipasang boleh dikemas kini dengan melaksanakan arahan di bawah dalam terminal.

sudo dnf -y update

Langkah 2: Pasang Apache dan PHP

Kami akan menggunakan pelayan Apache httpd untuk menghos daloRADIUS pada sistem anda. Pasang kedua-dua pakej httpd dan PHP dengan arahan berikut.

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

Periksa versi PHP yang dipasang untuk mengesahkan bahawa pemasangan berjaya.

$ 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

Pasang pelayan web apache:

sudo dnf -y install @httpd

Mulakan dan aktifkan perkhidmatan php-fpm dan httpd.

sudo systemctl enable --now httpd php-fpm

Mari kita sahkan permulaan dengan memeriksa status kedua-dua perkhidmatan itu.

systemctl status httpd php-fpm

Benarkan port http dan https pada firewall.

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

Rujukan untuk pemasangan Apache httpd:

  • Pasang pelayan Apache httpd pada RHEL/CentOS 8

Langkah 3: Pasang dan Konfigurasikan MariaDB

Kami mempunyai panduan berasingan mengenai pemasangan pelayan pangkalan data MariaDB pada RHEL/CentOS 8. Rujuk ia menggunakan pautan di bawah.

  • Pasang Pelayan Pangkalan Data MariaDB pada CentOS/RHEL 8

Selepas pemasangan, akses konsol MySQL sebagai pengguna root dan cipta pangkalan data/pengguna untuk FreeRADIUS/daloRADIUS.

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

Langkah 4: Memasang FreeRADIUS

Pakej FreeRADIUS tersedia dalam repositori 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

Untuk memasang, hanya jalankan arahan tersebut.

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

Mulakan perkhidmatan selepas pemasangan.

sudo systemctl enable --now radiusd.service

Sekarang anda boleh menyemak status:

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

Jika anda mempunyai perkhidmatan Firewalld yang berjalan, benarkan trafik radius dan http masuk dan keluar. Pelayan Radius menggunakan port udp 1812 dan 1813.

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

Langkah 5: Konfigurasi FreeRADIUS

Untuk Mengkonfigurasi FreeRADIUS supaya menggunakan MariaDB, ikut langkah-langkah di bawah.

1 – Import skema pangkalan data Radius untuk mengisi pangkalan data radius

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

2 – Konfigurasikan Radius

Pertama, anda perlu membuat pautan lembut untuk SQL di bawah /etc/raddb/mods-enabled

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

Konfigurasikan modul SQL /raddb/mods-available/sql dan ubah parameter sambungan pangkalan data supaya sesuai dengan persekitaran anda:

sudo vi /etc/raddb/mods-available/sql
  • Bahagian sql sepatutnya kelihatan serupa seperti di bawah.
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"

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

Kemudian tukar hak kumpulan /etc/raddb/mods-enabled/sql kepada radiusd:

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

Mulakan semula perkhidmatan radiusd

sudo systemctl restart radiusd

Langkah 6: Pasang dan Konfigurasikan Daloradius (Pilihan)

Anda boleh menggunakan Daloradius untuk menguruskan pelayan radius melalui antara muka web. Ini adalah konfigurasi pilihan yang boleh anda pilih bergantung pada kes penggunaan anda.

Muat turun kod daloradius dari Github.

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

Import jadual 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

Pindahkan folder daloradius ke laluan di /var/www/html

sudo mv daloradius /var/www/

Kemudian ubah kebenaran untuk folder http dan tetapkan kebenaran yang betul untuk fail konfigurasi 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/

Anda kini harus mengubah suai fail daloradius.conf.php untuk menyesuaikan maklumat pangkalan data MySQL.

sudo vim daloradius.conf.php

Tetapkan nama pangkalan data, pengguna dan kata laluan untuk sambungan.

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

Untuk memastikan semuanya berfungsi, mulakan semula perkhidmatan radiusd dan httpd.

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

Tiada sebarang ralat sepatutnya dalam output status perkhidmatan:

Cipta direktori tambahan yang diperlukan.

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

Pasang modul PHP di bawah.

sudo pear install DB
sudo pear install MDB2

Konfigurasikan pelayan web Apache

Konfigurasikan Apache untuk mendengar pada port 80 dan port 8000

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

Konfigurasikan hos maya untuk modul pengendali:

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

Seterusnya kita membuat hos maya untuk pengguna:

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

Buat direktori yang akan menyimpan fail log.

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

Lumpuhkan halaman sambutan pelayan web Apache lalai.

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

Jika anda mempunyai SELinux aktif, labelkan direktori dengan sewajarnya.

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

Jika SELinux sedang menguatkuasakan, tambahkan label pada port 8000 untuk digunakan oleh httpd.

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

Periksa jika telah digunakan dengan betul.

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

Benarkan akses pelabuhan dari firewall.

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

Mulakan semula perkhidmatan untuk memastikan semuanya berfungsi.

sudo systemctl restart httpd radiusd.service

Status perkhidmatan anda boleh diperiksa menggunakan systemctl:

systemctl status httpd radiusd

Sekarang akses daloradius dengan URL di bawah.

  • Aplikasi pengurusan RADIUS: http://<ip>:8000/
  • Aplikasi portal pengguna RADIUS: http://<ip>

Contoh antara muka portal aplikasi pengurusan RADIUS.

Maklumat log masuk lalai ialah:

Username: administrator
Password: radius

Paparan antaramuka pengurusan daloRADIUS:

Nikmati penggunaan FreeRADIUS dan daloRADIUS:

  • Pasang FreeRADIUS & daloRADIUS di Ubuntu