Idő szinkronizálása Windows 2000 erdőben
A nagyfokú szinkronizáció jelen esetben – az alapértelmezést
feltételezve – 5 perc maximális eltérést enged meg. Ezt az értéket a
csoport-házirenden keresztül módosíthatjuk, ha szükséges. A [Computer
Configuration/Windows Settings/Security Settings/Account Policies/Kerberos
Policy] útvonalon található Maximum
tolerance for computer clock synchronization beállítást kell keresnünk.
Hogy
miért van szükség erre az időszinkronizálásra? Azért, hogy a lehetséges
„replay attack” típusú támadásokat megakadályozhassuk.
Mint
tudjuk a kerberos hitelesítés jegyekkel operál, mely jegyek tartalmazzák a
munkaállomás (vagy kiszolgáló, mert a kiszolgáló is lehet ügyfele egy másik
kiszolgálónak) aktuális idejét is. Lehetséges, hogy egy unatkozó felhasználó
a hálózati forgalmat monitorozva elfog egy-egy ilyen jegyet és megpróbálja
újrahasznosítani bizonyos erőforrások elérésére. A tartományvezérlők a
fent említett paraméternek megfelelő ideig a beérkező jegyeket tárolják
és ha ugyanazzal a jeggyel találkoznak, akkor természetesen visszautasítják
a kérést. Ha a jegyben jelzett munkaállomás idő (local time) és a kiszolgáló
aktuális ideje (target time) között
az eltérés nagyobb mint 5 perc, akkor szintén elutasításra kerül a kérés.
Látható tehát, hogy szinkronizálás
nélkül nincs felhasználó-hitelesítés, sőt a címtár többszörözése
sem működik, hiszen a tartományvezérlőknek is hitelesíteniük kell magukat
egymás előtt. Lássuk hát hogyan történik a szinkronizálás.
Windows
Time Service
A
Windows 2000 egy Windows Time (W32Time) elnevezésű szolgáltatással van felvértezve,
mely az IETF RFC 1769-ben rögzítetteknek megfelelő Simple Network Time
Protokol (SNTP) kiszolgáló. E szolgáltatás a tartományba léptetett gépeken
automatikusan indul. A szolgáltatásnak
két üzemmódja van: NT5DS és NTP. Az NT5DS beállítás esetén a gép a címtár-hierarchiát
használja a szinkronizálás során (később részletezem hogy hogyan), az NTP
esetben pedig az általunk definiált SNTP
kiszolgálókat részesíti előnyben. Hogy éppen melyik szerint működik az
kiolvasható a [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\W32Time\Parameters\type] kulcs értékéből. (A továbbiakban említett
regisztrációs kulcsok ezen az elérési útvonalon találhatóak.)
Az
NTP beállítást önálló gépek idejének SNTP kiszolgálóhoz történő
szinkronizálására használhatjuk, csak engedélyeznünk kell a szolgáltatás
automatikus indítását (Services konzol), illetve be kell állítanunk a a kívánt
SNTP kiszolgálókat. Ez utóbbit a következő utasítással tehetjük meg:
net time \\gépnév
/SETSNTP:”IP-cím1 IP-cím2 IP-címN”
Az
éppen aktuális beállításokat pedig a
net
time \\gépnév /QUERYSNTP
utasítással
kérdezhetjük le. A SETSNTP kapcsoló hatására a korábban említett type regisztrációs kulcs értéke NTP-re változik és létrejön
egy új kulcs ntpserver néven, mely
tartalmazza az SNTP kiszolgálók címét/nevét. A QUERYSNTP kapcsoló e kulcs
értékét kérdezi le. Mindenképpen érdemes több SNTP kiszolgálót is
megadni, így hibatűrővé tehetjük az időszinkronizálást. Ha szeretnénk
visszaváltani az alapértelmezés szerinti NT5DS módra, akkor használjuk a
SETSNTP kapcsolót paraméter nélkül. (A gépnév paraméter elhagyható, ha a
lokális gépről van szó.)
Ha
alkalmi jelleggel szeretnénk óránkat
szinkronizálni, akkor nem kell futtatnunk a Windows Time szolgáltatást és
használhatjuk a
net
time \\timesource /SET /Y
vagy
net
time /DOMAIN:tartománynév vagy
w32tm.exe
–once
utasítások
valamelyikét. Az első esetben óránk a \\timesource gép órájához lesz
igazítva, a második esetben a megadott tartomány PDC emulátorához, a
harmadik esetben pedig a SETSNTP kapcsolónál megadott SNTP kiszolgálók egyikéhez.
A net time utasítás használatához nincsen szükség NTP kiszolgálóra,
ugyanis ilyenkor RPC hívásokra kerül sor. A w32tm.exe-vel kapcsolatban pedig
érdemes még megemlíteni, hogy ez valójában a Windows Time szolgáltatás
alkalmazásként futtatható változata, és vannak olyan hasznos kapcsolói,
mint például a period, amellyel megadható, hogy milyen rendszerességgel szeretnénk
szinkronizálni. Természetesen van ennek megfelelő regisztrációs kulcs is,
melyet a szolgáltatás használ.
Az
NTP eset tárgyalása után vizsgáljuk meg mi történik az NT5DS típusú időszinkronizáció
során.
Címtár-hierarchia
alapján történő szinkronizálás (NT5DS)
Mint
említettem az NT5DS időszinkronizáció esetén a gépek a címtár-hierarchiát
követik. Hogy ez pontosan mit jelent azt a következő ábra mutatja be. Az ábrán
a PDC a PDC emulátor tartományvezérlőt, a DC egy tetszőleges tartományvezérlőt,
a WKS egy munkaállomást jelképez. A nyilak az időforrástól a szinkronizáló
gép felé mutatnak.
Látható, hogy tartományon belül minden munkaállomás
és tagkiszolgáló az hitelesítéstt végző tartományvezérlőt tekinti időforrásnak.
A tartományvezérlők ugyanezt a PDC emulátorról, a szülőtartomány egy
tartományvezérlőjéről, vagy egymásról (ha a ReliableTimeSource
kulcs értéke 1) feltételezik. A gyerektartományban lévő PDC emulátor a szülő
valamely tartományvezérlőjéhez fordul és így tovább, míg el nem jutunk a
gyökér-tartomány PDC emulátorához, melyet az erdő hiteles időforrásának
tekintünk (authoritative time source). E tartományvezérlő alapértelmezés
szerint az erdő elsőként telepített tartományvezérlője, hacsak át nem
adtuk a PDC emulátor szerepet utólag másik gépnek. A gyökér PDC emulátorának
több külső NTP kiszolgálót kell megadni (a korábban említett módon, pl:
time.kfki.hu), mely NTP kiszolgálók valamelyikéhez fogja szinkronizálni az
óráját.
A nem PDC tartományvezérlők a következő sorrend
szerint választják ki az időforrásukat a lehetséges esetek közül:
-
Szülő tartomány telephelyen (site) belüli tartományvezérlője (ReliableTimeSource=1)
-
Telephelyen belüli tartományvezérlő (ReliableTimeSource=1)
-
Szülő tartomány telephelyen belüli tartományvezérlője
-
Telephelyen belüli PDC emulátor
-
Szülő tartomány telephelyen kívüli tartományvezérlője (ReliableTimeSource=1)
-
Telephelyen kívüli tartományvezérlő (ReliableTimeSource=1)
-
Szülő tartomány telephelyen kívüli tartományvezérlője
-
Telephelyen kívüli tartományvezérlő
Hogy az egyes gépek milyen rendszerességgel
szinkronizálják óráikat a kijelölt vagy választott időforráshoz azt a period
kulcs értéke határozza meg, melynek típusa lehet REG_DWORD vagy REG_SZ. Az
első esetben a napi szinkronizálások számát adhatjuk meg egész számként,
a második esetben előre definiált karakterlánc konstansokat szerepeltethetünk
(BiDaily, TriDailiy, TriDaily, Weekly, SpecialSkew, DailySpecialSkew).
Az
alapértelmezés a SpecialSkew,
melynek jelentése a következő. Szinkronizáljunk 8 óránként. Ha a lokális
gép és az időforrás órája közötti eltérés kisebb, mint 2 másodperc (órák
szinkronban), akkor minden rendben. Ha az eltérés nagyobb, akkor felezzük a
periódust mindaddig míg el nem érjük a
a 45 percet vagy helyreáll a szinkron. Ha sikeres a szinkronizálás,
akkor duplázza a periódust egészen a 8 óra eléréséig. Tehát 45 perc és
8 óra között dinamikusan változhat a szinkronizálás periódusa. Ha a munkaállomás
órája késik vagy 2 percnél többet siet, akkor azonnali szinkronizálás történik.
Ha 2 percnél kevesebbet siet, akkor a következő 20 percben lassítja a
Windows Time szolgáltatás a rendszerórát.
Azt hogy egy Windows 2000-et futtató
gép SNTP kiszolgáló is egyben a LocalNTP kulcs értéke határozza meg (1
esetén SNTP). Tartományvezérlők még a LocalNTP 0 értékénél is SNTP
kiszolgálóként működnek, ez a beállítás csak a munkaállomásokra és
tagkiszolgálókra van hatással.
Remélem sikerült szétoszlatnom a
Windows 2000 időszinkronizálását körülvevő ködöt. Aki vegyes környezetben
(NT 4+ W2K) szeretné használni a tárgyalt szolgáltatást annak javaslom a
felsorolt források végigböngészését.
Nagy Artúr Róbert (artur.robert.nagy@wsh.hu)
Források:
-
MS Knowledge Base: Q224799, Q216734, Q224799,
Q223184
-
Windows NT Magazine www.winntmag.com
|