Episode ini membahas sentralisasi autentikasi PPTP dengan RADIUS: memuat plugin radius.so di pppd, mengonfigurasi radius.conf, menghubungkan FreeRADIUS sebagai backend, integrasi LDAP, serta penggunaan RADIUS accounting untuk monitoring sesi.

Mengelola user satu per satu di /etc/ppp/chap-secrets cukup untuk lab kecil, tapi akan menjadi mimpi buruk saat user mencapai ratusan. Di sinilah RADIUS masuk: satu titik autentikasi, otorisasi, dan accounting untuk seluruh layanan dial-up.
Episode 11 membahas cara menghubungkan pppd ke RADIUS melalui plugin radius.so, menyiapkan FreeRADIUS sebagai backend, mengintegrasikan LDAP untuk autentikasi terpusat, serta memanfaatkan accounting untuk memantau sesi.
Dengan RADIUS, data user tidak perlu tersebar di chap-secrets setiap server. Autentikasi dilakukan oleh server RADIUS yang menjadi single source of truth. Ini memudahkan penambahan, penonaktifan, dan audit user.
RADIUS juga menyediakan accounting: setiap sesi yang mulai dan berakhir tercatat, sehingga kalian bisa menghitung pemakaian dan mendeteksi anomali.
pppd mendukung plugin RADIUS yang dikompilasi sebagai shared library. Di Debian/Ubuntu, paket ppp menyediakan plugin ini:
find /usr/lib -name "radius.so"Jika find /usr/lib -name "radius.so" menemukan file tersebut, tambahkan ke file opsi PPP:
plugin radius.so
radius-config-file /etc/ppp/radius.confBaris plugin radius.so membuat pppd memuat plugin, dan radius-config-file menunjuk ke file konfigurasi server RADIUS.
Konfigurasi plugin di /etc/ppp/radius.conf menentukan alamat server dan secret bersama:
auth-server 192.168.1.100:1812
acct-server 192.168.1.100:1813
secret 3k1Ra45lAnDSecreto
nas-identifier pptp-serverauth-server menunjuk ke FreeRADIUS di port 1812 (authentication), acct-server di port 1813 (accounting). Secret harus sama persis dengan yang ada di sisi server RADIUS.
Di server FreeRADIUS, user disimpan di file /etc/freeradius/3.0/users:
budi Cleartext-Password := "password-rahasia"Untuk sesi VPN, tambahkan atribut yang relevan:
budi Cleartext-Password := "password-rahasia",
Framed-Protocol = PPP,
Framed-IP-Address = 10.0.0.100Setiap atribut yang dikembalikan server RADIUS akan diteruskan pppd sebagai opsi. Framed-IP-Address misalnya memaksa klien mendapat alamat IP tertentu.
sudo systemctl restart freeradius
sudo radtest budi "password-rahasia" 127.0.0.1 0 3k1Ra45lAnDSecretoradtest mengirim permintaan autentikasi uji ke server RADIUS. Jika balasannya Access-Accept, konfigurasi server benar dan siap melayani pppd.
Daripada menyimpan password di FreeRADIUS, autentikasi bisa diserahkan ke LDAP seperti Active Directory atau OpenLDAP. Di FreeRADIUS, modul rlm_ldap menghubungkan keduanya.
Konfigurasi rlm_ldap biasanya diatur di file modul LDAP, lalu dipanggil dari virtual server saat autentikasi. Pola umumnya: FreeRADIUS menerima Access-Request dari pppd, menanyakan kredensial ke LDAP, lalu mengembalikan hasil ke pppd.
ldapsearch -x -H ldap://ldap.example.com -b "ou=people,dc=example,dc=com" uid=budildapsearch -x -H ldap://ldap.example.com -b "ou=people,dc=example,dc=com" uid=budi menguji koneksi dan pencarian user. Pastikan bind bisa berjalan sebelum menyambungkannya ke FreeRADIUS.
Setiap sesi PPTP yang memakai plugin radius menghasilkan catatan accounting start dan stop. Informasinya mencakup user, alamat IP, durasi sesi, dan byte yang ditransfer.
sudo tail -f /var/log/freeradius/radacct/*/* | grep -E "Acct-Status-Type|Acct-Session-Time"tail -f /var/log/freeradius/radacct/*/* menampilkan entri accounting secara live. Dari sini, kalian bisa membangun dashboard pemakaian atau mendeteksi user yang sesi-nya tidak wajar.
Episode 11 menghubungkan PPTP ke dunia enterprise: memuat plugin radius.so, mengonfigurasi radius.conf, menambahkan user di FreeRADIUS, mengintegrasikan LDAP, dan memantau sesi lewat accounting.
Inti yang harus dibawa pulang:
plugin radius.so dan radius-config-file menghidupkan RADIUS di pppd.radius.conf butuh alamat server, secret bersama, dan nas-identifier.Di episode 12 selanjutnya kita akan membahas automation dan deployment — script shell untuk setup otomatis, pembuatan user massal, peran Ansible, dan wacana menjalankan PPTP di dalam container Docker.