Instal dan Siapkan OpenLDAP di CentOS 8

Dalam panduan ini, kami memberikan tutorial langkah demi langkah tentang cara menginstal dan mengatur OpenLDAP di CentOS 8. Jika Anda di sini, maka Anda sudah tahu apa itu server OpenLDAP dan dengan demikian deskripsi tentang apa itu di luar cakupan ini tutorial.

Instal dan Siapkan OpenLDAP di CentOS 8

Nah, repositori CentOS 8 tidak memiliki OpenLDAP versi rilis terbaru. Versi OpenLDAP yang tersedia yang disediakan oleh CentOS 8 PowerTools repo, adalah server OpenLDAP v2.4.46. Untuk mendapatkan versi terbaru dengan perbaikan bug, Anda perlu membangunnya dari sumber seperti yang dijelaskan dalam panduan ini.

Anda mungkin ingin menggunakan alternatif lain untuk OpenLDAP seperti FreeIPA;

Instal dan Setup Server FreeIPA di CentOS 8

Jalankan Pembaruan Sistem

Untuk memperbarui paket sistem Anda, jalankan perintah;

dnf update

Instal Dependensi yang Diperlukan dan Bangun Alat

Ada cukup banyak dependensi dan alat pembangunan yang diperlukan untuk membangun dan mengkompilasi OpenLDAP dengan sukses dari sumbernya. Jalankan perintah di bawah ini untuk menginstalnya.

dnf install cyrus-sasl-devel make libtool autoconf libtool-ltdl-devel openssl-devel libdb-devel tar gcc perl perl-devel wget vim

Buat Akun Sistem OpenLDAP

Dalam demo ini, OpenLDAP akan berjalan dengan user sistem yang tidak memiliki hak istimewa. Oleh karena itu, jalankan perintah di bawah ini untuk membuat user sistem OpenLDAP dengan user khusus dan id grup;

useradd -r -M -d /var/lib/openldap -u 55 -s /usr/sbin/nologin ldap

Konsultasikan man useradduntuk deskripsi opsi command line yang digunakan di atas.

Download OpenLDAP Source Tarball

Rilis stabil terbaru OpenLDAP pada saat tulisan ini dibuat adalah OpenLDAP 2.4.48. Arahkan ke halaman downloadan OpenLDAP dan ambil tarball.

VER=2.4.48
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-$VER.tgz

Ekstrak Tarball Sumber OpenLDAP

Tarball dapat diekstraksi dengan menjalankan perintah;

tar xzf openldap-$VER.tgz

Kompilasi OpenLDAP

Untuk mengompilasi OpenLDAP pada CentOS 8, Anda harus terlebih dahulu menjalankan skrip konfigurasi untuk mengadaptasi OpenLDAP ke sistem Anda dan memeriksa apakah ada ketergantungan yang diperlukan sebelum Anda dapat melanjutkan instalasi.

cd openldap-$VER

Dengan skrip konfigurasi, Anda dapat mengaktifkan atau menonaktifkan berbagai opsi saat membangun OpenLDAP.

./configure --prefix=/usr --sysconfdir=/etc --disable-static  --enable-debug --with-tls=openssl --with-cyrus-sasl --enable-dynamic  --enable-crypt --enable-spasswd --enable-slapd --enable-modules  --enable-rlookups --enable-backends=mod --disable-ndb --disable-sql  --disable-shell --disable-bdb --disable-hdb --enable-overlays=mod

Untuk mempelajari lebih lanjut tentang opsi konfigurasi, lihat;

./configure --help

Jika skrip konfigurasi selesai tanpa masalah, baris terakhir yang akan Anda lihat adalah;

Please run "make depend" to build dependencies

Seperti yang dinyatakan oleh baris, Anda perlu menjalankan make dependperintah untuk membangun dependensi OpenLDAP.

make depend

Selanjutnya, kompilasi OpenLDAP pada CentOS 8.

make

Jika Anda punya waktu dan kesabaran, Anda dapat menjalankan rangkaian pengujian untuk memverifikasi build OpenLDAP dari error apa pun. Namun Anda dapat melewati langkah ini.

make test

Menginstal OpenLDAP di CentOS 8

Jika kompilasi OpenLDAP berhasil diselesaikan, lanjutkan untuk menginstalnya dengan menjalankan perintah;

make install

File konfigurasi OpenLDAP sekarang diinstal pada /etc/openldap.

ls /etc/openldap/
certs ldap.conf ldap.conf.default schema slapd.conf slapd.conf.default slapd.ldif slapd.ldif.default

Pustaka dipasang di bawah /usr/libexec/openldap.

Mengonfigurasi OpenLDAP pada CentOS 8

Sekarang setelah penginstalan OpenLDAP selesai, lanjutkan untuk mengonfigurasinya.

Buat data OpenLDAP dan direktori database

mkdir /var/lib/openldap /etc/openldap/slapd.d

Tetapkan kepemilikan dan izin yang tepat pada direktori OpenLDAP dan file konfigurasi.

chown -R ldap:ldap /var/lib/openldap
chown root:ldap /etc/openldap/slapd.conf
chmod 640 /etc/openldap/slapd.conf

Buat Layanan Sistem OpenLDAP

Untuk menjalankan OpenLDAP sebagai service, Anda perlu membuat file service systemd seperti yang ditunjukkan di bawah ini.

vim /etc/systemd/system/slapd.service
[Unit] Description=OpenLDAP Server Daemon After=syslog.target network-online.target Documentation=man:slapd Documentation=man:slapd-mdb [Service] Type=forking PIDFile=/var/lib/openldap/slapd.pid Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///" Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d" ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS [Install] WantedBy=multi-user.target

Simpan dan keluar dari file service. Do not run the service yet.

Buat Skema OpenLDAP SUDO

Untuk mengonfigurasi LDAP dengan support sudo, pertama, periksa apakah versi sudo Anda yang diinstal mendukung LDAP.

sudo -V | grep -i "ldap"

Jika sudo mendukung LDAP, Anda akan melihat baris di bawah ini;

... ldap.conf path: /etc/sudo-ldap.conf ldap.secret path: /etc/ldap.secret

Periksa apakah skema sudo LDAP tersedia.

rpm -ql sudo | grep -i schema.openldap
/usr/share/doc/sudo/schema.OpenLDAP

Copy schema.OpenLDAPke direktori skema.

cp /usr/share/doc/sudo/schema.OpenLDAP /etc/openldap/schema/sudo.schema

Selanjutnya, Anda perlu membuat file ldif skema sudo. Jalankan perintah di bawah ini untuk membuat sudo.ldiffile. File ldif ini diperoleh dari repositori Lullabot github.

cat << 'EOL' > /etc/openldap/schema/sudo.ldif dn: cn=sudo,cn=schema,cn=config objectClass: olcSchemaConfig cn: sudo olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo (deprecated)' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.6 NAME 'sudoRunAsUser' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.7 NAME 'sudoRunAsGroup' DESC 'Group(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ description ) ) EOL

Perbarui Basis Data SLAPD

Edit file SLAPD LDIF, /etc/openldap/slapd.ldif, dan perbarui sebagai berikut;

mv /etc/openldap/slapd.ldif /etc/openldap/slapd.ldif.bak
vi /etc/openldap/slapd.ldif
dn: cn=config objectClass: olcGlobal cn: config olcArgsFile: /var/lib/openldap/slapd.args olcPidFile: /var/lib/openldap/slapd.pid dn: cn=schema,cn=config objectClass: olcSchemaConfig cn: schema dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/libexec/openldap olcModuleload: back_mdb.la include: file:///etc/openldap/schema/core.ldif include: file:///etc/openldap/schema/cosine.ldif include: file:///etc/openldap/schema/nis.ldif include: file:///etc/openldap/schema/inetorgperson.ldif include: file:///etc/openldap/schema/ppolicy.ldif include: file:///etc/openldap/schema/sudo.ldif dn: olcDatabase=frontend,cn=config objectClass: olcDatabaseConfig objectClass: olcFrontendConfig olcDatabase: frontend olcAccess: to dn.base="cn=Subschema" by * read olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none dn: olcDatabase=config,cn=config objectClass: olcDatabaseConfig olcDatabase: config olcRootDN: cn=config olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
  • Untuk memperbarui database SLAPD dari informasi yang diberikan pada file SLAPD LDIF di atas, gunakan slapaddperintah dengan opsi -n 0yang membuat database pertama.
  • Untuk menentukan direktori konfigurasi, /etc/openldap/slapd.d, gunakan opsi -F dan pilihan -l untuk menentukan lokasi file LDIF di atas.

Sebelum Anda dapat menulis perubahan ke database, lakukan uji coba kering untuk melihat apa yang akan terjadi. Lulus-u pilihan untuk perintah slapadd.

slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif -u

Jika perintah di atas dijalankan tanpa error, terapkan perubahannya.

slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif

Perintah ini membuat konfigurasi database slapd di bawah /etc/openldap/slapd.ddirektori.

ls /etc/openldap/slapd.d
'cn=config' 'cn=config.ldif'

Setel kepemilikan user dan grup /etc/openldap/slapd.ddirektori dan file di dalamnya ke ldap user.

chown -R ldap:ldap /etc/openldap/slapd.d

Menjalankan Layanan SLAPD

Reload konfigurasi systemd dan mulai serta aktifkan service OpenLDAP untuk berjalan saat boot.

systemctl daemon-reload
systemctl enable --now slapd

Periksa statusnya;

systemctl status slapd
● slapd.service - OpenLDAP Server Daemon Loaded: loaded (/etc/systemd/system/slapd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2019-12-07 12:10:52 EST; 6s ago Docs: man:slapd man:slapd-mdb Process: 14975 ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS) Main PID: 14976 (slapd) Tasks: 2 (limit: 5061) Memory: 3.0M CGroup: /system.slice/slapd.service └─14976 /usr/libexec/slapd -u ldap -g ldap -h ldap:/// ldapi:/// ldaps:/// -F /etc/openldap/slapd.d

Konfigurasikan OpenLDAP Logging di CentOS 8

Untuk mengaktifkan OpenLDAP untuk mencatat koneksi, operasi, statistik hasil, membuat dan file ldif dan memperbarui database sebagai berikut. Logging OpenLDAP tersebut diaktifkan pada  tingkat log  256 dengan kata kunci stats dengan memodifikasi  olcLogLevel atribut seperti yang ditunjukkan di bawah ini.

vim enable-ldap-log.ldif
dn: cn=config changeType: modify replace: olcLogLevel olcLogLevel: stats
ldapmodify -Y external -H ldapi:/// -f enable-ldap-log.ldif
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectClass=olcGlobal)" olcLogLevel -LLL -Q
dn: cn=config olcLogLevel: stats

Konfigurasikan Rsyslog untuk mengaktifkan OpenLDAP untuk masuk ke file tertentu. Secara default, OpenLDAP masuk ke  local4 fasilitas.

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

Mulai ulang Rsyslog

systemctl restart rsyslog

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

Buat DN Root Default OpenLDAP

Selanjutnya, buat database MDB yang mendefinisikan root DN serta daftar kontrol akses.

Pertama, buat password DN root.

slappasswd
New password: ENTER PASSWORD Re-enter new password: RE-ENTER PASSWORD {SSHA}qAZah0xybYLcMfPUAN0SG4ki8JxC4bIF

Rekatkan hash password yang dihasilkan di atas sebagai nilai olcRootPW dalam file Root DN ldif di bawah ini.

vim rootdn.ldif

Ganti komponen domain, dc=ldapmaster,dc=kifarunix-demo,dc=comdengan nama Anda yang sesuai.

dn: olcDatabase=mdb,cn=config objectClass: olcDatabaseConfig objectClass: olcMdbConfig olcDatabase: mdb olcDbMaxSize: 42949672960 olcDbDirectory: /var/lib/openldap olcSuffix: dc=ldapmaster,dc=kifarunix-demo,dc=com olcRootDN: cn=admin,dc=ldapmaster,dc=kifarunix-demo,dc=com olcRootPW: {SSHA}5Hcgjj4gtcr/exLcdSRuYgH6bFhIqkSe olcDbIndex: uid pres,eq olcDbIndex: cn,sn pres,eq,approx,sub olcDbIndex: mail pres,eq,sub olcDbIndex: objectClass pres,eq olcDbIndex: loginShell pres,eq olcDbIndex: sudoUser,sudoHost pres,eq 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.subtree="ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com" read by * none olcAccess: to dn.subtree="ou=system,dc=ldapmaster,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=ldapmaster,dc=kifarunix-demo,dc=com" by dn.subtree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by users read by * none

Baca lebih lanjut tentang ACL di Kontrol Akses OpenLDAP.

Memperbarui database slapd dengan konten di atas;

ldapadd -Y EXTERNAL -H ldapi:/// -f rootdn.ldif

Konfigurasikan OpenLDAP dengan SSL/TLS

Untuk mengamankan komunikasi OpenLDAP antara client dan server, konfigurasikan untuk menggunakan sertifikat SSL/TLS.

Dalam panduan ini, kami adalah sertifikat yang ditandatangani sendiri. Anda dapat memilih untuk mendapatkan sertifikat yang ditandatangani secara komersial dan tepercaya dari CA pilihan Anda, untuk lingkungan produksi.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout  /etc/pki/tls/ldapserver.key -out /etc/pki/tls/ldapserver.crt
chown ldap:ldap /etc/pki/tls/{ldapserver.crt,ldapserver.key}

Perbarui atribut sertifikat OpenLDAP Server TLS.

vi add-tls.ldif
dn: cn=config changetype: modify add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt

Perhatikan bahwa kami telah menggunakan sertifikat yang ditandatangani sendiri sebagai sertifikat dan sertifikat CA.

ldapadd -Y EXTERNAL -H ldapi:/// -f add-tls.ldif

Anda dapat mengonfirmasi ini dengan menjalankan;

slapcat -b "cn=config" | grep olcTLS
olcTLSCACertificateFile: /etc/pki/tls/ldapserver.crt olcTLSCertificateKeyFile: /etc/pki/tls/ldapserver.key olcTLSCertificateFile: /etc/pki/tls/ldapserver.crt

Ubah lokasi sertifikat CA di /etc/openldap/ldap.conf.

vim /etc/openldap/ldap.conf
... #TLS_CACERT /etc/pki/tls/cert.pem TLS_CACERT /etc/pki/tls/ldapserver.crt

Buat DN Basis OpenLDAP

Selanjutnya, buat DN dasar Anda atau basis pencarian untuk menentukan struktur dan direktori organisasi Anda.

vim basedn.ldif

Ganti komponen domain dan unit organisasi yang sesuai.

dn: dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: dcObject objectClass: organization objectClass: top o: Kifarunix-demo dc: ldapmaster dn: ou=groups,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: organizationalUnit objectClass: top ou: groups dn: ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: organizationalUnit objectClass: top ou: people
ldapadd -Y EXTERNAL -H ldapi:/// -f basedn.ldif

Buat Akun Pengguna OpenLDAP

Anda dapat menambahkan user ke server OpenLDAP Anda. Buat file ldif untuk mendefinisikan user Anda sebagai berikut.

vim users.ldif
dn: uid=johndoe,ou=people,dc=ldapmaster,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=ldapmaster,dc=kifarunix-demo,dc=com objectClass: posixGroup cn: johndoe gidNumber: 10000 memberUid: johndoe

Tambahkan user ke database OpenLDAP.

ldapadd -Y EXTERNAL -H ldapi:/// -f users.ldif

Mengatur password untuk Pengguna LDAP

Untuk mengatur password untuk user di atas, jalankan perintah di bawah ini;

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

Buat OpenLDAP Bind DN dan Bind DN User

Bind DN user digunakan untuk melakukan operasi LDAP seperti menyelesaikan ID Pengguna dan ID grup. Dalam panduan ini, kami membuat DN pengikatan yang disebut system. Perhatikan kontrol akses yang terkait dengan ou ini seperti yang didefinisikan pada root DN di atas.

Mencantumkan daftar kontrol Access di database;

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

Buat password user BindDN.

slappasswd
New password: Password Re-enter new password: Password {SSHA}Z7qPE2f8oRfHMo1DSbzdOqbr4jNgqBpC

Rekatkan nilai hash password di atas sebagai nilai userPassword atribut dalam file di bawah ini;

vim bindDNuser.ldif
dn: ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: organizationalUnit objectClass: top ou: system dn: cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com objectClass: organizationalRole objectClass: simpleSecurityObject cn: readonly userPassword: {SSHA}Z7qPE2f8oRfHMo1DSbzdOqbr4jNgqBpC description: Bind DN user for LDAP Operations
ldapadd -Y EXTERNAL -H ldapi:/// -f bindDNuser.ldif

Izinkan Layanan OpenLDAP di Firewall

Untuk mengizinkan client jarak jauh menanyakan server OpenLDAP, izinkan: ldap (389 UDP/TCP)dan ldaps(636 UDP/TCP) service di firewall.

firewall-cmd --add-service={ldap,ldaps} --permanent
firewall-cmd --reload

Menguji Otentikasi OpenLDAP

Nah, itu dia. Anda telah mempelajari cara menginstal dan menyiapkan server OpenLDAP di CentOS 8. Untuk memverifikasi bahwa user benar-benar dapat terhubung ke sistem melalui server OpenLDAP, Anda perlu mengonfigurasi client OpenLDAP pada sistem jarak jauh.

Perhatikan bahwa Anda juga dapat menggunakan phpLDAPadmin untuk mengelola dan mengelola OpenLDAP Anda. Pelajari cara menginstal phpLDAPadmin di CentOS 8.

Instal phpLDAPadmin di CentOS 8

Dalam panduan berikutnya, kita akan belajar cara menginstal dan mengatur client OpenLDAP di CentOS 8.

Ingin mengonfigurasi OpenLDAP untuk memberikan hak SUDO kepada client Anda? periksa tautan di bawah ini;

Cara Mengonfigurasi SUDO melalui OpenLDAP Serve r

Sementara itu, Anda dapat melihat panduan kami yang lain di OpenLDAP dengan mengikuti tautan di bawah ini;

Cara Membuat Grup Anggota OpenLDAP

Konfigurasikan SSSD untuk Otentikasi Client OpenLDAP di Debian 10/9

Siapkan Server OpenLDAP dengan SSL/TLS di Debian 10

Instal dan Konfigurasikan server OpenLDAP di Fedora 29

Konfigurasikan Client OpenLDAP di Debian 9 Stretch

Instal dan Konfigurasi Server OpenLDAP di Debian 9 Stretch

Referensi:

Kompilasi OpenLDAP 2.4.48

Membangun dan Menginstal Perangkat Lunak OpenLDAP