Belajar LDAP - Security Fundamentals
Series/Belajar LDAP/Episode 15
Episode 15 of 31

Belajar LDAP - Security Fundamentals

Mendasari keamanan direktori: risiko password cleartext dan eavesdropping, jenis bind anonymous, simple, dan SASL, mekanisme SASL PLAIN hingga GSSAPI, penyimpanan password ber-hash, serta prinsip least privilege.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 14 kalian membuat pencarian cepat dengan index. Sekarang arah pembahasannya bergeser: direktori yang cepat tapi bocor tidak ada artinya. Episode 15 ini membuka fase keamanan dan enkripsi dengan membahas ancaman dasar — mulai dari password yang dikirim apa adanya hingga serangan man-in-the-middle — lalu memetakan jenis-jenis autentikasi yang tersedia di OpenLDAP sebelum kalian menutupnya dengan TLS di episode 16.

Tantangan Keamanan

Sifat dasar LDAP adalah protokol jaringan teks yang berjalan di atas TCP. Tanpa pengamanan, berikut yang mengancam:

  • Clear-text passwords — simple bind mengirim DN dan password polos ke server; siapa pun di jalur jaringan bisa membacanya.
  • Network eavesdropping — penyadapan pasif; attacker cukup mengendus paket untuk menangkap kredensial.
  • Unauthorized access — akun atau layanan tanpa izin mengakses data yang tidak semestinya.
  • Data tampering — modifikasi data di tengah perjalanan tanpa terdeteksi.
  • Man-in-the-middle attacks — attacker berpura-pura menjadi server dan menipu klien untuk menyerahkan kredensial.

Semua ancaman ini bisa dijawab dengan kombinasi enkripsi transport (episode 16) dan kebijakan akses yang ketat. Episode ini menyiapkan konsep autentikasinya dulu.

Metode Autentikasi

OpenLDAP menyediakan beberapa cara untuk mengenali siapa yang berbicara:

  • Anonymous access — bind tanpa DN dan password; berguna untuk data publik, berbahaya jika dibiarkan terbuka untuk data internal.
  • Simple bind — bind dengan DN plus password; paling mudah, tetapi mengirim password dalam bentuk polos kecuali ada lapisan TLS.
  • SASL (Simple Authentication and Security Layer) — kerangka pluggable yang memilih mekanisme autentikasi.
  • External authentication — memanfaatkan kredensial dari lapisan di bawahnya, misalnya sertifikat TLS klien atau soket Unix.

Perbandingan ringkasnya:

MetodeKredensialKeamanan transportKecocokan
Anonymoustidak adatidak relevandata publik
Simple bindDN + passwordperlu TLSaplikasi lama, integrasi sederhana
SASLtergantung mekanismetergantung mekanismeenterprise, SSO
Externalcert atau soketinherent TLS/ldapiadmin cn=config, mutual TLS

Mekanisme SASL

SASL tidak mengautentikasi sendiri — ia menjadi wadah bagi berbagai mekanisme:

  • PLAIN — mengirim username dan password polos; butuh lapisan TLS, mirip simple bind tetapi dengan identitas yang tidak harus berupa DN.
  • DIGEST-MD5 — hashing dengan digest; secara historis populer namun kini dianggap lemah dan tidak disarankan.
  • CRAM-MD5 — challenge-response berbasis MD5; juga tergolong usang karena MD5 sudah tidak kuat.
  • GSSAPI (Kerberos) — autentikasi berbasis ticket Kerberos; kuat dan menjadi dasar SSO. Ini akan dibahas mendalam di episode 17.
  • EXTERNAL (TLS client cert) — identitas diambil dari sertifikat klien; sangat kuat untuk mutual TLS.

Kebijakan Security Strength

Karena simple bind dan SASL PLAIN mengirim password polos, OpenLDAP menyediakan gerbang pengaman lewat olcSecurity pada cn=config maupun per database:

LinuxMewajibkan lapisan keamanan
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1
olcSecurity: ssf=1

tls=1 mewajibkan koneksi TLS untuk semua operasi, dan ssf=1 (security strength factor) menuntut ada lapisan keamanan dengan kekuatan minimal 1. Hasilnya: bind yang mengirim password tanpa TLS ditolak sejak awal, bukan hanya diingatkan.

Important

Berhati-hatilah saat memasang olcSecurity: tls=1 lewat koneksi biasa. Begitu diterapkan, semua sesi tanpa TLS langsung gagal — termasuk sesi admin yang sedang memakainya. Terapkan selalu lewat ldapmodify -Y EXTERNAL -H ldapi:/// atau pastikan TLS sudah berjalan lebih dulu.

Penyimpanan Password

Selain transport, cara server menyimpan password juga menentukan keamanan keseluruhan. OpenLDAP menyimpan hash, bukan password polos, dengan label skema:

SkemaStatusCatatan
{SSHA}umumsalted SHA-1, default lama
{SHA}deprecatedSHA-1 tanpa salt, mudah di-brute force
{SSHA256}, {SSHA512}direkomendasikansalted SHA dengan kekuatan lebih tinggi
{CRYPT}tergantungmemakai crypt sistem
{MD5}deprecatedtanpa salt, lemah
{ARGON2}modernArgon2, jika build slapd mendukungnya

Default hash diatur lewat olcPasswordHash di cn=config. Menghindari {SHA} dan {MD5} yang deprecated adalah keputusan keamanan paling murah yang bisa kalian lakukan.

Kebijakan Akses dan Least Privilege

Autentikasi hanya setengah jalan — yang kedua adalah otorisasi. Beberapa pengaturan kunci:

  • Disable anonymous — pasang olcDisallows: bind_anon untuk melarang bind anonim, dan olcRequires: authc agar semua operasi menuntut autentikasi.
  • Enforce TLS/SSLolcSecurity seperti di atas.
  • Strong password policies — aktifkan kebijakan dari episode 12.
  • Least privilege — beri ACL sekecil mungkin; aplikasi membaca cukup diberi read, bukan write, dan akun replikasi cukup akses untuk search.
  • Authz policyolcAuthzPolicy mengatur bagaimana identitas SASL dipetakan ke DN direktori; di episode 17 ini menjadi kunci integrasi Kerberos.
LinuxMenutup akses anonim
dn: cn=config
changetype: modify
replace: olcDisallows
olcDisallows: bind_anon
 
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcRequires
olcRequires: authc

Audit keamanan berkala, monitoring dan logging yang dibahas di episode 18, serta pembatasan firewall (hanya buka port 389 dan 636 untuk jaringan yang berhak) menutup sisa celah.

Penutup

Pada episode 15 ini kalian memahami fondasi keamanan OpenLDAP: ancaman password cleartext, eavesdropping, dan man-in-the-middle; perbedaan anonymous, simple bind, SASL, dan external; mekanisme SASL dari PLAIN hingga GSSAPI; pengamanan dengan olcSecurity dan ssf; skema penyimpanan password dari {SSHA} hingga {ARGON2}; serta kebijakan akses minimal dan penutupan akses anonim.

Inti yang harus dibawa pulang:

  • Simple bind tanpa TLS itu telanjang — password dikirim polos, olcSecurity: ssf=1 memaksa lapisan aman.
  • SASL adalah kerangka, bukan satu mekanisme — pilih GSSAPI atau EXTERNAL untuk produksi.
  • Ganti default hash{SSHA512} atau lebih baik, jauhi {MD5} dan {SHA}.
  • Least privilege mengalahkan kepercayaan — kombinasi ACL ketat, bind_anon dilarang, dan firewall.

Di episode 16 berikutnya, kalian memasang lapisan yang menyegel semua ini: TLS/SSL configuration — sertifikat, StartTLS versus LDAPS, dan pengujian enkripsi dengan ldapsearch -ZZ. Konsep ssf dan EXTERNAL yang kalian kenal sekarang akan berubah menjadi praktik nyata.

Belajar LDAP - Security Fundamentals | Belajar LDAP