Tutorial Integration LDAP Dengan OpenVPN


Pengertian

OpenVPN LDAP Authentication adalah metode pengamanan akses VPN di mana proses verifikasi user tidak lagi menggunakan sertifikat individu yang ribet, melainkan menggunakan akun yang terpusat di server Directory Service. Dalam kasus ini, kita pake OpenLDAP sebagai database user-nya.


Konsep

Konsep utamanya adalah Centralized Authentication. OpenVPN bertindak sebagai client yang nanya ke OpenLDAP ("Woi, ini si Raihan beneran user kita bukan?").

Struktur di LDAP menggunakan hierarki Distinguished Name (DN). Kita membatasi pencarian user hanya di dalam satu kotak khusus yang disebut Organizational Unit (OU). Jadi, meskipun ada user di OU lain (misal: ou=marketing), mereka nggak bakal bisa login VPN kalau kita set targetnya cuma di ou=vpn.


Cara Kerja

  1. User Connection: User buka aplikasi OpenVPN dan masukin username & password.

  2. Plugin Trigger: Server OpenVPN nerima request, lalu manggil plugin openvpn-auth-ldap.

  3. LDAP Bind: Plugin bakal melakukan binding (login) ke server LDAP pake akun admin/readonly.

  4. Search Filter: Plugin nyari data user berdasarkan uid dan objectClass di OU yang udah kita tentuin.

  5. Validation: Kalau user ketemu dan password-nya cocok, LDAP bilang "OK", dan OpenVPN bakal ngasih akses Tunneling ke user tersebut.


Tujuan

Kenapa kita capek-capek integrasiin ini?

  • Efficiency: Lu nggak perlu bikin file .ovpn beda-beda buat tiap orang. Cukup satu file template, login-nya pake akun masing-masing.

  • Security: Kalau ada karyawan resign, lu cukup hapus atau disable akunnya di LDAP, otomatis akses VPN-nya putus. Nggak perlu cabut sertifikat (Revocation) satu-satu.

  • Scalability: Cocok buat organisasi besar yang usernya ratusan.


Analogi

Bayangin OpenVPN itu adalah Pintu Masuk Kantor. Dulu, setiap karyawan harus bawa Kunci Fisik (Sertifikat Client) buat masuk. Repot kalau kuncinya ilang atau karyawannya berhenti.

Sekarang, kita pasang Mesin Absen Fingerprint (LDAP) di pintu itu. Jadi, siapa pun yang mau masuk tinggal tempelin jempol atau masukin PIN. Datanya dicek ke Buku Induk Karyawan (Database LDAP) di ruang HRD. Kalau nama lu ada di daftar "Boleh Masuk", pintu kebuka.


Kelebihan dan Kekurangan

KelebihanKekurangan
Manajemen Terpusat: Satu akun buat semua layanan (SSO).Single Point of Failure: Kalau server LDAP mati, nggak ada yang bisa login VPN.
Tanpa Sertifikat Client: Ngurangin beban admin buat distribusi file .crt.Kompleksitas: Konfigurasi awal filter LDAP agak tricky (masalah objectClass).
Audit Log: Gampang mantau siapa login jam berapa lewat log LDAP.Security: Password dikirim lewat network (wajib pake LDAPS/TLS buat produksi).

Tutorial & Problem Solving Lengkap

Berikut langkah eksekusi di lapangan berdasarkan hasil brainstorm lu.

1. Install Plugin di Server OpenVPN

# Update repo dan install plugin ldap untuk openvpn
sudo apt update && sudo apt install openvpn-auth-ldap -y

2. Konfigurasi Plugin LDAP (/etc/openvpn/auth/ldap.conf)

Copy file example openvpn auth dari /usr/share/doc/openvpn-auth-ldap/examples/auth-ldap.conf, lalu sesuaikan dengan parameter dibawah ya.

<LDAP>
    URL             ldap://auth.itnsa.id
    BindDN          cn=admin,dc=itnsa,dc=id
    Password        P@ssw0rd  # Password admin LDAP lu
    Timeout         15
</LDAP>

<Authorization>
    BaseDN          ou=vpn,dc=itnsa,dc=id
    # Filter ini WAJIB ada objectClass agar pencarian presisi
    SearchFilter    (&(uid=%u)(objectClass=inetOrgPerson))
    RequireGroup    false
</Authorization>

3. Konfigurasi Server OpenVPN (/etc/openvpn/server.conf)

Tambahin baris ini di bagian paling bawah file config server lu.

# Panggil plugin ldap (cek path .so nya sesuai distro lu), kalo lupa pake find aja
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
# Gunakan UID LDAP sebagai Common Name sertifikat
username-as-common-name

# Biar murni pake username/pass (opsional tergantung soal)
verify-client-cert none#untuk kedua parameter di atas klo emang lupa bisa kita cek di openvpn --help | less, nah nanti tinggal
inget inget aja deh

4. Konfigurasi Client (client.ovpn)

Tambahin baris ini di file .ovpn yang lu bagiin ke user.

# Perintah agar client nanyain username & password
auth-user-pass

5. Troubleshooting (Problem Solving)

Kalau muncul error, jangan panik. Lakuin ini:

  • Cek Filter: Test manual pake ldapsearch.

    ldapsearch -x -b "ou=vpn,dc=itnsa,dc=id" "(&(uid=raihan)(objectClass=inetOrgPerson))"
    
  • Monitor Log: Pantau log pas lu coba login.

    tail -f /var/log/syslog | grep vpn
    
  • Debug Mode: Naikin verbosity di server.conf jadi verb 5 buat liat detail komunikasi plugin.


Kesimpulan

Integrasi OpenVPN dan OpenLDAP adalah standar wajib buat infrastruktur level Enterprise. Poin penting yang lu dapet dari kasus ini adalah ketelitian dalam menulis Search Filter. Sebagai Senior, pesan gua: selalu tes filter lu pake ldapsearch sebelum lu masukin ke config VPN biar nggak nebak-nebak buah manggis pas ada error.


Glosarium Engineer

  • OpenVPN: Aplikasi server-client untuk membuat koneksi jaringan pribadi (VPN) yang aman.

  • OpenLDAP: Implementasi open-source dari protokol LDAP untuk layanan direktori.

  • Organizational Unit (OU): Kontainer di dalam LDAP yang digunakan untuk mengelompokkan objek.

  • Base DN: Titik awal di dalam pohon direktori tempat pencarian dimulai.

  • BindDN: Akun yang digunakan oleh aplikasi untuk melakukan autentikasi ke server LDAP.

  • Search Filter: Kriteria pencarian yang digunakan untuk menemukan objek spesifik di LDAP.

  • inetOrgPerson: Object Class standar di LDAP yang merepresentasikan identitas orang dalam organisasi.

  • Tunneling: Proses membungkus paket data di dalam protokol lain untuk pengiriman yang aman.

Comments

Popular posts from this blog

Apa itu Link Aggregation?

Apa Itu Port Security di Switch Cisco