Windows - Duplikált biztonsági azonosítók (SIDs) keresése és megszüntetése

A Windows 2000/XP biztonsági modelljében miden felhasználónak, csoportnak vagy számítógépnek létezik egy egyedi biztonsági azonosítója (SID). Az erőforrásokhoz való hozzáférés ezzel történik, ami növeli a rendszer egészének biztonságát. Mint írtuk az azonosítók egyediek, akkor mégis hogy lehet hogy duplikált azonosítókról beszélünk? A gyakorlat azt mutatja, hogy lehet, sőt a Windows beépített eszközt tartalmaz felkutatásukra és eltávolításukra.
Minden biztonsági fiók el van látva egy egyedi biztonsági azonosítóval (Security Identifier - SID). Biztonsági fióknak nevezzük a felhasználói fiókokat, csoportokat és számítógépeket. Az erőforrásokhoz (fájlok, mappák, nyomtatók, levelezési fiókok, stb.) való hozzáférés során a SID azonosítja a fiókot és nem a neve vagy jelszava, bár a felhasználói felület felé a név jelenik meg. Érvényes ez minden esetben, ha Active Directory tartományról vagy a Windows 2000 biztonsági modelljéről van szó. Minden SID két fő részre osztható: fejlécre és relatív azonosítóra. Utóbbinak szintén két része van, az egyik az adott tartományt azonosítja, a másik pedig magát az objektumot. Az Active Directory-ban minden tartományvezérlő képes biztonsági objektumokat létrehozni, de csak egy a RID-master (RID = Relative Identifier) jogosult a SID-ek kiosztására. Ez azért van, mert ha minden tartományvezérlő a beépített algoritmusnak megfelelően osztogatná az azonosítókat, akkor rövid időn belül keletkezne két egyforma, ami hibát jelent a biztonsági rendszerben. Szélsőséges esetben, sok egyforma azonosító a teljes rendszer összeomlásához vezet. A tartományvezérlők kapnak egy SID készletet, amit az általuk létrehozott új - és ez fontos, hogy csak az új - objektumok számára kioszthatnak. Így, ha a RID-master egy ideig nem elérhető, akkor sincs baj. Alapértelmezésben RID-master a tartomány elsőként telepített tartományvezérlője (Primary Domain Controller - PDC). Ha a tartományvezérlők a SID készletük 80%-át már kiosztották, akkor új készletet igényelnek.
Jogos a kérdés, hogy akkor hogy lehet, hogy mégis keletkeznek duplikált SID-ek? A RID-master időszakos kiesése előtt a szerepkör átadódik egy másik tartományvezérlőnek (a rendszergazda átadja), majd visszaálláskor ha egy replikációs cikluson belül két másik tartományvezérlőről is fut be kérés, mindkettő megkaphatja ugyanazt a soron következő készletet. Ennek az esélye nem elhanyagolható és erre az Active Directory fejlesztői is gondoltak, amikor megalkották az NTDSUTIL.EXE nevű parancssori alkalmazást. Segítségével különböző karbantartási feladatokat lehet végrehajtani a címtári adatbázisban, többek között a duplikált biztonsági azonosítók megkeresését és megszüntetését.
Indítsunk el az egyik tartományvezérlőn egy parancssori ablakot és írjuk be:
ntdsutil
Ezzel beléptünk egy interaktív üzemmódba, itt csak a saját parancskészletét fogadja el. A ? beírásával és az ENTER billentyű leütésével lehet kilistázni az adott üzemmódban kiadható parancsokat a melléjük csatolt rövid magyarázattal együtt. Írjuk be:
security account management
Most a biztonsági azonosítók kezelésének üzemmódjában vagyunk. A következő lépésben csatlakozni kell a RID-master tartományvezérlőhöz.
connect to server servername
Ahol a "servername" a tartományvezérlő DNS neve vagy IP címe. Most következik a duplikált azonosítók keresése a következő utasítással:
check duplicate sid
Az eredményt nem a képernyőn fogjuk látni, hanem a futtató felhasználó profiljában megjelenő DUPSID.LOG nevű fájlban. Ha például a rendszergazda indította a keresést és az operációs rendszer a c:\ meghajtón található, akkor a c:\Documents and Settings\rendszergazda\dupsid.log fájlt keressük. A kapott eredmény mentes a sallangoktól, amennyiben nincsenek duplikált SID-ek, a fájl 0 bájt hosszúságú és ennek megfelelően üres. Interaktív üzemmódból a "q" betű és az ENTER billentyű kétszeri lenyomásával tudunk kilépni.
Duplikált SID-ek megszüntetése
Lépjünk be ismét az NTDSUTIL interaktív üzemmódjába és elsőkét ismét a biztonsági azonosítók karbantartása menüt kell választanunk:
security account management
Majd csatlakozzunk a RID-master kiszolgálóhoz:
connect to server servername
Végül hajtsuk végre a tisztítást:
cleanup duplicate sid
Az eredményt ismét a DUPSID.LOG fájlban láthatjuk.
A fenti utasítások parancssorból egyetlen utasításként is kiadhatók, lehetővé téve batch fájlban való elhelyezésüket vagy programból történő meghívásukat:
ntdsutil "security account management" "connect to server servername" "check duplicate sid" "q" "q"
Továbbá:
ntdsutil "security account management" "connect to server servername" "cleanup duplicate sid" "q" "q"