Rocky/Alma/CentOS 9|8 üzerinde FreeRADIUS ve Daloradius Kurulumu


CentOS 8/RHEL 8 üzerine FreeRADIUS ve Daloradius kurmak istiyorum. RADIUS, açılımı ile “Uzak Kimlik Doğrulama Çevirici Kullanıcı Servisi” olan bir ağ protokolüdür ve uzaktan kullanıcı kimlik doğrulama ve muhasebe için kullanılır. Yetkilendirme, Kimlik Doğrulama ve Muhasebe olmak üzere AAA servisleri sağlar.

FreeRADIUS, açık kaynaklı, yüksek performanslı, ölçeklenebilir, modüler ve özellik açısından zengin bir RADIUS sunucusudur. FreeRADIUS, istek vekilliği, yedekleme ve yük dengeleme desteğine sahip olup, çeşitli veritabanı arka uçlarına erişim sağlar.

FreeRADIUS'in Öne Çıkan Özellikleri

  • Kullanıcı yapılandırmalarını seçmek için geniş bir yöntem yelpazesiyle esnek yapılandırma.
  • RFC 2865 ve RFC 2866 öznitelikleri için tam destek.
  • EAP-MD5, EAP-SIM, EAP-TLS, EAP-TTLS, EAP-PEAP ve Cisco LEAP EAP alt türleriyle EAP
  • Vendor Neredeyse yüz farklı satıcıya özgü özellikler, bunlar arasında BinTec, Foundry, Cisco, Juniper, Lucent/Ascend, HP ProCurve, Microsoft, USR/3Com, Acc/Newbridge ve daha birçokları bulunmaktadır.

daloRADIUS'ı işin içine katmak

daloRADIUS, PHP ve JavaScript ile yazılmış gelişmiş bir RADIUS web yönetim platformudur. Genellikle Hotspot'ları ve FreeRADIUS sunucusu ile çalışan genel amaçlı ISS dağıtımlarını yönetmek için tasarlanmıştır. Aşağıda daloRADIUS'un temel özellikleri bulunmaktadır:

  • Birçok veritabanı sistemini destekleyen veritabanı soyutlama katmanı – MySQL, SQLite, PostgreSQL, MsSQL ve Oracle
  • Gelişmiş kullanıcı yönetimi
  • Güçlü grafiksel raporlama ve muhasebe
  • Coğrafi konum için Google Haritalar ile entegre olur
  • Faturalama motoruna sahiptir

FreeRADIUS ve daloRADIUS'u CentOS 8/RHEL 8 Linux sistemine kurmak için tartışılan sonraki adımları izleyin.

Adım 1: Sunucunuzu Güncelleyin

Güncellenmeyen bir sisteme asla güvenmeyin. Yüklü tüm paketler, terminalde aşağıdaki komut çalıştırılarak güncellenebilir.

sudo dnf -y update

Adım 2: Apache ve PHP'yi Yükleyin

daloRADIUS'ı sisteminizde barındırmak için Apache httpd sunucusunu kullanacağız. Aşağıdaki komut ile hem httpd hem de PHP paketlerini yükleyin.

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

Kurulumun başarılı olup olmadığını doğrulamak için yüklü PHP sürümünü kontrol edin.

$ 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

Apache web sunucusunu kurun:

sudo dnf -y install @httpd

php-fpm ve httpd servislerini başlatın ve etkinleştirin.

sudo systemctl enable --now httpd php-fpm

İki servisin durumunu kontrol ederek başlangıcı doğrulayalım.

systemctl status httpd php-fpm

Güvenlik duvarında http ve https portlarına izin verin.

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

Apache httpd kurulumu için referans:

  • RHEL/CentOS 8 üzerine Apache httpd sunucusunu kurun

Adım 3: MariaDB'yi Kur ve Yapılandır

RHEL/CentOS 8 üzerine MariaDB veritabanı sunucusunun kurulumu ile ilgili ayrı bir kılavuzumuz bulunmaktadır. Aşağıdaki bağlantıyı kullanarak ona başvurabilirsiniz.

  • CentOS/RHEL 8 Üzerine MariaDB Veri Tabanı Sunucusu Kurulumu

Kurulumdan sonra, mysql konsoluna root kullanıcısı olarak giriş yapın ve FreeRADIUS/daloRADIUS için bir veritabanı/kullanıcı oluşturun.

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

Adım 4: FreeRADIUS Kurulumu

FreeRADIUS paketleri modüler depoda mevcuttur.

$ 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

Kurmak için, sadece komutu çalıştırın.

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

Kurulumdan sonra servisi başlatın.

sudo systemctl enable --now radiusd.service

Şimdi durumu kontrol edebilirsiniz:

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

Eğer Firewalld servisi çalışıyorsa, radius ve http trafiğine içeri ve dışarı izin verin. Radius sunucusu udp portlarını 1812 ve 1813 kullanır.

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

Adım 5: FreeRADIUS'ı Yapılandırın

FreeRADIUS'ı MariaDB kullanacak şekilde yapılandırmak için aşağıdaki adımları izleyin.

1 – Radius veritabanını doldurmak için Radius veritabanı şemasını içe aktarın

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

2 – Radius'ı Yapılandır

Öncelikle /etc/raddb/mods-enabled altında SQL için bir yumuşak bağlantı oluşturmanız gerekiyor.

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

SQL modülünü /raddb/mods-available/sql yapılandırın ve veritabanı bağlantı parametrelerini ortamınıza uygun şekilde değiştirin:

sudo vi /etc/raddb/mods-available/sql
  • sql bölümü aşağıdakine benzer olmalıdır.
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"

MySQL SSL ayarlarını yorumlayın.

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

Sonra /etc/raddb/mods-enabled/sql dosyasının grup hakkını radiusd olarak değiştirin:

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

radiusd servisini yeniden başlat

sudo systemctl restart radiusd

Adım 6: Daloradius'u Yükleyin ve Yapılandırın (İsteğe Bağlı)

Daloradius'ı web arayüzü üzerinden radius sunucusunu yönetmek için kullanabilirsiniz. Bu, kullanım durumunuza bağlı olarak seçebileceğiniz isteğe bağlı bir yapılandırmadır.

Daloradius kodunu Github'dan indir.

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

Daloradius MySQL tablolarını içe aktar

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

Daloradius klasörünü /var/www/html yoluna taşıyın

sudo mv daloradius /var/www/

Sonra http klasörünün izinlerini değiştirin ve daloradius yapılandırma dosyası için doğru izinleri ayarlayın.

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

Artık MySQL veritabanı bilgilerini ayarlamak için daloradius.conf.php dosyasını değiştirmeniz gerekiyor.

sudo vim daloradius.conf.php

Bağlantı için veritabanı adını, kullanıcıyı ve şifreyi ayarlayın.

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

Her şeyin doğru çalıştığından emin olmak için radiusd ve httpd servislerini yeniden başlatın.

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

Hizmet durumu çıktısında hiçbir hata olmamalıdır:

Gerekli ek dizinleri oluşturun.

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

Aşağıdaki PHP modüllerini yükleyin.

sudo pear install DB
sudo pear install MDB2

Apache web sunucusunu yapılandır

Apache'i 80 ve 8000 portlarında dinleyecek şekilde yapılandırın

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

Operatörler modülü için sanal sunucu yapılandırın:

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

Sonraki adımda kullanıcılar için sanal sunucu oluşturuyoruz:

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

Günlük dosyalarını saklayacak dizinler oluşturun.

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

Varsayılan Apache web sunucusu karşılama sayfasını devre dışı bırak.

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

Eğer SELinux aktifse, dizinleri buna göre etiketleyin.

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

Eğer SELinux etkinse, httpd tarafından kullanılması için 8000 numaralı porta etiketi ekleyin.

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

Doğru bir şekilde uygulanıp uygulanmadığını kontrol edin.

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

Güvenlik duvarından portlara erişime izin ver.

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

Her şeyin düzgün çalıştığından emin olmak için servisleri yeniden başlatın.

sudo systemctl restart httpd radiusd.service

Hizmetlerinizin durumu systemctl kullanılarak kontrol edilebilir:

systemctl status httpd radiusd

Şimdi aşağıdaki URL'lerle Daloradius'a erişin.

  • RADIUS yönetim uygulaması: http://<ip>:8000/
  • RADIUS kullanıcı portalı uygulaması: http://<ip>

RADIUS yönetim uygulaması portal arayüzü örneği.

Varsayılan giriş bilgileri şunlardır:

Username: administrator
Password: radius

daloRADIUS yönetim arayüzü görünümü:

FreeRADIUS ve daloRADIUS kullanmanın keyfini çıkarın:

  • Ubuntu'ya FreeRADIUS ve daloRADIUS Kurulumu