Belajar LDAP - SASL & External Authentication
Series/Belajar LDAP/Episode 17
Episode 17 of 31

Belajar LDAP - SASL & External Authentication

Mengautentikasi lewat SASL: kerangka pluggable dengan GSSAPI berbasis Kerberos dan EXTERNAL memakai sertifikat klien, pemetaan identitas ke DN, serta integrasi PAM, NSS, SSSD, sudo, dan aplikasi.

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

Pendahuluan

Di episode 16 kalian memasang TLS dan berjanji akan memanfaatkannya lebih jauh. Episode 17 ini menepati janji itu: SASL. Kerangka SASL memungkinkan autentikasi tanpa mengirim password lewat jaringan — dengan ticket Kerberos lewat GSSAPI, atau dengan sertifikat klien lewat EXTERNAL. Di akhir episode, kalian melihat bagaimana autentikasi ini terhubung ke sistem Linux lewat PAM, NSS, dan SSSD.

Kerangka SASL

SASL (Simple Authentication and Security Layer) adalah lapisan abstraksi autentikasi yang dipasang di atas protokol seperti LDAP. Daripada menulis logika autentikasi, aplikasi memilih mekanisme SASL yang tersedia di sistem:

  • Pluggable authentication — mekanisme dipasang sebagai plugin; menambah mekanisme baru tidak mengubah aplikasi.
  • Mechanism selection — klien dan server menegosiasikan mekanisme terkuat yang sama-sama didukung.
  • Security layers — selain autentikasi, SASL bisa menyediakan enkripsi dan integritas untuk koneksi itu sendiri.

Di OpenLDAP, mekanisme yang tersedia tergantung paket libsasl2 dan module yang dimuat. Dua yang paling relevan untuk produksi adalah GSSAPI dan EXTERNAL.

SASL/GSSAPI (Kerberos)

GSSAPI menjembatani LDAP dengan Kerberos — realm dan ticket yang kalian kenal dari series Kerberos. Alurnya: user mendapat TGT dengan kinit, lalu bind LDAP memakai service ticket tanpa menyentuh password.

Yang harus disiapkan:

  1. Service principal — principal ldap/ldap.example.com di KDC, dengan password yang diekspor ke keytab.
  2. Keytab configuration — keytab ditempatkan di /etc/krb5.keytab dan dibaca oleh slapd.
  3. Konfigurasi SASL server di cn=config:
LinuxKonfigurasi SASL di cn=config
dn: cn=config
changetype: modify
replace: olcSaslHost
olcSaslHost: ldap.example.com
-
replace: olcSaslRealm
olcSaslRealm: EXAMPLE.COM
-
add: olcSaslSecProps
olcSaslSecProps: noanonymous,minssf=56

Klien lalu melakukan autentikasi dengan mekanisme GSSAPI:

Bind dengan GSSAPI
kinit budi
ldapwhoami -x -H ldap://ldap.example.com -Y GSSAPI

Manfaat utamanya adalah SSO: begitu user punya TGT, setiap layanan yang memakai Kerberos tidak pernah meminta password lagi. Kredensial juga tidak pernah mengalir di jaringan — yang dikirim adalah ticket.

SASL/EXTERNAL

SASL EXTERNAL mengambil identitas dari lapisan bawah — sertifikat klien pada koneksi TLS, atau identitas proses pada soket Unix. Inilah yang membuat ldapmodify -Y EXTERNAL -H ldapi:/// bekerja sebagai admin cn=config tanpa password.

Saat mutual TLS diaktifkan (dengan olcTLSVerifyClient: demand dari episode 16), server membaca DN subjek dari sertifikat klien dan memetakannya ke entry direktori. Pemetaan ini dikonfigurasi dengan olcAuthzRegexp:

LinuxMemetakan identitas sertifikat ke DN user
dn: cn=config
changetype: modify
add: olcAuthzRegexp
olcAuthzRegexp: "uid=([^,]+),.*" "uid=$1,ou=people,dc=example,dc=com"

Dengan pemetaan ini, sertifikat atas nama uid=budi otomatis mengautentikasi sebagai uid=budi,ou=people,dc=example,dc=com:

Bind dengan EXTERNAL lewat sertifikat
ldapwhoami -Y EXTERNAL -H ldaps://ldap.example.com

Karena identitas diambil dari sertifikat yang diverifikasi oleh CA, SASL EXTERNAL adalah autentikasi yang sangat kuat — tidak ada kata sandi yang bisa dicuri. Di sisi lain, setiap user harus memegang sertifikat klien, yang butuh manajemen distribusi dan rotasi sertifikat.

PAM dan NSS Integration

Autentikasi LDAP masuk ke sistem Linux melalui dua saluran:

  • pam_ldap — modul PAM (pada Debian dan Ubuntu lewat paket libpam-ldapd) yang memvalidasi login di konsol, SSH, dan aplikasi PAM lain.
  • NSS integrationlibnss-ldapd membuat user dan group dari LDAP terlihat oleh sistem: getent passwd dan ls -l menampilkan akun direktori seolah-olah akun lokal.

Keduanya di Debian dijalankan oleh daemon nslcd yang mengomunikasikan LDAP ke NSS dan PAM:

LinuxKonfigurasi /etc/nslcd.conf
uid nslcd
gid nslcd
uri ldap://ldap.example.com
base dc=example,dc=com
ssl starttls
tls_cacertfile /etc/ssl/certs/ca.crt
  • SSSD (System Security Services Daemon) — alternatif modern yang menggabungkan autentikasi, cache offline, dan penanganan failover dalam satu daemon, dengan konfigurasi di /etc/sssd/sssd.conf. Untuk deployment enterprise, SSSD umumnya lebih disarankan daripada pam_ldap karena cache dan dukungan Kerberos-nya.

Autentikasi LDAP ke Sistem Lain

Dari saluran dasar itu, LDAP dipakai untuk banyak tujuan:

  • Linux login — konsol dan TTY memakai pam_ldap atau SSSD.
  • SSH authentication — SSH mewarisi PAM, jadi login SSH ikut terautentikasi; untuk kunci publik, OpenSSH bisa memuat kunci dari LDAP lewat AuthorizedKeysCommand.
  • Sudo rules — aturan sudo disimpan di LDAP dengan paket sudo-ldap; tambahkan sudoers: files ldap di /etc/nsswitch.conf dan tentukan base pencarian sudoers di konfigurasi sudo.
  • Application authentication — aplikasi web, mail, dan service lain bind ke LDAP memakai akun service dengan izin terbatas, menerapkan least privilege dari episode 15.

Note

Mulailah integrasi sistem kecil: uji dengan getent passwd dan ldapwhoami -Y GSSAPI sebelum menghubungkan login SSH atau sudo. Kesalahan konfigurasi di langkah besar jauh lebih sulit ditelusuri daripada yang dimulai dari langkah kecil.

Penutup

Pada episode 17 ini kalian memahami SASL sebagai kerangka pluggable: pemilihan mekanisme dan security layers; integrasi GSSAPI dengan Kerberos mulai dari service principal, keytab, hingga SSO tanpa password; SASL EXTERNAL yang memakai sertifikat klien dan pemetaan identitas lewat olcAuthzRegexp; lalu integrasi ke sistem dengan pam_ldap, NSS, dan SSSD; serta penerapan untuk login Linux, SSH, sudo, dan aplikasi.

Inti yang harus dibawa pulang:

  • GSSAPI adalah SSO — password tidak pernah lewat jaringan, ticket yang bicara.
  • EXTERNAL memakai lapisan bawah — sertifikat atau soket Unix, dan olcAuthzRegexp menjembatani identitas ke DN.
  • PAM dan NSS adalah jembatan ke sistem — pam_ldap memvalidasi login, NSS membuat user LDAP terlihat sistem.
  • Mulai kecil, perluas perlahan — verifikasi tiap lapisan sebelum menyambungkan SSH dan sudo.

Di episode 18 berikutnya, kita menutup fase keamanan dengan audit logging & monitoring — level log slapd, rotasi log, dan analisis untuk mendeteksi anomali. Infrastruktur autentikasi yang kalian bangun sejak episode 12 sekarang siap dipantau dengan benar.

Belajar LDAP - SASL & External Authentication | Belajar LDAP