Password filter pro synchronizaci hesel mezi doménou MS Windows a CzechIdM

Pokud ve firmě používáte několik vzájemně propojených informačních systémů, je příjemné na nich hesla synchronizovat tak, aby každý uživatel měl jediné heslo, kterým se přihlašuje na všech systémech.

CzechIdM umožňuje uživateli, aby si změnil hesla na všech napojených systémech. Jak ale zajistit synchronizaci, když si uživatel změní heslo na svém účtu v doméně MS Windows, přesněji MS Active Directory? Řešením je password filter neboli filtr hesel, který při změně hesla automaticky zahájí proces, kterým se hesla synchronizují.

Zatímco při změně hesla (respektive hesel) v CzechIdM uživatel explicitně zadává žádost o změnu na připojených systémech, na Windows probíhá synchronizace automaticky v okamžiku, kdy si uživatel změní heslo.

pwdsync-idm-win

Synchronizace hesel v CzechIdM a ve Windows

Proces synchronizace

Jak dokáže password filter změnit hesla na všech napojených systémech? Samozřejmě prostřednictvím CzechIdM, se kterým komunikuje přes webovou službu, kterou CzechIdM poskytuje.

Proces změny hesel probíhá v několika krocích. Když uživatel zadá požadavek na změnu hesla, odešle se do CzechIdM nejprve žádost o schválení změny. CzechIdM zvaliduje navrhované heslo proti své vlastní politice hesel (minimální počet znaků, typy znaků apod.) a pošle odpověď zpět do Windows. Je-li změna zamítnuta, uživateli se zobrazí chybová hláška, která ho informuje, že zadané heslo nevyhovuje bezpečnostním požadavkům a uživatel musí zadat jiné heslo. Pokud nové heslo vyhovuje politice CzechIdM a zároveň i politice samotného systému Windows, je úspěšně změněno. V tom případě se odešle do CzechIdM notifikace o provedené změně a CzechIdM v reakci na ní změní hesla ve všech ostatních koncových systémech. Protože jsou po síti posílány citlivé údaje, je síťová komunikace zabezpečena protokolem SSL.

schema

Proces synchronizace

Co je vlastně password filter?

Password filter sám o sobě je DLL knihovna, která po nainstalování komunikuje s operačním systémem. Operační systém, přesněji proces Local Security Authority, který na Windows spravuje hesla, volá funkce password filteru v okamžiku, kdy si uživatel mění heslo. Password filter poskytuje tři exportované funkce:

  • InitializeChangeNotify – Tato funkce je volána při startu systému a dá se použít například pro kontrolu, že password filter je správně nainstalován. Pro synchronizaci hesel není důležitá.
  • PasswordFilter – Tato funkce je volána v okamžiku, kdy si uživatel mění heslo. Jejími parametry jsou uživatelské jméno a nové heslo. Funkce provede kontrolu hesla (pošle heslo ke kontrole do CzechIdM) a vrátí na výstup boolovskou hodnotu true v případě schválení, false v případě zamítnutí změny.
  • PasswordChangeNotify – Tato funkce je zavolána po úspěšně provedené změně hesla. Odešle do CzechIdM informaci o provedené změně.

Local Security Authority tedy při žádosti o změnu hesla nejdříve zavolá funkci PasswordFilter. Poté, je-li změna hesla schválena, zapíše nové heslo do Security Accouns Manageru, což je soubor, který na Windows slouží jako úložiště hesel. Nakonec, je li změna hesla úspěšně provedena, zavolá Local Security Authority funkci PasswordChangeNotify.

schema2

Komunikace mezi OS a password filterem

Instalace

Nyní si ukážeme, jak password filter nainstalovat. Je potřeba provést tyto čtyři kroky:

  1. Zkopírovat password filter do systémového adresáře
  2. Zaregistrovat password filter v registrech
  3. Povolit vynucování politky hesel
  4. Restartovat systém

Zkopírování password filteru do systémového adresáře

Při standardní instalaci je cesta k systémovému adresáři C:\Windows\System32, případně se dá jeho umístění zjistit v Environment Variables. Do tohoto adresáře je potřeba zkopírovat jednak samotný password filter a jednak adresář s konfiguračním souborem a SSL certifikátem. Password filter očekává adresář s konfiguračním souborem ve stejném adresáři, jako je sám. Upozorňuji, že adresář s konfiguračním souborem je záležitost našeho password filteru pro CzechIdM, nikoliv password filterů obecně.

dllFile2

dir

Úprava registrů

Otevřete editor registrů (regedit.exe). Password filtery jsou registrovány v klíči HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa v Multi-String hodnotě Notification Packages. Do této hodnoty přidejte název password filteru bez koncovky .dll. Stávající hodnoty nemažte. Je možné zaregistrovat i více password filterů zároveň. V tom případě bude nové heslo validováno postupně všemi filtery a ke změně dojde, pokud ji schválí všechny.

regedit1

regedit2

Povolení vynucování politiky hesel

Vynucování politiky hesel je nastavení, které určuje, jestli se při změně hesel mají password filtery vůbec používat. Je možné se k němu proklikat více způsoby. Jednou z možností je Control panel -> Administrative Tools -> Local Security Policy -> Password Policy. Položku Password must meet complexity requirements nastavte na enabled.

winsettings1

winsettings2

winsettings3

Restart systému

Restart je nutný, protože operační systém přiřazuje password filtery procesu Local Security Authority podle registrů při startu systému. Stejně tak je nutné systém restartovat pro odstranění password filteru.

Konfigurace

Adresář PasswordFilterCzechIdM je úložiště pro konfigurační soubor PasswordFilterCzechIdM.ini, SSL certifikát v PEM formátu a logovací soubor FilterLog.txt. V konfiguračním souboru je možné nastavit následující atributy:

  • url – Cílová adresa, na které běží webová služba CzechIdM
  • cert – Cesta k SSL certifikátu pro autentizaci serveru.
  • checkWorkflow – Název workflow v CzechIdM pro kontrolu politiky hesel.
  • changeWorkflow – Název workflow v CzechIdM pro změnu hesel na koncových systémech.
  • resource – Identifikátor koncového systému. Nepovinný údaj. CzechIdM s ním může naložit jak chce, například vynechat tento koncový systém ze seznamu systmů, ve kterých změní heslo.
  • changeInIdM – Přepínač určující, jestli se má heslo změnit i v CzechIdM. Hodnoty true/false.
  • loginName – Přihlašovací jméno uživatele CzechIdM s oprávněním měnit hesla ostatním uživatelům (admin).
  • loginPassword – Heslo uživatele loginName pro přihlášení do CzechIdM přes webovou službu.
  • sslSkipHostCheck – Přepínač určující, jestli se má přeskočit kontrola SSL certifikátu serveru poskytujícího webovou službu proti doménovému jménu, pod kterým běží. Tato možnost existuje pro testování na testovacím serveru, který běží na jiné doméně, než produkční server. Hodnoty true/false.

Možná vás překvapilo, že je v konfiguračním souboru napsáno heslo uživatele, který může v CzechIdM měnit hesla ostatním uživatelům. Nemůže ho někdo ukrást a zneužít? Odpověď zní, že nemůže. Je nutné si uvědomit, že password filter je nainstalován na doménovém řadiči (serveru) Active Directory, na kterém jsou uloženy i ostatní citlivé informace a ke kterému má přístup pouze autorizovaný administrátor. Běžní uživatelé mají přístup pouze ke klientským stanicím.

Konfigurační soubor tedy může vypadat například takto:

konfigurak

Závěr

Dnes jsem popsal, jak se dá password filter použít pro synchronizaci hesel, jak proces synchronizace probíhá a jak se password filter instaluje a konfiguruje. Jsou to informace, které by měly stačit běžnému uživateli nebo administrátorovi, aby si o password filteru udělal obrázek. Co když ale budu chtít takový password filter naprogramovat – jak se to dělá a co k tomu budu potřebovat? To je téma, které rozeberu zase příště.

Pokud vás můj článek zaujal nebo vás zajímá téma password filterů, kontaktujte mě na jakub.tomek@bcvsolutions.eu.