Siapkan Alat Kata Sandi Layanan Mandiri LDAP di CentOS 8

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