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


Saya ingin menginstal FreeRADIUS dan Daloradius di CentOS 8/RHEL 8. RADIUS, yang merupakan singkatan dari "Remote Authentication Dial-In User Service", adalah protokol jaringan yang digunakan untuk otentikasi pengguna jarak jauh dan akuntansi. Ini menyediakan layanan AAA, yaitu Otorisasi, Otentikasi, dan Akuntansi.

FreeRADIUS adalah server RADIUS sumber terbuka yang memiliki kinerja tinggi, dapat diskalakan, modular, dan kaya fitur. FreeRADIUS mendukung proxy permintaan, fail-over dan load balancing, serta akses ke berbagai backend database.

Fitur Utama FreeRADIUS

  • Konfigurasi Fleksibel melalui berbagai metode untuk memilih konfigurasi pengguna.
  • Dukungan penuh untuk atribut RFC 2865 dan RFC 2866.
  • EAP dengan sub-tipe EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP, dan Cisco LEAP EAP
  • 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 manajemen web RADIUS canggih yang ditulis dalam PHP dan JavaScript. Platform ini terutama ditujukan untuk mengelola Hotspot dan penerapan ISP untuk tujuan umum yang didukung oleh server FreeRADIUS. Berikut adalah fitur utama dari daloRADIUS:

  • Lapisan abstraksi database dengan dukungan untuk banyak sistem database – MySQL, SQLite, PostgreSQL, MsSQL, dan Oracle
  • Manajemen pengguna tingkat lanjut
  • Laporan dan akuntansi grafis yang kuat
  • Terintegrasi dengan GoogleMaps untuk lokasi geografis
  • Memiliki mesin penagihan

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

Langkah 1: Perbarui Server Anda

Jangan pernah mempercayai sistem yang tidak diperbarui. Semua paket yang terpasang dapat diperbarui dengan menjalankan perintah di bawah ini di terminal.

sudo dnf -y update

Langkah 2: Instal Apache dan PHP

Kita akan menggunakan server Apache httpd untuk meng-host daloRADIUS di sistem Anda. Instal paket httpd dan PHP dengan perintah 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 terpasang untuk memastikan instalasi berhasil.

$ 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 server web apache:

sudo dnf -y install @httpd

Mulai dan aktifkan layanan php-fpm dan httpd.

sudo systemctl enable --now httpd php-fpm

Mari kita validasi awal dengan memeriksa status kedua layanan.

systemctl status httpd php-fpm

Izinkan port http dan https di firewall.

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

Referensi untuk instalasi Apache httpd:

  • Instal server Apache httpd di RHEL/CentOS 8

Langkah 3: Instal dan Konfigurasi MariaDB

Kami memiliki panduan terpisah tentang instalasi server basis data MariaDB di RHEL/CentOS 8. Silakan merujuknya menggunakan tautan di bawah ini.

  • Instal Server Database MariaDB di CentOS/RHEL 8

Setelah instalasi, akses console MySQL sebagai pengguna root dan buat database/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: Menginstal FreeRADIUS

Paket FreeRADIUS tersedia di 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 menginstal, cukup jalankan perintahnya.

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

Mulai layanan setelah instalasi.

sudo systemctl enable --now radiusd.service

Sekarang Anda bisa memeriksa statusnya:

$ 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 layanan Firewalld berjalan, izinkan lalu lintas radius dan http masuk dan keluar. Server Radius menggunakan port udp 1812 dan 1813.

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

Langkah 5: Konfigurasi FreeRADIUS

Untuk Mengonfigurasi FreeRADIUS agar menggunakan MariaDB, ikuti langkah-langkah di bawah ini.

1 – Impor skema database Radius untuk mengisi database radius

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

2 – Konfigurasikan Radius

Pertama, Anda harus membuat tautan simbolis untuk SQL di /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 koneksi database sesuai dengan lingkungan Anda:

sudo vi /etc/raddb/mods-available/sql
  • Bagian sql seharusnya terlihat mirip dengan berikut.
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"

Komentari pengaturan 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 ubah hak akses grup dari /etc/raddb/mods-enabled/sql menjadi radiusd:

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

Mulai ulang layanan radiusd

sudo systemctl restart radiusd

Langkah 6: Instal dan Konfigurasi Daloradius (Opsional)

Anda dapat menggunakan Daloradius untuk mengelola server radius melalui antarmuka web. Ini adalah konfigurasi opsional yang dapat Anda pilih tergantung pada kebutuhan Anda.

Unduh kode daloradius dari Github.

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

Impor tabel 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 jalur di /var/www/html

sudo mv daloradius /var/www/

Kemudian ubah izin untuk folder http dan atur izin yang sesuai untuk file 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/

Sekarang Anda harus memodifikasi file daloradius.conf.php untuk menyesuaikan informasi database MySQL.

sudo vim daloradius.conf.php

Tentukan nama database, pengguna, dan kata sandi untuk koneksi.

$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 berjalan dengan baik, restart layanan radiusd dan httpd.

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

Seharusnya tidak ada kesalahan dalam output status layanan:

Buat 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 ini.

sudo pear install DB
sudo pear install MDB2

Konfigurasikan server web Apache

Konfigurasikan Apache untuk mendengarkan di port 80 dan port 8000

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

Konfigurasikan host virtual untuk modul operator:

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

Selanjutnya kita membuat host virtual 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 file log.

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

Nonaktifkan halaman sambutan default server web Apache.

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

Jika Anda memiliki SELinux aktif, beri label direktori sesuai.

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 menegakkan, tambahkan label ke port 8000 untuk digunakan oleh httpd.

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

Periksa apakah sudah diterapkan dengan benar.

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

Izinkan akses port dari firewall.

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

Mulai ulang layanan untuk memastikan semuanya berfungsi dengan baik.

sudo systemctl restart httpd radiusd.service

Status layanan Anda dapat diperiksa menggunakan systemctl:

systemctl status httpd radiusd

Sekarang akses daloradius dengan URL di bawah ini.

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

Contoh antarmuka portal aplikasi manajemen RADIUS.

Detail login default adalah:

Username: administrator
Password: radius

Tampilan antarmuka manajemen daloRADIUS:

Nikmati menggunakan FreeRADIUS dan daloRADIUS:

  • Instal FreeRADIUS & daloRADIUS di Ubuntu