2012. szeptember 12., szerda

OpenLDAP jelszóházirend Ubuntu 12.04-en - hatodik rész

Az előző alkalommal odáig jutottunk, hogy az OpenLDAP-ban tárolt felhasználóink jelszavainak be tudjuk állítani szinte mindenét: minimális-maximális hosszát, eltárolt és egy darabig újból meg nem adható jelszavaik számát, és azt, hogy figyelmeztessen a rendszerünk, ha a jelszó lejáróban van.
Mindez többnyire megy a Kerberos-jelszavak esetében is, a kivételt a már használt jelszavak tárolása képezi, ami a Kerberos man-oldala szerint nem megy, ha LDAP-backendet használunk. Mi meg azt használunk.

Azért azt meg tudjuk oldani, hogy a legutolsó jelszótól el kelljen térni, és így majdnem olyan, mint ha az utolsó egy jelszó tárolva volna.
A Kerberos-jelszavak házirendjének megvalósítása azért volt érdekes, mert a jelszószinkronizálásra használt OpenLDAP-overlay, az smbkrb5pwd akkor is megváltoztatja a jelszavakat (Kerberos, Samba), ha az OpenLDAP ppolicy overlay-e nem engedi az userPassword attribútum (azaz a Linux-jelszó) megváltoztatását. A Kerberos-házirendet ugyanis az admin jogkörű smbkrb5pwd sem minden esetben bírálhatja felül, és ilyenkor, ha az LDAP és a Kerberos házirend gyakorlatilag megegyezik, akkor a rossz (házirendnek meg nem felelő) jelszót az userPassword attribútum esetében a ppolicy, a Kerberos és a Samba esetében a Kerberos policy fogja blokkolni (szerencsére az smbkrb5pwd a Kerberos-jelszót változtatja meg először, és ha azon elhasal, akkor a Samba-jelszó megváltoztatásával nem is próbálkozik).
Már csak az a gond, hogy a Samba felől (azaz a Windows-ban történő jelszóváltoztatáskor) még érkezhet csúnya jelszó, és, minthogy a ppolicy overlay csak akkor dolgozik, ha a saját jelszavamat módosítom (más esetben én vagyok az admin, és az OpenLDAP ppolicy a házirendeket az admin felhasználók esetében nem kényszeríti), a Samba pedig egy "admin" fiókkal túrja az LDAP-ot, ez a jelszóváltás át is fog csúszni, legalábbis az userPassword attribútumba. Azaz a Samba esetében külön is szükség van házirendre.
Ez a házirend a pdbedit programmal valósítható meg. Az alábbiakban az itt olvasható ppolicy-val megvalósított házirendet közelítem, amin a Kerberos és az smbkrb5pwd hibái miatt itt némileg változtattunk. Az utasítások magyarázatához részint a cikk végén lévő hivatkozásokat, részint a man pdbedit parancsot ajánlom.
sudo pdbedit -P "min password length" -C 8
sudo pdbedit -P "bad lockout attempt" -C 3
sudo pdbedit -P "lockout duration" -C 5
sudo pdbedit -P "maximum password age" -C 3024000
sudo pdbedit -P "minimum password age" -C 3600
sudo pdbedit -P "password history" -C 1

Ha most változtatunk jelszót Windows-ból, és új jelszóként rövidet adunk meg (mondjuk: rum), akkor már a fentieknek kell látszódni a hibaüzenetben. És ha most megtesszük azt is, hogy a sambaPwdLastSet attribútumot átírjuk olyanra ((JELSZÓBEÁLLÍTÁS NAPJA - 1970.01.01)*24*60*60), hogy már a figyelmeztetési periódusban legyünk, akkor megkapjuk a figyelmeztetést. Ha a jelszavunk lejárt, akkor felszólít bennünket, hogy most azonnal változtassunk jelszót.
Hmmm. Mi az alapértelmezett OpenLDAP ppolicy-ban nem is engedtünk meg ilyesmit (mondjuk, majd kéne), hiszen ott a pwdGraceAuthNLimit értéke 0. Meg például kilenc nappal a lejárat előtt is szól már, hogy mindjárt lejár. Honnan is veszi ezeket az értékeket? Lásd az irodalom második linkjét.

Akkor már csak az van hátra, hogy a lejárati idő a Samba attribútumokban is rendesen változzon a jelszó beállításakor Ezt az smbkrb5pwd beállításai között kell megoldanunk. Íme az smbkrb5pwd_pwdMustChange.ldif fájl, ahol a szokásos öt hetes időt adom meg:
dn: olcOverlay={1}smbkrb5pwd,olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSmbKrb5PwdMustChange
olcSmbKrb5PwdMustChange: 3024000


Irodalom:
http://www.linuxtopia.org/online_books/network_administration_guides/samba_reference_guide/18_passdb_15.html
http://www.lockergnome.com/windows/2005/05/09/change-when-users-receive-the-password-expiration-notification-2kxp-pro2003/

Nincsenek megjegyzések: