LDAP ToolBox Self Service Password

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 26. aprill 2026, kell 10:58 kasutajalt Imre (arutelu | kaastöö) (→‎Misc)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)
Mine navigeerimisribaleMine otsikasti

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

Fail:Ltb-ssp.gif

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

Kasulikud lisamaterjalid