Nem tudom mennyien akarnak vagy épp kényszerülnek arra, hogy Active Directory-t használjanak. Active Directory-ba léptetett gépek esetében viszonylag egyszerűen tudjuk a felhasználóknak elérhetővé tenni, hogy jelszavukat meg tudják változtatni. Viszont mi a helyzet akkor, ha a felhasználók nem közvetlenül használják az Active Directory-t? Ha csak egy alkalmazást használnak, ami Active Directory-ból azonosít?
3rd party alkalmazások és AD
Örökös probléma, hogy egy 3rd party alkalmazás mit tehessen az AD-vel és mit nem. Természetesen a helyes megoldás, ha olvasáson kívül nem hagyjuk az alkalmazást érvényesülni az Active Directory-nk által.
Akkor viszont, valamilyen külön réteget kell biztosítanunk, hogy a felhasználóink tudják resetelni a jelszavukat igény esetén.
Itt jön a kérdés tehát, hogy és akkor mi fogja ezt lehetővé tenni nekünk? Hagyjuk az AD-t direktbe valahogy kommunikálni a felhasználókkal? Kizárt!
Nem tudom ilyen célra mit ajánl maga a Microsoft. Jómagam sajnos nem találtam igazán biztonságos és brand megoldást. Így úgy döntöttem, valamilyen egyszerű de Linux alapú interface-t fogok keresni.
Linux Web Service Password
Sok gagyi, vagy nem működő, vagy általam fel se fogható módon működő eszközt találtam. Végül egy PHP alapú megoldás tetszett meg annyira, hogy ki is próbáljam. Én egy UBUNBU alapú apache2 rendszerre telepítettem.
A telepítő készlet, (ami gyakorlatilag a PHP kód) elérhető RPM, DEB és tar.gz formában is.
A telepítéssel a szükséges file-k nálam a /usr/share/self-service-password/ folder alá kerültek.
Most már csak két dolgunk van. Először is a PHP konfigurációs állományát beállítani, és létrehozni egy virtualhost-ot, amin elérhetővé válik a kód.
Kezdjük a Konfigurációval
Szerkesszük meg a következő file-t.
# vi /usr/share/self-service-password/conf/config.inc.php
# Adjuk meg az AD címét. Ügyeljünk, hogy AD esetén csak LDAPS címet fogad el.
$ldap_url = „ldaps://192.168.132.1”;
# Adjuk meg a felhasználó adatait, akivel a tool authentikalni fog.
$ldap_binddn = „cn=passadmin,cn=users,dc=test,dc=hu”;
$ldap_bindpw = „NagyonTitkos12#$/”;
# A Bade DN, hol keresni fog a tool
$ldap_base = „dc=test,dc=hu”;
# Ezek az elemek már AD-hez lettek beállítva. Amennyiben AD-t használunk, úgy ezekhez ne nyuljunk.
$ldap_login_attribute = „uid”;
$ldap_fullname_attribute = „cn”;
$ldap_filter = „(&(objectClass=user)(sAMAccountName={login}))”;
# Kapcsoljuk be az AD módot.
$ad_mode = true;
$ad_options[‘force_unlock’] = true;
$ad_options[‘force_pwd_change’] = false;
$samba_mode = false;
$shadow_options[‘update_shadowLastChange’] = false;
$hash = „clear”;
# Állíthatunk be tetszőleges Password Policy-t. Ügyeljünk arra, hogyha van az AD-ben is policy. Akkor annál gyengébbet ne fogadjon el, mert az hibához fog vezetni.
$pwd_min_length = 6;
$pwd_max_length = 12;
$pwd_min_lower = 1;
$pwd_min_upper = 1;
$pwd_min_digit = 1;
$pwd_min_special = 0;
$pwd_special_chars = „^a-zA-Z0-9”;
$pwd_no_reuse = true;
$pwd_complexity = 0;
$pwd_show_policy = „always”;
$pwd_show_policy_pos = „above”;
$who_change_password = „manager”;
$use_questions = false;
$answer_objectClass = „extensibleObject”;
$answer_attribute = „info”;
$use_tokens = true;
$crypt_tokens = true;
$token_lifetime = „3600”;
$mail_attribute = „mail”;
$mail_from = „password-change@test.hu”;
$notify_on_change = true;
$use_sms = false;
$sms_attribute = „mobile”;
$smsmailto = „{sms_attribute}@service.provider.com”;
$smsmail_subject = „Provider code”;
$sms_message = „{smsresetmessage} {smstoken}”;
$sms_token_length = 6;
$show_help = true;
$lang =”hu”;
$logo = „style/xorplogo.png”;
$debug = false;
$keyphrase = „HihetetlenTitkosEzaJELSZO1234!”;
$reset_request_log = „/usr/share/self-service-password/log/self-service-password.log”;
$login_forbidden_chars = „*()&|”;
$use_recaptcha = true;
$recaptcha_publickey = „6Lct6gdsgdsAACPQDXQgdgfdsE_AGwdsadasa0gzrHt”;
$recaptcha_privatekey = „6Lct6NgSAsdfsdh565fsg32NsQl8v1NOFsBYKt39”;
$recaptcha_theme = „black”;
$recaptcha_ssl = true;
$default_action = „sendtoken”;
A tool hihetetlen sok azonosítási módra képes. Tud SMS-t küldeni. Email-ben token segítségével azonosítani magunkat. Ebből azt használhatjuk, amit csak akarunk. A fenti csak egy példa beállítás, amivel nekem működő megoldást sikerült összehoznom egy Windows 2008 R2 64bit AD-vel. Természetesen, ha nem akarjuk, hogy floodolhassák ezt az interface-t. Használhatunk Captcha megoldást is. Ezt is támogatja a tool. Csak regisztráljunk a google szolgáltatásába, és adjuk meg a titkos kódjainkat.
Virtual host definiálása
Nem kívánok nagyon belemenni, de álljon itt egy példa virtualhost, minden féle extra specifikáció, és magyarázat nélkül.
<VirtualHost *:80>
ServerName passreset.test.hu
DocumentRoot /usr/share/self-service-password/
DirectoryIndex index.php
ErrorDocument 404 /error.html
</VirtualHost>
Hogy is néz ez ki?
Amennyiben ez megvan, már is használható a webes interface. Az oldalt behozva hasonló képekkel kell találkoznunk.
Ahogy említettem számtalan módon azonosíthatjuk a felhasználókat. A legolcsóbbnak és leghatásosabbnak nekem az EMAIL – TOKEN megoldás hatott.
Ebben az esetben csak egy felhasználónevet és email cím párost kell megadnunk, és az email címre egy speciális token lesz elküldve. Persze nem fogad el akármilyen jelszót az interface. Csak azt az email címet, ami a felhasználónévhez az AD-ben el van tárolva. Csak arra küldi el a token-t.
Amikor megérkezik a levél, akkor a linkre kattintva a felhasználó automatikusan az új jelszó bekérő oldalra ugrik. Itt megadja a beállított policy-nak megfelelő jelszavát, és kész is!
Viszonylag szép, teljes mértékben testre szabható, biztonságos és kevés erőforrást igénylő megoldás Linuxra. Kell ennél jobb?
Nagyon jó…és hasznos! A cikk nemkülönben :)