Episode ini membawa autentikasi username/password dari episode 5 ke level enterprise: integrasi LDAP dan RADIUS, plugin auth-pam dan auth-radius, hingga Multi-Factor Authentication dengan OTP dan TOTP sebagai lapisan keamanan kedua.

Episode 5 menutup lapisan autentikasi dengan auth-user-pass dan verifikasi via PAM. Episode 9 memberi kalian kebijakan per client. Sekarang pertanyaannya: bagaimana jika jumlah pengguna ratusan dan kredensialnya dikelola di direktori perusahaan?
Episode 10 ini membahas advanced authentication. Kalian akan belajar menghubungkan OpenVPN ke LDAP untuk mengambil kredensial dari direktori pengguna, ke RADIUS untuk autentikasi terpusat, dan menambahkan MFA dengan OTP serta TOTP sebagai lapisan kedua. Ini adalah fitur yang memisahkan lab pribadi dari deployment perusahaan sungguhan.
Mengapa ini penting? Karena password saja tidak lagi memadai. Kebocoran password terjadi setiap hari, dan MFA adalah lapisan yang mencegah akun yang diretas tetap menjadi ancaman. Ditambah dengan integrasi direktori, pengelolaan pengguna menjadi terpusat dan mudah diaudit.
Cara paling sederhana untuk memverifikasi kredensial terhadap LDAP adalah lewat PAM. Modul pam_ldap membuat login melalui SSH dan OpenVPN sama-sama memakai basis data yang sama:
plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpnPlugin openvpn-auth-pam meneruskan username dan password dari auth-user-pass ke service PAM bernama openvpn. Service PAM ini bisa dipetakan ke LDAP, Kerberos, atau basis data lokal — terserah konfigurasi /etc/pam.d/openvpn.
Untuk kontrol yang lebih rinci, beberapa distribusi menyediakan plugin LDAP tersendiri:
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.confFile ldap.conf berisi alamat server LDAP, base DN untuk pencarian, dan filter pengguna. Plugin ini memberi kontrol penuh atas atribut mana yang dipakai sebagai dasar verifikasi.
Ketika kebijakan tidak bisa diekspresikan lewat plugin, tulis script verifikasi. Mode via-file dan via-env dari episode 5 kembali dipakai:
auth-user-pass-verify /etc/openvpn/check-ldap.sh via-env
script-security 2Script bisa mengecek keanggotaan grup, masa berlaku akun, atau meneruskan request ke tool internal. Fleksibilitas inilah yang membuat OpenVPN bisa masuk ke alur autentikasi organisasi mana pun.
RADIUS adalah standar industri untuk autentikasi terpusat, dipakai oleh Wi-Fi enterprise hingga ISP. Plugin openvpn-auth-radius menghubungkan OpenVPN ke server RADIUS:
plugin /usr/lib/openvpn/openvpn-radius.so /etc/openvpn/radius/radius.cnfFile radius.cnf berisi alamat server, secret yang disepakati, dan port. Ketika client mengirim username dan password, OpenVPN meneruskan Access-Request ke server RADIUS dan menunggu Access-Accept.
Satu keunggulan RADIUS dibanding PAM murni adalah dynamic authorization — kebijakan bisa dicabut secara terpusat tanpa menyentuh server VPN. Ada juga atribut RADIUS yang bisa dipetakan ke direktif OpenVPN, misalnya untuk menerapkan rute atau bandwidth tertentu per pengguna.
Server RADIUS sering berada di lokasi yang jauh sehingga setiap request terasa lambat. Episode 5 memperkenalkan auth-gen-token, dan kombinasinya dengan RADIUS sangat cocok:
auth-gen-token 7200auth-gen-token 7200 membuat server mengeluarkan token sesi 2 jam setelah verifikasi RADIUS pertama berhasil. Reconnect selama masa token tidak perlu menghubungi RADIUS lagi — pengalaman pengguna lebih mulus.
MFA menambahkan faktor kedua di luar password. Pendekatan yang umum: verifikasi password dulu dengan PAM atau RADIUS, lalu jalankan verifikasi kedua untuk kode TOTP. OpenVPN mendukung ini lewat script auth-user-pass-verify yang mengecek keduanya:
auth-user-pass-verify /etc/openvpn/check-mfa.sh via-env
script-security 2Script check-mfa.sh membaca password dan kode TOTP yang digabung dalam satu field username atau password, memverifikasi keduanya, lalu mengembalikan exit code sesuai hasilnya.
Kode TOTP dihasilkan dari secret berbasis waktu. Secret diberikan ke pengguna saat onboarding, lalu dikonfigurasi di aplikasi authenticator seperti Google Authenticator, FreeOTP, atau Aegis. Server menghitung kode yang sama berdasarkan waktu untuk membandingkan.
oathtool --totp --base32 --generate 10 user-secretoathtool --totp --base32 --generate 10 user-secret menghasilkan kode TOTP saat ini untuk secret tertentu — berguna untuk pengujian dan verifikasi cepat bahwa konfigurasi MFA benar.
Inti yang harus dibawa pulang:
auth-pam menghubungkan OpenVPN ke PAM, yang bisa dipetakan ke LDAP.auth-gen-token mengurangi request berulang ke server autentikasi.Di episode 11 selanjutnya kita akan membahas connection broker dan scalability — membatasi jumlah client dengan --max-clients, mengendalikan laju koneksi dengan --connect-freq dan rate limiting, menjalankan banyak instance OpenVPN, sampai load balancing dengan learn-address dan round-robin DNS. Setelah episode ini, server kalian siap melayani ratusan pengguna.