LDAP ToolBox Self Service Password: erinevus redaktsioonide vahel
(→Misc) |
|||
| 217. rida: | 217. rida: | ||
* https://github.com/ltb-project/self-service-password |
* https://github.com/ltb-project/self-service-password |
||
* https://self-service-password.readthedocs.io/en/stable/ |
* https://self-service-password.readthedocs.io/en/stable/ |
||
| − | |||
| − | ===Misc=== |
||
| − | |||
| − | <pre> |
||
| − | #!/bin/bash |
||
| − | |||
| − | # Use a wildcard to target your small files |
||
| − | FILES=( tekst-*.txt ) |
||
| − | |||
| − | # 1. Generate MD5 hashes and extract only the hash part |
||
| − | # 2. Sort them and find unique values |
||
| − | UNIQUE_HASHES=$(md5sum "${FILES[@]}" | awk '{print $1}' | sort -u | wc -l) |
||
| − | |||
| − | # An accountant's check: if unique hashes = 1, all files are the same. |
||
| − | if [ "$UNIQUE_HASHES" -eq 1 ]; then |
||
| − | echo "All ${#FILES[@]} files are identical." |
||
| − | else |
||
| − | echo "Files are DIFFERENT. Found $UNIQUE_HASHES unique versions." |
||
| − | fi |
||
| − | </pre> |
||
Viimane redaktsioon: 26. aprill 2026, kell 10:58
Sissejuhatus
LDAP ToolBox http://ltb-project.org/ Self Service Password (LTB SSP) on veebipõhine PHP keeles programmeeritud tarkvara, mille abil saab kasutaja ise oma LDAP kataloogis asuva konto, nt AD, parooli vahetada. Käesolev tekst kirjeldab juhtumit eeldusel, et kasutaja teab enda töötavat parooli. Kasutaja peab ise otsustama, kas seda teenust sobib kasutada avalikus internetis.
Tarkvara paigaldamine ja seadistamine
LTB Self Service Password programmi kasutamiseks on vajalik
- LDAP server (nt Active Directory), kus asuvad kontod, mille paroole muudatakse
- Apache + PHP rakendusserver
- PHP LDAP tugi
LDAP serveri ettevalmistamine
Viisakas on kui LDAP serveris on üks LTB SSP rakendusega seotud tavakasutaja, nt (First Name väärtuseks ltb_pwdchange jne)
cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee
LDAP klienti kasutamise ettevalmistamine
Enne LTB SSP rakenduse juurutamist võiks veenduda, et üldse üle LDAP õnnestub AD'ga suhelda, nt öelda
$ ldapsearch -x -H ldap://ad-z1.sise.moraal.ee -D "cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee" \ -w parool -b "dc=sise,dc=moraal,dc=ee"
Seejärel, et LDAPS toimib, üldiselt tuleb serveri sertifikaat (või CA juurikas) paigutada /etc/ldap/ldap.conf failist viidatud faili
# cat /etc/ldap/ldap.conf .. TLS_CACERT /etc/ldap/zentyal.pem
ning seejärel peab töötama
$ ldapsearch -x -H ldaps://ad-z1.sise.moraal.ee -D "cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee" \ -w parool -b "dc=sise,dc=moraal,dc=ee"
Veebiserveri ettevalmistamine
Apache ja PHP paigaldatakse tavalisel viisil, lähtepunktiks võiks olla töötav https://imool.org/ aadressil asuv veebikoht
# apt-get install apache2 php5-ldap
LTB SSP rakenduse paigaldamine
Tundub, et LTB SSP rakendust jagatakse lisaks tavalisele .tar.gz ka .deb faili kujul. .tar.gz arhiiv sobib pakkida lahti veebijuurikasse kataloogi ltb, failide omanik:grupp peab erinema veebiserveri omadest.
LBT SSP rakenduse seadistamine
LBT SSP seadistused asuvad seadistusfailis conf/config.inc.php.
LDAP ühendus
Esmalt maksab seadistada vaid LDAP ühendus ja veenduda, et andmevahetus on võimalik, st saab kasutaja parooli edukalt muuta
# LDAP
$ldap_url = "ldaps://ad-z1.sise.moraal.ee";
$ldap_binddn = "cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee";
$ldap_bindpw = "parool";
$ldap_base = "dc=sise,dc=moraal,dc=ee";
$ldap_login_attribute = "mail";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
$ad_mode = true;
..
kus
- TODO
Lisaks tuleks parooli valikule seadistada piirangu, nt
$ad_options['force_unlock'] = true; $pwd_min_length = 8; $pwd_max_length = 40; $pwd_min_lower = 1; $pwd_min_upper = 1; $pwd_min_digit = 1;
kus
- TODO
ning lülitada välja vajadusel kõik muu peale toimiva parooli vahetamise
$use_questions = false; $use_tokens = false; $use_sms = false;
Maksab tähelepanelikult tutvuda, milliste LDAP sissekannetega filter tegeleb, nt
$ ldapsearch -x -H ldap://ad-z1.sise.moraal.ee -D "cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee" \ -w parool -b "dc=sise,dc=moraal,dc=ee" \ "(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(objectClass=computer)))" | grep ^dn dn: CN=Priit Kask,OU=Kaasik,DC=sise,DC=moraal,DC=ee dn: CN=Mart Kask,OU=Kaasik,DC=sise,DC=moraal,DC=ee dn: CN=Tiit Kuusik,OU=Kuusik,DC=sise,DC=moraal,DC=ee ...
Kuna AD LDAP sissekandes endas puudub info Organization Unit kohta, siis ei saa seda filtris kasutada. Küll aga saab näiteks lisaks välja jätta parooli muutmise juures soovi korral mingitele tunnustele vastavaid kasutajaid, nt lisades filtrile
(!(givenName=Imre))
CAPTCHA kasutamine
captcha kasutamiseks sobib aadressil https://www.google.com/recaptcha/ registreerida kasutaja ning conf/config.inc.php failis kasutada sarnaseid ridu, küllap see on parem kui mitte midagi
.. $use_recaptcha = true; $recaptcha_publickey = "6LcgXhoTAAAAAKjjlVBoGOOM155juFJeSINxz0ff"; $recaptcha_privatekey = "6LcgXhoTAAAAAMJJE5vcY0Wr-_RRKf4hgtf-x87G";
Tarkvara kasutamine
Kasutajale paistab enne paroolivahetust selline pilt
Ja ega seal midagi väga erinevat ka peale paroolivahetust näha pole.
2026 aasta kevade märkused
docker kasutamine
docker compose kasutamiseks sobib
name: p_ltb
services:
svc_ltb:
image: docker.io/ltbproject/self-service-password:latest
environment:
- TZ=Europe/Tallinn
ports:
- '80:80'
container_name: cn_ltb
networks:
- nw_ltb
volumes:
- '/srv/ltb/volume/var/www/conf/config.inc.local.php:/var/www/conf/config.inc.local.php'
networks:
nw_ltb:
name: nw_ltb
driver: bridge
kus
- TODO
ning abiks võib olla
root@dh-post:~# docker exec -ti cn_tlb apt-get install ldap-utils
ning
# cat /srv/ltb/volume/var/www/conf/config.inc.local.php
<?php // My SSP configuration
$ldap_url = "ldap://192.168.10.125";
$ldap_binddn = "cn=ltb_pwdchange,ou=Teenuskontod,dc=sise,dc=moraal,dc=ee";
$ldap_bindpw = "bindingparool";
$ldap_base = "dc=sise,dc=moraal,dc=ee";
// $ldap_login_attribute = "uid";
// $ldap_fullname_attribute = "cn";
// $ldap_filter = "(&(objectClass=person)($ldap_login_attribute={login}))(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
// $ldap_filter = "(&(objectClass=user)(sAMAccountName={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
$ldap_filter = "(&(objectClass=user)(mail={login})(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
// $ldap_filter = "(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(objectClass=computer)))";
$ad_mode = true;
$keyphrase = "mysecretfraas;
$debug = true;
$show_help = false;
$use_sms = false;
$use_questions = false;
$use_tokens = false;
// --- Complexity Rules ---
$pwd_min_length = 14; // The "Accountant's" minimum for 2026
$pwd_max_length = 32;
$pwd_min_lower = 1; // At least one lowercase
$pwd_min_upper = 1; // At least one uppercase
$pwd_min_digit = 1; // At least one number
$pwd_min_special = 1; // At least one special character (!@#$% etc)
$pwd_complexity = 4; // Require all 4 classes above
// --- Block "Lazy" Passwords ---
$pwd_no_reuse = true; // Don't let them reuse the old password
$pwd_diff_login = true; // Don't allow password to contain the username
$pwd_forbidden_chars = ""; // Add specific bad chars if needed
$display_footer = false;
$use_ratelimit = true;
$use_captcha = true;
$captcha_class = "InternalCaptcha";
kus
- parooli keerukusele nõuete kehtestamine
- capthca kasutamine
- versiooni info jms esitamise väljalülitamine
- kasutusjuhule mitte-vajaliku funktsionaalsuse väljalülitamine