Panduan ini akan memandu Anda tentang cara menyiapkan Alat Kata Sandi Layanan Mandiri LDAP di CentOS 8. Jika Anda memiliki user yang mengautentikasi terhadap direktori LDAP, Anda mungkin ingin mereka dapat mengatur ulang password mereka sendiri. Alat Kata Sandi Layanan Mandiri adalah aplikasi PHP yang memberi Anda kemampuan ini. Ini mendukung sejumlah direktori LDAPv3 termasuk OpenLDAP, OpenDS, ApacheDS, 389 DS, RHDS dan bahkan MicroSoft AD.
Siapkan Alat Kata Sandi Layanan Mandiri LDAP di CentOS 8
Dalam demo ini, kami menggunakan OpenLDAP sebagai direktori otentikasi kami. Karena itu, pastikan Anda memiliki server OpenLDAP yang sedang berjalan sebelum Anda dapat melanjutkan. Anda dapat merujuk ke tautan di bawah ini untuk mengatur OpenLDAP di CentOS 8.
Instal dan Siapkan OpenLDAP di CentOS 8
Jalankan Pembaruan Sistem
Pastikan paket sistem Anda mutakhir.
dnf update
Instal Alat Kata Sandi Layanan Mandiri LDAP di CentOS 8
Pada tulisan ini, Self Service Password versi 1.3 adalah rilis stabil saat ini.
Dalam demo ini, kami menggunakan PHP 7.3 yang disediakan oleh repo Remi. Oleh karena itu lanjutkan sebagai berikut;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Setel ulang modul PHP 7.2.
dnf module reset php
Aktifkan repo PHP 7.3 Remi;
dnf module enable php:remi-7.3
Selanjutnya, instal alat Kata Sandi Layanan Mandiri dengan menjalankan perintah di bawah ini;
dnf localinstall http://ltb-project.org/archives/self-service-password-1.3-1.el7.noarch.rpm
Ketika diinstal, menginstal PHP dan modul yang diperlukan termasuk dependensi lain seperti server web Apache.
Selanjutnya, instal php-mcrypt yang diperlukan untuk fungsi kriptografi.
dnf install php-mcrypt vim
Jika Anda perlu menggunakan fungsionalitas surat saat mengatur ulang password, maka Anda memerlukan modul surat dan sesi PHP.
Mengonfigurasi Alat Kata Sandi Layanan Mandiri LDAP
Setelah instalasi, lanjutkan untuk mengkonfigurasi alat Kata Sandi Layanan Mandiri.
SSP membuat file konfigurasi Apache default, /etc/httpd/conf.d/self-service-password.conf.
Edit file ini dan buat perubahan yang sesuai.
cp /etc/httpd/conf.d/self-service-password.conf{,.old}
vim /etc/httpd/conf.d/self-service-password.conf
Rekatkan konten berikut ke dalam file konfigurasi making any appropriate changes.
<VirtualHost *> ServerName ssp.kifarunix-demo.com DocumentRoot /usr/share/self-service-password DirectoryIndex index.php AddDefaultCharset UTF-8 Alias /ssp /usr/share/self-service-password <Directory /usr/share/self-service-password> AllowOverride None Require all granted </Directory> <Directory /usr/share/self-service-password/scripts> AllowOverride None Require all denied </Directory> LogLevel warn ErrorLog /var/log/httpd/ssp_error_log CustomLog /var/log/httpd/ssp_access_log combined </VirtualHost>
Simpan dan keluar dari file konfigurasi.
Atur Parameter Umum SSP
File konfigurasi default untuk SSP adalah, /usr/share/self-service-password/conf/config.inc.php.
Untuk memulainya, buat file konfigurasi lokal, config.inc.local.php, untuk memungkinkan Anda mengganti konfigurasi asli dan menghindari penggantian pengaturan Anda karena peningkatan versi.
cp /usr/share/self-service-password/conf/config.inc{,.local}.php
Buka file konfigurasi untuk diedit.
vim /usr/share/self-service-password/conf/config.inc.local.php
Jika Anda memeriksa file konfigurasi asli, /usr/share/self-service-password/conf/config.inc.php, Anda akan melihat bahwa ada bagian pengaturan konfigurasi yang berbeda, misalnya AD, SAMBA, MAIL, SMS, dll. Dalam konfigurasi khusus kami, config.inc.local.php, kami telah menghapus bagian ini secara bertahap.
Konfigurasikan detail koneksi Server LDAP. Be sure to replace the values to match your environment settings.
# LDAP $ldap_url = "ldap://ldapmaster.kifarunix-demo.com"; $ldap_starttls = false; $ldap_binddn = "cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com"; $ldap_bindpw = "[email protected]"; $ldap_base = "dc=ldapmaster,dc=kifarunix-demo,dc=com"; $ldap_login_attribute = "uid"; $ldap_fullname_attribute = "cn"; $ldap_filter = "(&(objectClass=posixAccount)($ldap_login_attribute={login}))";
Di bawah opsi konfigurasi bayangan;
# Shadow options - require shadowAccount objectClass # Update shadowLastChange $shadow_options['update_shadowLastChange'] = true; $shadow_options['update_shadowExpire'] = true; # Default to -1, never expire. 60 means password expires in 60 days. $shadow_options['shadow_expire_days'] = 60;
Tentukan skema hashing sandi sebelum dikirim ke server LDAP.
# auto scheme gets the current password value and find the hash. It also requires read access to the password. $hash = "auto";
Konfigurasikan Kebijakan Kata Sandi
$pwd_min_length = 12; $pwd_max_length = 15; $pwd_min_lower = 1; $pwd_min_upper = 1; $pwd_min_digit = 1; $pwd_min_special = 1; $pwd_special_chars = "^a-zA-Z0-9"; $pwd_no_reuse = true; $pwd_diff_login = true; $pwd_complexity = 1; $use_pwnedpasswords = false;
... $pwd_show_policy = "always"; $pwd_show_policy_pos = "above"; $who_change_password = "user"; $use_change = true;
Ubah nilai Keyphrase menjadi sesuatu yang acak dan panjang;
$keyphrase = "7rRy0}96#4E7#kzb%:,25X}c&66rU";
Konfigurasi kami terlihat seperti di bawah ini tanpa komentar;
less /usr/share/self-service-password/conf/config.inc.local.php
<?php $debug = false; $ldap_url = "ldap://ldapmaster.kifarunix-demo.com"; $ldap_starttls = false; $ldap_binddn = "cn=readonly,ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com"; $ldap_bindpw = "[email protected]"; $ldap_base = "dc=ldapmaster,dc=kifarunix-demo,dc=com"; $ldap_login_attribute = "uid"; $ldap_fullname_attribute = "cn"; $ldap_filter = "(&(objectClass=posixAccount)($ldap_login_attribute={login}))"; $shadow_options['update_shadowLastChange'] = true; $shadow_options['update_shadowExpire'] = true; $shadow_options['shadow_expire_days'] = 60; $hash = "auto"; $hash_options['crypt_salt_prefix'] = "$6$"; $hash_options['crypt_salt_length'] = "6"; $pwd_min_length = 12; $pwd_max_length = 15; $pwd_min_lower = 1; $pwd_min_upper = 1; $pwd_min_digit = 1; $pwd_min_special = 1; $pwd_special_chars = "^a-zA-Z0-9"; $pwd_no_reuse = true; $pwd_diff_login = true; $pwd_complexity = 1; $use_pwnedpasswords = false; $pwd_show_policy = "always"; $pwd_show_policy_pos = "above"; $who_change_password = "user"; $use_change = true; $change_sshkey = false; $change_sshkey_attribute = "sshPublicKey"; $who_change_sshkey = "user"; $notify_on_sshkey_change = false; $use_questions = true; $answer_objectClass = "extensibleObject"; $answer_attribute = "info"; $crypt_answers = true; $use_tokens = true; $crypt_tokens = true; $token_lifetime = "3600"; $keyphrase = "7rRy0}96#4E7#kzb%:,25X}c&66rU"; $show_help = true; $lang = "en"; $allowed_lang = array(); $show_menu = true; $logo = "images/kifarunix-logo.png"; $background_image = "images/unsplash-space.jpeg"; $login_forbidden_chars = "*()&|"; $default_action = "change"; ?>
Telusuri seluruh file konfigurasi dengan mengacu pada Dokumentasi dan buat perubahan yang sesuai agar sesuai dengan lingkungan Anda.
Setelah selesai dengan pengaturan, simpan dan keluar dari file konfigurasi.
Pastikan bahwa user memiliki izin untuk memperbarui password mereka di server OpenLDAP. Misalny
a, ini adalah contoh Daftar Kontrol Akses di database server openLDAP kami.
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase=mdb)' olcAccess
dn: olcDatabase={1}mdb,cn=config olcAccess: {0}to attrs=userPassword by self write by anonymous auth by dn.subt ree="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by dn.su btree="ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com" read by * none olcAccess: {1}to attrs=shadowLastChange,shadowExpire by self write by dn.subtr ee="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by dn.sub tree="ou=system,dc=ldapmaster,dc=kifarunix-demo,dc=com" read by * none...
Instal Sertifikat SSL/TLS
Dalam demo ini, kami menggunakan LDAP melalui SSL. Oleh karena itu, kita perlu menginstal sertifikat CA untuk memvalidasi koneksi ke server LDAP. Untuk mengdownload sertifikat CA dari server, jalankan perintah di bawah ini;
openssl s_client -connect ldapmaster.kifarunix-demo.com:636 -showcerts < /dev/null | openssl x509 -text | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Copy sertifikat…
-----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIUMJkYu/S+fQbyGjUOLsMoar6owfowDQYJKoZIhvcNAQEL BQAwdzELMAkGA1UEBhMCS0UxDDAKBgNVBAgMA05haTEMMAoGA1UEBwwDTmFpMRcw...... kqkfQw96SLItvsAXpeosfYkH6uEG36svqAJ6rzxZcJzl3OTrUZnFX3OOsmFeHupC Qxv7gjfE5jqdD6iQR0cohGLpaA== -----END CERTIFICATE-----
… dan rekatkan pada file tertentu, misalnya /etc/ssl/certs/cacert.pem.
Setelah itu, perbarui /etc/openldap/ldap.conffile untuk menentukan jalur ke file sertifikat CA yang didownload di atas.
vim /etc/openldap/ldap.conf
... #TLS_CACERT /etc/pki/tls/cert.pem TLS_CACERT /etc/ssl/certs/cacert.pem...
Simpan dan keluar dari file.
Ubah kepemilikan /usr/share/self-service-passworddirektori menjadi apache.
chown -R apache:apache /usr/share/self-service-password
Verifikasi sintaks konfigurasi Apache.
httpd -t
Mulai ulang dan aktifkan Apache untuk berjalan pada boot sistem.
systemctl restart httpd
systemctl enable httpd
Buka port 80 di firewalld.
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
Konfigurasikan Kebijakan SELinux
Jika SELinux sedang berjalan, jalankan perintah di bawah ini untuk mengizinkan alat Kata Sandi Layanan Mandiri untuk mengubah password user.
Izinkan httpd terhubung ke jaringan.
setsebool -P httpd_can_network_connect 1
Izinkan httpd terhubung ke ldap
setsebool -P httpd_can_connect_ldap 1
Selesaikan entri passwd user langsung dari ldap
setsebool -P authlogin_nsswitch_use_ldap 1
Untuk memungkinkan sistem berjalan dengan NIS.
setsebool -P nis_enabled 1
Mengakses SSP dari Browser
Anda sekarang dapat mengakses alat password Layanan Mandiri Anda dari browser menggunakan url, http://<server-hostname-OR-IP.
Untuk mendemonstrasikan cara mereset password, kami akan menggunakan user demo di database OpenLDAP kami;
ldapsearch -Y EXTERNAL -H ldapi:/// -b "ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com" "(objectClass=posixAccount)" "(uid=*)"-Q -LLL
dn: uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com...
Untuk memenuhi kebijakan password yang ditentukan, ini adalah contoh password yang digunakan, N#rAvImVosh3. Perhatikan jika Anda juga telah menetapkan kebijakan sandi di database backend OpenLDAP, pastikan bahwa kebijakan yang ditentukan di SSP cocok dengan kebijakan backend.
Jika password diterima, Anda akan melihat hasilnya, Your password was Changed.
Anda juga dapat memverifikasi password yang sama di OpenLDAP Anda;
ldapwhoami -x -H ldapi:/// -D "uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com" -W
Enter LDAP Password: N#rAvImVosh3 dn:uid=johndoe,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
Jika password tidak cocok, Anda akan mendapatkan output;
ldap_bind: Invalid credentials (49)
Jika Anda telah menerapkan kebijakan sandi di backend OpenLDAP dengan atribut yang pwdCheckQualitydisetel nilainya 2, sandi mungkin masih gagal dalam pemeriksaan kualitas. Dalam hal ini, atur nilai atribut ini ke 1.
Ini dia. Anda telah berhasil menginstal dan mengatur Alat Kata Sandi Layanan Mandiri LDAP di CentOS 8. Anda, user, sekarang dapat dengan nyaman mengatur ulang password mereka.
Referensi
Dokumentasi Kotak Alat LDAP Kata Sandi Layanan Mandiri
Panduan Terkait Lainnya
Siapkan Server OpenLDAP dengan SSL/TLS di Debian 10
Konfigurasikan SSSD untuk Otentikasi Client OpenLDAP di Debian 10/9
Cara Membuat Grup Anggota OpenLDAP
Konfigurasikan SSSD untuk Otentikasi OpenLDAP di CentOS 8