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 h3>
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. p>
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