Install FreeRADIUS & DaloRADIUS di Ubuntu 22.04

Install LAMP Stack

Cara penginstalan LAMP bisa dilihat Disini

Izinkan koneksi WWW (Apache)

sudo ufw allow WWW

Mungkin dibeberapa kasus perintah tersebut tidak bekerja. Alternatifnya adalah

sudo ufw allow Apache

Install Dan Konfigurasi FreeRADIUS

sudo apt install freeradius freeradius-mysql freeradius-utils

Tes FreeRADIUS

Tes konfigurasi default FreeRADIUS apakah ada kesalahan dan sudah bisa menerima koneksi.

Hentikan dulu service FreeRADIUS karena tidak dapat menjalankan 2 instance layanan secara bersamaan.

sudo systemctl stop freeradius

Jalankan mode FreeRADIUS Debuging.

sudo freeradius -X

Jika freeradius sudah bekerja dengan baik hasil output akhirnya adalah:

Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 59023
Listening on proxy address :: port 54620
Ready to process requests

Hentikan mode Debuging dengan menekan Ctrl+C

Jalankan dan aktifkan service FreeRADIUS agar berjalan pada saat boot sistem.

sudo systemctl enable --now freeradius

Izinkan Firewall koneksi FreeRADIUS

sudo ufw allow to any port 1812 proto udp
sudo ufw allow to any port 1813 proto udp

Konfigurasi Database

Login kedalam MariaDB/MySQL

sudo mysql -u root -p

Dalam kasus ini saya akan membuat database sebagai berikut:
Database: radius
User: radius
Password: 123456

Buat database

create database radius;

Buat user

create user 'radius'@'localhost' identified by '123456';

Berikan akses user untuk mengelola database

grant all privileges on radius.* to 'radius'@'localhost';

Flush!!

flush privileges;

Keluar

quit;

Mengisi database dengan skema MySQL RADIUS.

Login sebagai root

sudo su

Import database schema

mysql -u root -p radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

Beralih kembali ke akun non-root

exit

Cek tabel database radius, apakah schema sudah berhasil di import atau belum.

sudo mysql -u root -p
use radius;
show tables;

Atau bisa juga mengecek dengan perintah:

sudo mysql -u root -p -e "use radius;show tables;"

Output akhir jika berhasil:

MariaDB [radius]> show tables;
+------------------+
| Tables_in_radius |
+------------------+
| nas              |
| radacct          |
| radcheck         |
| radgroupcheck    |
| radgroupreply    |
| radpostauth      |
| radreply         |
| radusergroup     |
+------------------+
8 rows in set (0.000 sec)

Buat symbolic link modul sql ke /etc/freeradius/3.0/mods-enabled

sudo ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/

Install pengedit text nano

sudo apt install nano

Edit file /etc/freeradius/3.0/mods-enabled/sql

sudo nano /etc/freeradius/3.0/mods-enabled/sql

Ubah parameter

1. dialect = "sqlite" menjadi dialect = "mysql"

2. driver = "rlm_sql_null" menjadi driver = "rlm_sql_${dialect}"

3. Jika kita menggunakan MySQL, konfigurasi FreeRADIUS mengasumsikan penggunaan sertifikat TLS secara default. Untuk tujuan tutorial ini, kami tidak akan menggunakan sertifikat TLS, jadi kami akan mengomentari bagian MySQL TLS, dengan menambahkan tanda # di awal setiap baris di bagian tls. Bagian TLS terlihat seperti ini :

        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
                }

                # If yes, (or auto and libmysqlclient reports warnings are
                # available), will retrieve and log additional warnings from
                # the server if an error has occured. Defaults to 'auto'
                warnings = auto
        }

Beri tanda # sehingga menjadi seperti ini:

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

                # If yes, (or auto and libmysqlclient reports warnings are
                # available), will retrieve and log additional warnings from
                # the server if an error has occured. Defaults to 'auto'
                warnings = auto
        }

4. Hilangkan tanda # pada parameter :
server
port
login
password
Lalu isikan value sesuai dengan user dan password pada saat membuat database

Yang awalnya seperti ini:

#       server = "localhost"
#       port = 3306
#       login = "radius"
#       password = "radpass"

Ubah menjadi seperti ini:

        server = "localhost"
        port = 3306
        login = "radius"
        password = "123456"

5. Sesuaikan value dari parameter radius_db sesuai dengan nama database yang telah kita buat.

radius_db = "radius"

Karena by default value nya radius maka saya lewati

6. Lebih jauh ke bawah kami akan menghapus komentar/# pada baris yang berisi read_clients = yes. Ini untuk mengaktifkan FreeRADIUS untuk membaca klien dari database. Berikut tampilannya:

Dari seperti ini:

#       read_clients = yes

Menjadi seperti ini:

       read_clients = yes

7. Beberapa baris dibawahnya, kami ingin client_table = "nas" tidak diberi komentar/#. Seharusnya tidak diberi komentar secara default, tetapi cukup periksa untuk memastikan tampilannya seperti ini:

        client_table = "nas"

Sekarang ubah hak/kepemilikan grup dari file yang baru saja kita edit.

sudo chgrp -h freerad /etc/freeradius/3.0/mods-available/sql
sudo chown -R freerad:freerad /etc/freeradius/3.0/mods-enabled/sql

Restart service FreeRADIUS

sudo systemctl restart freeradius.service

Karena kami telah melakukan beberapa pengeditan, kami harus menjalankan FreeRADIUS dalam mode debug sehingga kami tahu jika kami melakukan kesalahan, sebelum melangkah lebih jauh.
Hentikan dulu layanan FreeRADIUS karena kami tidak dapat menjalankan 2 instance layanan secara bersamaan.

sudo systemctl stop freeradius.service

Dan mode debuging FreeRADIUS.

sudo freeradius -X

Output akhir jika tidak ada kesalahan dalam konfigurasi:

Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on proxy address * port 41706
Listening on proxy address :: port 42314
Ready to process requests

Keluar dari mode debug dengan menekan Ctrl+C

Jalankan kembali service FreeRADIUS dengan perintah:

sudo systemctl start freeradius.service

Sekarang FreeRADIUS Berhasil di install di Ubuntu 22.04/20.04, dan dikonfigurasi MySQL atau MariaDB juga berhasil.

Selanjutnya kita akan install daloRADIUS, yaitu control panel berbasis web untuk mengatur server FreeRADIUS kita. Langkah ini opsional, bagi mereka yang menginginkan GUI untuk server FreeRADIUS mereka.

Install & Konfigurasi daloRADIUS (FreeRADIUS GUI) 

daloRADIUS adalah panel manajemen web RADIUS yang populer, yang menawarkan manajemen pengguna, pelaporan grafis, akuntansi, mesin penagihan, terintegrasi dengan GoogleMaps, dan banyak lagi. Ini adalah salah satu solusi paling populer jika Anda membutuhkan GUI FreeRADIUS.

Pertama kita akan mengunduh daloRADIUS dari repositori Github

Saya akan menggunakan wget untuk mendownloadnya, jadi saya harus menginstalnya karena tidak terinstal secara default, dan unzip karena kita akan mendownload file .zip

sudo apt install wget unzip

Download DaloRADIUS

wget https://github.com/lirantal/daloradius/archive/master.zip

Ekstrak file

unzip master.zip

Pindah ke direktori DaloRADIUS

cd daloradius-master

Isi database dengan skema daloRADIUS.

sudo mysql -u root -p radius < contrib/db/fr2-mysql-daloradius-and-freeradius.sql
sudo mysql -u root -p radius < contrib/db/mysql-daloradius.sql

Keluar 1 langkah dari direktori daloradius.

cd ..

Pindahkan direktori daloradius ke direktori /var/www/html/

sudo mv daloradius-master /var/www/html/daloradius

Selanjutnya kita akan mengubah pemilik dan grup untuk folder daloradius menjadi www-data:www-data, yang merupakan pengguna dan grup tempat Server Web Apache berjalan.

sudo chown -R www-data:www-data /var/www/html/daloradius/

Sekarang kita perlu membuat file konfigurasi daloRADIUS. Saat ini kami hanya menyediakan file sampel, jadi kami akan membuat salinan dari file sampel tersebut:

sudo cp /var/www/html/daloradius/library/daloradius.conf.php.sample /var/www/html/daloradius/library/daloradius.conf.php

Ubah izin untuk file konfigurasi daloRADIUS.

sudo chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

Selanjutnya kita edit beberapa variabel di file koneksi daloRADIUS, agar bisa terkoneksi ke database FreeRADIUS.

Buka file konfigurasi menggunakan editor favorit Kamu.

sudo nano /var/www/html/daloradius/library/daloradius.conf.php

Mirip dengan apa yang telah kita lakukan sebelumnya, saat mengedit file konfigurasi FreeRADIUS, kita perlu menyesuaikan variabel untuk pengguna database, kata sandinya, dan nama database.

Ini adalah tampilan awalnya di file konfigurasi daloRADIUS:

$configValues['CONFIG_DB_USER'] = 'root';
$configValues['CONFIG_DB_PASS'] = '';
$configValues['CONFIG_DB_NAME'] = 'radius';

Ubah menjadi seperti ini:

$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = '123456';
$configValues['CONFIG_DB_NAME'] = 'radius';

Lihat apakah ada kesalahan konfigurasi

sudo systemctl stop freeradius
sudo freeradius -X

Jika tidak ada kesalahan Ctrl+C untuk berhenti debugging

Jalankan kembali freeradius

systemctl start freeradius

Terakhir restart FreeRADIUS dan Apache untuk memastikan semuanya berfungsi.

sudo systemctl restart freeradius.service apache2

Mengakses DaloRADIUS

Kamu dapat mengakses daloRADIUS melalui browser web dengan mengunjungi:
http://server_ip_address/daloradius
Pastikan protokol yang digunakan http:// dan browser Kamu tidak secara otomatis mengubahnya menjadi https:// karena Anda mungkin tidak dapat mengakses daloRADIUS karena kami belum mengonfigurasinya untuk menggunakan SSL.
Halaman awal daloRADIUS terlihat seperti ini:

Default daloRADIUS username/password:

username: administrator
password: radius

*UPDATE:

Di versi DaloRADIUS 2.0 Kita tidak bisa lagi menyimpan direktori daloradius dibawah root dokumen, dengan arti kita diwajibkan menginstall DaloRADIUS di dalam direktori root (tanpa subdirektori)

ERROR 404 / NOT FOUND

Solusinya adalah dengan mengubah paramter lokasi root dokumen didalam konfigurasi /etc/apache2/sites-enabled/000-default.conf ke direktori tampat dimana DaloRADIUS di install

sudo nano /etc/apache2/sites-enabled/000-default.conf

Dari awalnya seperti ini:

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

Ubah menjadi seperti ini:

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/daloradius

        <Directory /var/www/html/daloradius>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

Lalu restart service Apache

sudo systemctl restart apache2

Lalu buka kembali halaman we DaloRADIUS menggunakan alamat IP atau domain saja

http://IP-ADDRESS atau http://namadomain.com

Tampilan DaloRADIUS v2.0

Keterangan:

Tested on: Ubuntu 22.04
Sumber/referensi:
https://bytexd.com/freeradius-ubuntu/