Instal dan Siapkan Server OpenLDAP di Ubuntu 20.04

Dalam tutorial ini, kita akan belajar cara menginstal dan men-setup OpenLDAP Server di Ubuntu 20.04. Perangkat Lunak OpenLDAP  adalah implementasi open source dari Lkelas berat Ddirektori Aakses Protokol. LDAP adalah protokol client-server ringan untuk mengakses service direktori, khususnya service direktori berbasis X. 500.

Instal dan Siapkan Server OpenLDAP di Ubuntu 20.04

Rangkaian OpenLDAP meliputi;

  • slapd  – daemon LDAP (server) yang berdiri sendiri
  • perpustakaan yang  mengimplementasikan protokol LDAP, dan
  • utilitas, alat, dan client sampel.

Jalankan Pembaruan Sistem

Sebelum Anda mulai, pastikan cache paket sistem Anda mutakhir.

apt update apt upgrade

Ingin tahu apakah akan me-reboot sistem Anda setelah memutakhirkan? Cukup instal needrestartpaket untuk membantu Anda melakukannya.

Instal Stand-alone LDAP Daemon (SLAPD) di Ubuntu 20.04

Untuk menginstal SLAP dan utilitas LDAP lainnya, jalankan perintah di bawah ini;

apt install slapd ldap-utils

Selama penginstalan, Anda akan diminta untuk menyetel password administratif OpenLDAP.

Setel password dan tekan ENTER untuk mengonfirmasi set password.

Mengonfigurasi OpenLDAP di Ubuntu 20.04

Secara default, penginstal SLAPD tidak meminta Anda untuk memasukkan pengaturan informasi domain. Namun itu otomatis mengisi DIT dengan data sampel berdasarkan nama domain server Anda.

slapcat
dn: dc=kifarunix-demo,dc=com objectClass: top objectClass: dcObject objectClass: organization o: kifarunix-demo.com dc: kifarunix-demo structuralObjectClass: organization entryUUID: 523af726-25a0-103a-8c03-87de2c08c2d4 creatorsName: cn=admin,dc=kifarunix-demo,dc=com createTimestamp: 20200508175142Z entryCSN: 20200508175142.880878Z#000000#000#000000 modifiersName: cn=admin,dc=kifarunix-demo,dc=com modifyTimestamp: 20200508175142Z dn: cn=admin,dc=kifarunix-demo,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSEF9M1hkZ3h5SmRsK3IyclNkbkhxTzlqMXlrdS9ZWnk0Sis= structuralObjectClass: organizationalRole entryUUID: 523b1daa-25a0-103a-8c04-87de2c08c2d4 creatorsName: cn=admin,dc=kifarunix-demo,dc=com createTimestamp: 20200508175142Z entryCSN: 20200508175142.881901Z#000000#000#000000 modifiersName: cn=admin,dc=kifarunix-demo,dc=com modifyTimestamp: 20200508175142Z

Jika Anda ingin mengatur DIT Anda sendiri, Anda perlu mengkonfigurasi ulang paket SLAPD.

dpkg-reconfigure slapd

Saat dijalankan, Anda akan ditanya apakah akan menghilangkan konfigurasi server OpenLDAP. PilihNo dan lanjutkan untuk mengonfigurasi pengaturan OpenLDAP Anda.

  • Tetapkan nama domain DNS Anda untuk membuat DN dasar direktori LDAP Anda.
  • Masukkan nama organisasi Anda yang akan digunakan di DN dasar.
  • Masukkan kembali nama sandi administrasi Anda dan konfirmasikan.
  • Pilih untuk menghapus database SLAPD saat paket slapd dihapus.

Dalam contoh penyiapan kami, DN dasar disetel ke dc=kifarunix-demo,dc=com, DN root disetel ke cn=admin,dc=kifarunix-demo,dc=com.

ldapsearch -x -LLL -b "" -s base namingContexts
dn: namingContexts: dc=kifarunix-demo,dc=com

Untuk melihat RootDN, jalankan perintah di bawah ini

ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL -Q | grep olcRootDN:
olcRootDN: cn=admin,dc=kifarunix-demo,dc=com

Konfigurasikan OpenLDAP Logging di Ubuntu 20.04

File log adalah tempat pertama yang mungkin ingin Anda periksa jika ada sesuatu yang tidak berhasil. Secara default, tingkat logging OpenLDAP diatur ke noneyang diperlukan untuk hanya memiliki pesan prioritas tinggi yang dicatat.

ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL -Q | grep olcLogLevel:
olcLogLevel: none

Jika Anda perlu mengubahnya ke level log yang berbeda, katakanlah ke statslevel (sambungan log/operasi/hasil), jalankan perintah di bawah ini;

ldapmodify -Y EXTERNAL -H ldapi:/// -Q

Rekatkan konten di bawah ini untuk mengubah level log.

dn: cn=config changeType: modify replace: olcLogLevel olcLogLevel: stats

Selanjutnya, tekan ENTER. Setelah Anda melihat garis, modifying entry “cn=config”, lalu tekan Ctrl+d.

Anda juga dapat menggunakan file LDIF untuk memperbarui informasi ini jika Anda mau.

Untuk mengkonfirmasi perubahan;

ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL -Q
dn: cn=config olcLogLevel: stats

Selanjutnya, Anda perlu menentukan file log untuk OpenLDAP pada konfigurasi Rsyslog. Secara default, OpenLDAP masuk ke  local4 fasilitas, oleh karena itu, untuk mengonfigurasinya untuk masuk /var/log/slapd.logmisalnya, jalankan perintah di bawah ini;

echo "local4.* /var/log/slapd.log" >> /etc/rsyslog.d/51-slapd.conf

Mulai ulang service Rsyslog dan SLAPD

systemctl restart rsyslog slapd

Anda sekarang seharusnya dapat membaca log masuk LDAP,  /var/log/slapd.log.

Anda juga dapat mengonfigurasi rotasi log;

vim /etc/logrotate.d/slapd
/var/log/slapd.log { rotate 7 daily missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript }

Mulai ulang service rotasi log;

systemctl restart logrotate

Konfigurasikan LDAP dengan Sertifikat SSL/TLS

LDAP mendukung dua metode untuk mengenkripsi komunikasi menggunakan SSL/TLS:

  • LDAPS: Komunikasi LDAPS biasanya terjadi melalui port khusus, umumnya 636.
  • STARTTLS: Koneksi STARTTLS dimulai sebagai teks biasa melalui port LDAP standar (389), dan koneksi tersebut kemudian ditingkatkan ke SSL/TLS. Ini juga dikenal sebagai  operasi peningkatan TLS.

Dalam demo ini, kami menggunakan sertifikat yang ditandatangani sendiri. Ikuti tautan di bawah ini untuk mengonfigurasi server OpenLDAP dengan sertifikat SSL/TLS.

Cara Mengonfigurasi server OpenLDAP dengan sertifikat SSL/TLS yang Ditandatangani

Jika saat memperbarui sertifikat TLS Anda mendapatkan error di bawah ini;

modifying entry "cn=config" ldap_modify: Other (e.g., implementation specific) error (80)

Dan memeriksa file syslog, Anda menemukan AppArmor menolak akses baca ke sertifikat dan file kunci;

May 9 12:54:08 ldap kernel: [ 3785.915065] audit: type=1400 audit(1589028848.345:137): apparmor="DENIED" operation="open" profile="/usr/sbin/slapd" name="/etc/ssl/openldap/certs/cacert.pem" pid=5141 comm="slapd" requested_mask="r" denied_mask="r" fsuid=112 ouid=112

Anda perlu memperbarui AppArmor untuk memberikan akses baca slapd ke sertifikat dan file kunci dengan mengedit profil SLAPD AppArmor dan menambahkan baris di bawah ini;

vim /etc/apparmor.d/usr.sbin.slapd
... # Site-specific additions and overrides. See local/README for details. #include  #TLS  /etc/ssl/openldap/certs/ r, /etc/ssl/openldap/certs/* r, /etc/ssl/openldap/private/ r, /etc/ssl/openldap/private/* r, }

Ganti jalur ke file sertifikat dan kunci yang sesuai. Simpan dan keluar dari file dan reload profil SLAPD AppArmor;

apparmor_parse
r -r /etc/apparmor.d/usr.sbin.slapd

Catatan, jika Anda menggunakan jalur sertifikat dan kunci standar, maka perubahan AppArmor mungkin tidak diperlukan.

Setelah selesai, coba lagi untuk memperbarui database SLAPD dengan sertifikat TLS.

Untuk memverifikasi bahwa file sudah ada;

slapcat -b "cn=config" | grep "olcTLS"
olcTLSCACertificateFile: /etc/ssl/openldap/certs/cacert.pem olcTLSCertificateFile: /etc/ssl/openldap/certs/ldapserver-cert.crt olcTLSCertificateKeyFile: /etc/ssl/openldap/private/ldapserver-key.key

Selanjutnya, perbarui jalur ke file sertifikat CA di /etc/ldap/ldap.conf.

sed -i 's|certs/ca-certificates.crt|openldap/certs/cacert.pem|' /etc/ldap/ldap.conf

Konfigurasikan OpenLDAP untuk Menyediakan Akses SUDO bagi Pengguna

Untuk mengaktifkan OpenLDAP untuk menyediakan akses sudo bagi user, lakukan sebagai berikut;

Instal paket Sudo OpenLDAP;

export SUDO_FORCE_REMOVE=yes
apt install sudo-ldap

Buat skema OpenLDAP SUDO;

Copy contoh skema Sudo OpenLDAP ke direktori skema OpenLDAP

cp /usr/share/doc/sudo-ldap/schema.OpenLDAP /etc/ldap/schema/sudo.schema

Konfigurasikan OpenLDAP untuk menyertakan skema SUDO dalam databasenya.

Untuk ini, kami akan membuat direktori sementara dari mana kami akan mengonversi skema sudo ke LDIF sebelum kami dapat mengonfigurasi SLAPD untuk memasukkannya ke dalam basis datanya.

mkdir /tmp/ldap-sudo
echo "include /etc/ldap/schema/sudo.schema" > /tmp/ldap-sudo/ldapsudo.conf
cd /tmp/ldap-sudo

Hasilkan file SUDO LDIF dari skema;

slaptest -f ldapsudo.conf -F.
config file testing succeeded

File sudo LDIF sekarang harus berada di bawah cn=config/cn=schema/

ls cn=config/cn=schema/
'cn={0}sudo.ldif'

Edit file LDAP SUDO LDIF dan REMOVE comment lines (Lines beginning with #) di bagian atas dan perbarui baris;

dn: cn={0}sudo objectClass: olcSchemaConfig cn: {0}sudo

sedemikian rupa sehingga mereka terlihat seperti;

dn: cn=sudo,cn=schema,cn=config objectClass: olcSchemaConfig cn: sudo

Juga, REMOVE garis-garis ini di bagian bawah;

structuralObjectClass: olcSchemaConfig entryUUID: a0db89da-2646-103a-83d7-df36427f181e creatorsName: cn=config createTimestamp: 20200509134211Z entryCSN: 20200509134211.249833Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20200509134211Z

Setelah selesai mengedit file sudo LDIF, perbarui database SLAPD untuk menyertakan skema SUDO;

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f 'cn=config/cn=schema/cn={0}sudo.ldif'

Anda akan melihat garis;

adding new entry "cn=sudo,cn=schema,cn=config"

Aktifkan pengindeksan user dan host sudo;

ldapadd -Y EXTERNAL -H ldapi:/// -Q

Saat perintah berjalan, rekatkan konten te di bawah ini dan tekan ENTER.

dn: olcDatabase={1}mdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: sudoUser,sudoHost pres,eq

Setelah Anda melihat garis, modifying entry “olcDatabase={1}mdb,cn=config”, tekan ctrl+d.

Untuk memverifikasi pengindeksan;

slapcat -n 0 | grep olcDbIndex
olcDbIndex: objectClass eq olcDbIndex: cn,uid eq olcDbIndex: uidNumber,gidNumber eq olcDbIndex: member,memberUid eq olcDbIndex: sudoUser,sudoHost pres,eq

OpenLDAP Anda sekarang seharusnya dapat memberikan akses SUDO untuk user. Namun, ini tergantung pada konfigurasi lebih lanjut. Ikuti tautan di bawah ini untuk menyelesaikan ini;

Cara Mengkonfigurasi akses SUDO melalui OpenLDAP Server

Buat Akun Pengguna OpenLDAP

Sebelum kita dapat membuat akun user OpenLDAP, kita perlu membuat wadah unit organisasi untuk menyimpan user dan informasi grup mereka. Lihat contoh kami di bawah ini. Pastikan untuk membuat perubahan yang relevan sesuai dengan pengaturan lingkungan Anda.

vim users-ou.ldif
dn: ou=people,dc=kifarunix-demo,dc=com objectClass: organizationalUnit objectClass: top ou: people dn: ou=groups,dc=kifarunix-demo,dc=com objectClass: organizationalUnit objectClass: top ou: groups

Sebelum Anda dapat memperbarui database dengan informasi OU user di atas, Anda perlu menyesuaikan kontrol akses database SLAPD;

vim update-mdb-acl.ldif
dn: olcDatabase={1}mdb,cn=config changetype: modify replace: olcAccess olcAccess: to attrs=userPassword,shadowLastChange,shadowExpire by self write by anonymous auth by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by dn.exact="cn=readonly,ou=people,dc=kifarunix-demo,dc=com" read by * none olcAccess: to dn.exact="cn=readonly,ou=people,dc=kifarunix-demo,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none olcAccess: to dn.subtree="dc=kifarunix-demo,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by users read by * none

Simpan dan keluar dari file.

Perhatikan bahwa kami telah menyertakan kontrol akses untuk user Read Only Bind DN yang akan kami buat nanti dalam panduan ini.

Perbarui database ACL dengan informasi di atas dengan menjalankan perintah di bawah ini;

ldapadd -Y EXTERNAL -H ldapi:/// -f update-mdb-acl.ldif

Setelah selesai, Anda sekarang dapat, sebagai admin, membuat OU user seperti yang ditunjukkan di atas. Oleh karena itu, untuk memperbarui database dengan informasi OU user di atas, jalankan perintah di bawah ini;

ldapadd -Y EXTERNAL -H ldapi:/// -f users-ou.ldif
... adding new entry "ou=people,dc=kifarunix-demo,dc=com" adding new entry "ou=groups,dc=kifarunix-demo,dc=com"

Setelah Anda membuat wadah OU user, Anda sekarang dapat menambahkan akun user. Dalam demo ini, kami akan membuat user bernamajohndoe di database OpenLDAP kami.

vim johndoe.ldif
dn: uid=johndoe,ou=people,dc=kifarunix-demo,dc=com objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: johndoe cn: John sn: Doe loginShell: /bin/bash uidNumber: 10000 gidNumber: 10000 homeDirectory: /home/johndoe shadowMax: 60 shadowMin: 1 shadowWarning: 7 shadowInactive: 7 shadowLastChange: 0 dn: cn=johndoe,ou=groups,dc=kifarunix-demo,dc=com objectClass: posixGroup cn: johndoe gidNumber: 10000 memberUid: johndoe

Untuk menambahkan user johndoe ke database menggunakan informasi di atas, jalankan perintah di bawah ini;

ldapadd -Y EXTERNAL -H ldapi:/// -f johndoe.ldif
adding new entry "uid=johndoe,ou=people,dc=kifarunix-demo,dc=com" adding new entry "cn=johndoe,ou=groups,dc=kifarunix-demo,dc=com"

Mengatur Kata Sandi untuk Pengguna LDAP

Jika Anda perhatikan, di atas, kami tidak menetapkan password apa pun untuk user. Untuk mengatur/mengatur ulang password untuk user, jalankan perintah di bawah ini;

ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=johndoe,ou=people,dc=kifarunix-demo,dc=com"

Untuk memverifikasi password user;

ldapwhoami -h ldap.kifarunix-demo.com -x -D "uid=johndoe,ou=people,dc=kifarunix-demo,dc=com" -W

Jika passwordnya benar, Anda akan melihat DN user;

dn:uid=johndoe,ou=people,dc=kifarunix-demo,dc=com

Buat OpenLDAP BIND DN

Ada dua DN OpenLDAP BIND;

  • Administrator Bind DN: mendefinisikan nama user dan password admin. Ini hanya digunakan untuk menanyakan server direkto
    ri sehingga user ini harus memiliki hak istimewa untuk mencari direktori.
  • User Bind DN: mendefinisikan nama user user dan password digunakan untuk otentikasi dan operasi perubahan password.

Dalam demo ini, kami akan membuat user Bind DN yang dipanggil readonlyuntuk operasi baca.

Hasilkan hash password untuk user bind DN;

slappasswd
New password: password Re-enter new password: password {SSHA}qUwFrgsseX1ztrJ64wq63SNqGuSnLics

Copy hash di atas dan ganti dengan nilai di userPasswordbawah ini;

vim readonly-user.ldif
dn: cn=readonly,ou=people,dc=kifarunix-demo,dc=com objectClass: organizationalRole objectClass: simpleSecurityObject cn: readonly userPassword: {SSHA}qUwFrgsseX1ztrJ64wq63SNqGuSnLics description: Bind DN user for LDAP Operations

Tambahkan user bind ke database LDAP;

ldapadd -Y EXTERNAL -H ldapi:/// -f readonly-user.ldif
adding new entry "cn=readonly,ou=people,dc=kifarunix-demo,dc=com"

Tentukan kontrol akses untuk DN pengikatan user. Lihat apa yang kami miliki di file ACL kami di atas. Atau cukup jalankan perintah di bawah ini untuk memeriksa ACL yang ditentukan;

ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess

Izinkan Layanan OpenLDAP di Firewall

Jika UFW sedang berjalan, izinkan akses eksternal OpenLDAP (baik LDAP dan LDAPS);

ufw allow "OpenLDAP LDAP"
ufw allow "OpenLDAP LDAPS"

Otentikasi Melalui OpenLDAP Server

Instalasi dasar dan konfigurasi server OpenLDAP di Ubuntu 20.04 telah selesai. Yang dapat Anda lakukan sekarang adalah mengonfigurasi client Anda untuk mengautentikasi melalui OpenLDAP;

Ikuti tautan di bawah ini untuk mempelajari cara mengonfigurasi SSSD untuk otentikasi OpenLDAP di Ubuntu 20.04;

Konfigurasikan SSSD untuk Otentikasi LDAP di Ubuntu 20.04

Itu menandai akhir dari panduan kami tentang cara menginstal dan mengatur Server OpenLDAP di Ubuntu 20.04.

Tutorial Terkait

Instal dan Siapkan OpenLDAP di CentOS 8

Instal dan Konfigurasi Server OpenLDAP di Debian 9 Stretch

Siapkan Server OpenLDAP dengan SSL/TLS di Debian 10

Konfigurasikan SSSD untuk Otentikasi OpenLDAP di Ubuntu 18.04