Mengkonfigurasi OpenBSD untuk Menggunakan Freeradius Auth dengan MySQL Server
· 2 min read · Label UnixBSDDalam arsitektur jaringan perusahaan modern, jaringan memiliki struktur yang kompleks dan rumit. Banyak perangkat yang terhubung satu sama lain secara bersamaan, sehingga memudahkan bagi pelanggar dan siapa pun yang berniat melanggar hukum. Untuk mengatasi masalah ini, mekanisme untuk merekam informasi subjek dalam jaringan dikembangkan. Server RADIUS yang dapat menyediakan 3 fungsi keamanan: autentikasi, otorisasi, dan akuntansi. Setiap langkah dalam sistem akan dicatat dan semua catatan dan titik masuk akan dipantau.
FreeRADIUS adalah server gratis yang luar biasa dan menyediakan layanan autentikasi dan otorisasi terpusat untuk perangkat termasuk switch, router, gateway VPN, dan titik akses Wi-Fi. Kemampuannya yang unik untuk mengelola akses pengguna ke sumber daya jaringan berdasarkan berbagai parameter seperti identitas, lokasi, karakteristik perangkat, dan waktu, menjadikannya solusi serbaguna untuk jaringan perusahaan, pendidikan, dan penyedia layanan.
Server mendukung beberapa metode autentikasi dan dapat diintegrasikan dengan basis data eksternal seperti SQL, LDAP, dan Kerberos untuk menyimpan dan mengambil informasi pengguna dan perangkat secara efisien. Dengan skalabilitas, fleksibilitas, dan keandalannya, FreeRADIUS tetap menjadi pilihan utama bagi organisasi yang membutuhkan solusi RADIUS yang andal dan dapat disesuaikan.
1. Instalasi dan Konfigurasi FreeRADIUS
a. Update Paket PKG OpenBSD
Sebelum menginstal perangkat lunak apa pun, kita perlu memperbarui indeks dan paket di OpenBSD.Update PKG
ns3# pkg_add -uvi
b. Install Freeradius
Instal paket Freeradius dengan perintah pkg_add.Install Freeradius
ns3# pkg_add freeradius debug-freeradius-mysql freeradius-mysql
c. Ubah/Edit file /etc/raddb/radiusd.conf
Berkas konfigurasi utama Freeradius adalah "radiusd.conf". Sebelum mengonfigurasi berkas lainnya, Anda harus mengedit radiusd.conf terlebih dahulu. Berikut ini adalah contoh skrip radiusd.conf yang lengkap.Script /etc/raddb/radiusd.conf
prefix = /usr/local
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
name = radiusd
confdir = ${raddbdir}
modconfdir = ${confdir}/mods-config
certdir = ${confdir}/certs
cadir = ${confdir}/certs
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
#libdir = /usr/local/lib/freeradius/freeradius
pidfile = ${run_dir}/${name}.pid
max_request_time = 30
cleanup_delay = 5
max_requests = 16384
hostname_lookups = no
log {
destination = files
colourise = yes
file = ${logdir}/radius.log
syslog_facility = daemon
stripped_names = no
auth = no
auth_badpass = no
auth_goodpass = no
msg_denied = "You are already logged in - access denied"
}
checkrad = ${sbindir}/checkrad
ENV {
}
security {
### chroot = /etc/raddb
user = _freeradius
group = _freeradius
allow_core_dumps = no
max_attributes = 200
reject_delay = 1
status_server = yes
allow_vulnerable_openssl = no
}
proxy_requests = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
start_servers = 5
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
auto_limit_acct = no
}
#$INCLUDE trigger.conf
modules {
# $INCLUDE mods-enabled/sql
$INCLUDE mods-enabled/
}
instantiate {
# daily
}
policy {
$INCLUDE policy.d/
}
$INCLUDE sites-enabled/
d. Buat Klient
Sebagai contoh dasar, kita akan membuat klien yang dapat terhubung ke server Freeradius. Dalam contoh ini, kita akan membuat dua klien yang dapat terhubung langsung ke Freeradius:localhost client (127.0.0.1)
pfsense client (192.168.5.3).
Berikut adalah contoh skrip /etc/raddb/clients.conf yang lengkap.
Script /etc/raddb/clients.conf
client localhost {
ipaddr = 127.0.0.1
# ipv6addr = :: # any. ::1 == localhost
proto = *
secret = testing123
require_message_authenticator = no
# shortname = localhost
nas_type = other # localhost isn't usually a NAS...
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
client pfsense {
ipaddr = 192.168.5.3
secret = router123
shortname = router
limit {
max_connections = 16
lifetime = 0
idle_timeout = 30
}
}
e. Buat Users
Selanjutnya, buat pengguna dan kata sandi yang dapat menggunakan Freeradius. Berikut skrip lengkapnya /etc/raddb/mods-config/files/authorize.Script /etc/raddb/mods-config/files/authorize
#bob Cleartext-Password := "hello"
# Reply-Message := "Hello, %{User-Name}"
#"John Doe" Cleartext-Password := "hello"
# Reply-Message = "Hello, %{User-Name}"
steve Cleartext-Password := "steve123"
"MaryRose" Cleartext-Password := "mary123"
f. Kepemilikan (Ownership)
Secara default sistem OpenBSD telah membuat pengguna dan grup _freeradius:_freeradius. Jalankan perintah di bawah ini untuk memberikan hak kepemilikan kepada Freeradius.Create Ownership
ns3# chown -R _freeradius:_freeradius /etc/raddb/
ns3# chown -R _freeradius:_freeradius /var/log/radius/
g. Mengaktifkan Freeradius
Kemudian kita jalankan Freeradius agar dapat berjalan sebagai daemon di OpenBSD. Jalankan perintah berikut untuk mengaktifkan Freeradius.Enable Freeradius
ns3# rcctl enable freeradius
ns3# rcctl restart freeradius
h. Mengetest Freeradius
Di bagian ini, kita akan memeriksa pengguna yang dapat terhubung ke server Freeradius. Lihat contoh di bawah ini untuk memeriksa setiap pengguna yang terhubung ke Freeradius.Check User
ns3# radtest steve steve123 192.168.5.3 1812 router123
Sent Access-Request Id 29 from 0.0.0.0:482e to 192.168.5.3:1812 length 75
User-Name = "steve"
User-Password = "steve123"
NAS-IP-Address = 192.168.5.3
NAS-Port = 1812
Message-Authenticator = 0x00
Cleartext-Password = "steve123"
Received Access-Accept Id 29 from 192.168.5.3:714 to 192.168.5.3:18478 length 20
Check User
ns3# radtest steve steve123 127.0.0.1 1812 testing123
ns3# radtest steve steve123 localhost 1812 testing123
ns3# radtest MaryRose mary123 192.168.5.3 1812 router123
2. Buat user/pengguna Freeradius dengan server MySQL
Ketika FreeRadius digunakan bersama dengan Mariadb atau MySQL, Freeradius akan menggunakan database yang biasanya disebut 'radius' dan di dalam database tersebut terdapat tabel database yang disebut 'radcheck'. Tabel ini adalah tabel yang perlu kita gunakan untuk berinteraksi antara Mariadb dan Freeradius, karena tabel ini berisi semua akun pengguna yang dapat diautentikasi dengan FreeRadius.Penting untuk diingat bahwa seperti banyak hal lainnya, Anda dapat memilih nama pengguna yang akan digunakan, nama database untuk sesuatu, dan Anda bahkan dapat memilih untuk menggunakan server MySQL jarak jauh! Namun untuk tutorial ini kita akan berasumsi bahwa MySQL dan FreeRadius berada di server yang sama, dan database tersebut disebut 'radius' dan akun pengguna yang akan kita gunakan dengan MySQL adalah root.
Untuk membuat database radius, pertama-tama login ke database Mariadb dengan akun root, setelah itu buat database radius, lihat contoh di bawah ini.
Create database radius, user and password
ns3# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE radius;
MariaDB [(none)]> CREATE USER 'userradius'@'localhost' IDENTIFIED BY 'radius123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON radius.* TO 'userradius'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;
a. Membuat schema Freeradius
Untuk langkah pertama, kita perlu membuat file schema.sql, yang berisi tabel-tabel yang dibutuhkan Freeradius untuk berkomunikasi dengan Maridb. Anda dapat menemukan contoh file schema.sql di /etc/raddb/mods-config/sql/main/mysql/schema.sql.Impor skrip schema.sql ke dalam basis data radius yang baru dibuat.
Import schema.sql
ns3# mysql -uroot -prouter123 radius < /etc/raddb/mods-config/sql/main/mysql/schema.sql
router123: Mariadb server password
b. Buat db user and klien
Sekarang kita akan membuat pengguna baru yang akan disimpan dalam basis data radius. Jalankan perintah insert untuk menambahkan pengguna baru. Untuk contoh ini, pengguna yang akan kita tambahkan adalah Beyoncé, dan dia akan memiliki detail login berikut:Username: testuser
Password: mariadb123
Create a new user in the radius database
ns3# mysql -u root -prouter123
MariaDB [(none)]> use radius;
MariaDB [radius]> INSERT INTO radcheck (id, username, attribute, op, value) VALUES (1001,'testuser','Cleartext-Password',':=','mariadb123');
Create client in the radius database
MariaDB [radius]> INSERT INTO nas (nasname, shortname, type, ports, secret) VALUES ('192.168.5.3', 'router', 'other', 1812,'router123');
c. Buat Module SQL Freeradius
Salah satu fungsi modul Radius adalah menghubungkan Freeradius dengan aplikasi lain seperti database Mariadb. Dalam contoh ini kita akan menghubungkan Freeradius dengan Mariadb. Untuk membuat koneksi ini, Anda mengubah file /etc/raddb/mods-available/sql. Anda dapat melihat contoh skrip lengkapnya di bawah ini.Script /etc/raddb/mods-available/sql
sql {
dialect = "mysql"
driver = "rlm_sql_mysql"
sqlite {
filename = "/tmp/freeradius.db"
busy_timeout = 200
bootstrap = "${modconfdir}/${..:name}/main/sqlite/schema.sql"
}
mysql {
warnings = auto
}
server = "localhost"
port = 3306
login = "userradius"
password = "radius123"
radius_db = "radius"
acct_table1 = "radacct"
acct_table2 = "radacct"
postauth_table = "radpostauth"
authcheck_table = "radcheck"
groupcheck_table = "radgroupcheck"
authreply_table = "radreply"
groupreply_table = "radgroupreply"
usergroup_table = "radusergroup"
delete_stale_sessions = yes
pool {
start = ${thread[pool].start_servers}
min = ${thread[pool].min_spare_servers}
max = ${thread[pool].max_servers}
spare = ${thread[pool].max_spare_servers}
uses = 0
retry_delay = 30
lifetime = 0
idle_timeout = 60
max_retries = 5
}
read_clients = yes
client_table = "nas"
group_attribute = "SQL-Group"
$INCLUDE ${modconfdir}/${.:name}/main/${dialect}/queries.conf
}
Create Symlink
ns3# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/
d. Mengaktifkan pilihan sql
Karena pada artikel ini kita akan menghubungkan Freeradius ke server database Mariadb, maka kita harus mengaktifkan opsi "sql" pada file "default" dan "inner-tunnel". File tersebut terletak pada direktori /etc/raddb/sites-available.Pada skrip file "default" dan "inner-tunnel", Anda menghapus tanda “#” dan “-” (“#sql” dan “-sql”) sehingga skrip tersebut hanya menjadi skrip “sql”.
e. Test Module SQL Freeradius
Bagian ini merupakan langkah yang paling penting, karena kita akan menguji apakah server Freeradius terhubung ke server Mariadb. Kita akan mengujinya dengan user dan password yang telah kita buat dengan perintah SQL di atas. Jalankan perintah berikut untuk menguji server Freeradius.Test Freeradius
ns3# radtest testuser mariadb123 192.168.5.3 1812 router123
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar