Elementy GPO, czyli Group Policy Objects, cz. II

GPO w akcji

Opublikowano: 23 października 2007
Zawartość strony
Ustawienia domyślneUstawienia domyślne
Okresowe odświeżanie Okresowe odświeżanie
Przetwarzanie CSE Przetwarzanie CSE
Asynchroniczne stosowanie GPO Asynchroniczne stosowanie GPO
Śladami GPO Śladami GPO
Przeczytaj pozostałe części tego artykułuPrzeczytaj pozostałe części tego artykułu

Ustawienia domyślne

Domyślnie wykonanie ustawień zawartych w GPO inicjowane jest zawsze po stronie klienta (nie serwera!). Gdy konieczne z jakiś powodów jest zaingerowanie w ten domyślny mechanizm, niezbędne jest nieco więcej dodatkowych działań, takich jak np. http://support.microsoft.com/default.aspx?scid=kb;en-us;556027&sd=rss&spid=3198. Dlatego tak ważne jest, by klient mógł się do tego GPO dostać, w czym na pewno okaże się pomocne otwarcie od strony serwera na ewentualnej zaporze sieciowej odpowiednich portów, związanych z następującymi protokołami:

ICMP

RPC

LDAP

SMB

W przypadku systemu klienckiego Vista jest tu pewien wyjątek od reguły. Ponieważ system ten w celu wykrywania wolnego łącza nie bazuje już na protokole ICMP, tylko na mechanizmie o nazwie NLA (ang. Network Local Awareness) ICMP nie jest już wymagane. W każdym jednakże systemie należy jeszcze pamiętać o tym, by obecna struktura DNS była poprawnie skonfigurowana. Najpopularniejszym błędem popełnianym na tym polu w domenie, jest bez wątpienia brak ustawionego adresu IP kontrolera w konfiguracji DNS klienta.

Proces przetwarzania GPO może być zapoczątkowany:

w przypadku GPO dotyczących komputera poprzez restart komputera,

w przypadku GPO dotyczących użytkownika poprzez zalogowanie się użytkownika,

w obu przypadkach poprzez wydanie komendy gpupdate.

Do początku stronyDo początku strony

Okresowe odświeżanie

Istnieje również cykl tzw. okresowego odświeżania GPO w określonych odstępach czasu (określony domyślnie dla kontrolerów domeny co 5 minut i dla pozostałych stacji co 90 minut, plus losowo określony przedział czasu z zakresu 0-30 minut). Vista dzięki wspomnianemu powyżej mechanizmowi NLA potrafi odpowiednio zareagować w sytuacji, gdy przyszedł czas odświeżenia GPO, lecz kontroler domeny w tym momencie nie był dostępny dla klienta. W takim przypadku, gdy NLA określi, że przywrócono połączenie, nastąpi odświeżenie GPO. Lecz jak już zostało wspomniane, nastąpi to tylko wtedy, gdy dany cykl odświeżania GPO został pominięty.

By opisane mechanizmy odświeżania mogły jednakże mieć miejsce, musi istnieć coś, co wyzwala te procesy. W Vista dzieje się to za pośrednictwem dedykowanej usługi o nazwie Group Policy Client. Usługa ta zastąpiła w tym zakresie wcześniej wykorzystywany proces Winlogon.

Usługa ta koordynuje cały proces przekazując następnie resztę działań w ręce wspomnianych już wcześniej tzw. CSE. CSE, czyli Client Side Extensions, które są dynamicznymi bibliotekami odpowiedzialnymi za realizacje ustawień zawartych w konkretnych grupach GPO. Każda z nich jest powiązana z klasami ID przyporządkowanymi do poszczególnych grup ustawień. Dostępne CSE w Vista przedstawia tabelka poniżej.

Tabela 1. CSE dostępne w systemie Windows Vista
ID klasyNazwa ustawieńBiblioteka dll

25537BA6-77A8-11D2-9B6C-0000F8080861

Folder Redirection

fdeploy.dll

35378EAC-683F-11D2-A89A-00C04FBBCFA2

Administrative Templates Extension

userenv.dll

3610EDA5-77EF-11D2-8DC5-00C04FA31A66

Disk Quotas

dskquota.dll

426031C0-0B47-4852-B0CA-AC3D37BFCB39

QoS Packet Scheduler

gptext.dll

42B5FAAE-6536-11D2-AE5A-0000F87571E3

Scripts

gptext.dll

827D319E-6EAC-11D2-A4EA-00C04F79F83A

Security

scecli.dll

A2E30F80-D7DE-11d2-BBDE-00C04F86AE3B

Internet Explorer branding

iedkcs32.dll

B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A

EFS Recovery

scecli.dll

C6DC5466-785A-11D2-84D0-00C04FB169F7

Software Installation

appmgmts.dll

E437BC1C-AA7D-11D2-A382-00C04F991E27

IP Security

gptext.dll

C631DF4C-088F-4156-B058-4375F0853CD8

Offline files

cscobj.dll

8A28E2C5-8D06-49A4-A08C-632DAA493E17

Deployed printer connections

gpprnext.dll

B587E2B1-4D59-4e7e-AED9-22B9DF11D053

802.3 Group policy

dot3gpclnt.dll

0ACDD40C-75AC-47ab-BAA0-BF6DE7E7FE63

Wireless Group Policy

wlgpclnt.dll

4CFB60C1-FAA6-47f1-89AA-0B18730C9FD3

Internet Explorer Zonemapping

iedkcs32.dll

FB2CA36D-0B40-4307-821B-A13B252DE56C

Enterprise Qos

gptext.dll

Wszystkie one mają swoje odwołania w kluczu rejestru klienta HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\GPExtensions. Każde z nich jest reprezentowane za pomocą odpowiedniego numeru GUID.

To, jakie CSE zostanie wywołane, uzależnione jest od określonych w części GPC wartości atrybutów gpcMachineExtensionName oraz gpcUserExtensionName, o których wspomniano już wcześniej. Określone w ten sposób CSE przetwarzają w sposób sekwencyjny podległe im ustawienia GPO według kolejności:

1.

CSE odpowiedzialne za szablony administracyjne;

2.

pozostałe CSE w kolejności określonej w gałęzi rejestru HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions.

Kolejność ta powoduje, że to, co zostanie ustawione przez szablony administracyjne może być nadpisane np. przez działanie skryptów.

Do początku stronyDo początku strony

Przetwarzanie CSE

Przetwarzanie danych CSE może też ulec zmianie przy wykryciu tzw. wolnego łącza (ang. slow link), czyli domyślnie łącza poniżej 500 Kb/s. W takiej sytuacji niektóre CSE są domyślnie wykluczone z przetwarzania w celu zmniejszenia ilości przesyłanych danych. Zawsze natomiast, bez względu na prędkość łącza, są przetwarzane następujące ustawienia:

szablony administracyjne

ustawienia zabezpieczeń

restrykcje ograniczeń oprogramowania

zasady zabezpieczeń IPSec

ustawienia odzyskiwania EFS.

Jeśli chcemy dokładnie prześledzić wykorzystane CSE w powiązaniu z GPO, których dotyczyły, należy się przyjrzeć dwóm gałęziom w rejestrze:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Group Policy\History

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy\History

W każdej z tych gałęzi znajdziemy klucze określające CSE. Pod danym CSE natomiast znajdziemy klucze o numerach definiujących kolejność wykonywania, wynikającą z kolejności stosowanych GPO (na poniższym rysunku są to numery 0 i 1, reprezentujące dwie zasady GPO). Zobaczmy to dokładnie na przykładzie przedstawionym na rysunku poniżej.

Rys. 1. Klucze CSE.

Rys. 1. Klucze CSE.

Jako najważniejsze dostępne tu elementy można wymienić klucze:

GPOLink – określa obiekt podłączenia GPO:

1.

GPO podłączone lokalnie

2.

GPO podłączone do lokacji

3.

GPO podłączone do domeny

4.

GPO podłączone do jednostki organizacyjnej

GPOName – określa GUID GPO;

Version – wersja ostatnio użytego GPO wykorzystywana też w celu określenia, czy coś w GPO sie zmieniło;

DSPath – wskazanie do części GPC danego GPO;

FileSysPath – wskazanie do części GPT danego GPO;

DisplayName – przyjazna nazwa GPO.

Widzimy tu, iż dla części GPO użytkownika wywołane zostało CSE o numerze {25537BA6-77A8-11D2-9B6C-0000F8080861} czyli odpowiedzialne za przekierowanie folderów. Klucze 0 i 1 opisują już konkretne GPO. Pierwsze wykonywane GPO posiada numer 0, drugie numer 1 (w tym przypadku to GPO nosi nazwę marketing i jego właśnie szczegółowe ustawienia widzimy). Zwróćmy tu uwagę na numer wersji. W pierwszej chwili może się wydawać, że jest to ten sam numer, który umieszczono w pliku gpt.ini i odpowiednim atrybucie GPC. Tak jednak nie jest. Numer ten jak widzimy to 131074, ale akurat nas nie tyle będzie interesować jego reprezentacja dziesiętna, co heksadecymalna, czyli 0x00020002. Jeśli podzielimy ją na dwie części, otrzymamy dwie liczby, 0002 czyli pominąwszy zera dwie 2. Pierwsza z nich wskazuje na liczbę zmian odzwierciedlonych dla danej gałęzi użytkownika lub też komputera w pliku GPT.ini (tu akurat rozpatrujemy część użytkownika – stąd liczba zmian dotycząca ustawień użytkownika), druga liczba nawiązuje do analogicznej wartości powiązanej z GPC (wartości utrzymywanej w atrybucie versionNumber). Przypomnijmy sobie wcześniejszy przykład, czyli:

numer wersji=65536*2+8=131080

We wzorze to właśnie liczba 2, czyli nastąpiły dwie zmiany ustawień po stronie użytkownika.

Patrząc na liczbę 0x00020002 możemy określić, czy obie części: GPC i GPT były ze sobą zsynchronizowane podczas ostatniego przetwarzania GPO. Tu tak było, gdyż obie połówki liczby są te same, czyli w tym wypadku 0002.

Na podstawie tych wartości, znajdujących się w rejestrze klienta po dokonaniu porównania z numerami wersji GPO, znajdującymi się na serwerze następuje również sprawdzenie, czy dane GPO uległo zmianie od czasu ostatniego przetwarzania. Jeśli numery okażą się zgodne, GPO nie zostanie ponownie ściągnięte i przetworzone, bo i po co, skoro teoretycznie nic się nie zmieniło. Teoretycznie, bo takie zachowanie w pewnych przypadkach może być jednak niebezpieczne. Przypuśćmy, że na systemie klienckim użytkownik ma prawa administracyjne. GPO ustawia pewną wartość w rejestrze, użytkownik będący administratorem ją usuwa, bo ma takie prawa. Dopóki w GPO nie zajdzie zmiana, która tym samym nie wpłynie na zmianę numeru wersji GPO, to przez nawet miesiące nie mamy wpływu na to, co użytkownik zmienił. By zapobiec takim sytuacjom wprowadzono dwie modyfikacje. Po pierwsze: ustawienia zabezpieczeń wykonywane są bez względu na to, czy zaszły zmiany czy nie, i domyślnie dzieje się to co 16 godzin. Po drugie, by wymusić zawsze stosowanie GPO można włączyć mandatoryjne przetwarzanie GPO poprzez włączenie opcji „Process even if the Group Policy object have not changed”. Analogicznie w danej chwili możemy szybko wymusić przetwarzanie zasad GPO, bez względu na zmiany, dzięki wydaniu komendy gpupdate z parametrem /force, co często stosuje się chociażby w sytuacjach diagnostycznych. Zaznaczam jednak, że nie należy również wpadać w zbytnią paranoję i ustawiać każdorazowe przetwarzanie, a tylko w przypadkach, gdy jest to uzasadnione (zwykle względami bezpieczeństwa). Albowiem tak zaprojektowany mechanizm zabezpiecza również przed nadmiernym ruchem w sieci i dlatego należy go modyfikować, gdy jest to naprawdę celowe.

Do początku stronyDo początku strony

Asynchroniczne stosowanie GPO

Tak w zarysie wygląda podstawowa idea działania całego mechanizmu. To jednak nie wszystko. By uzyskać pełniejszy obraz tego, co się dzieje należy również wziąć pod uwagę system i sytuację, w jakiej odbywa się aplikowanie GPO. Podobnie jak Windows XP tak i Vista opiera się na asynchronicznym stosowaniu GPO. Asynchroniczne wykonanie (czy też w tle) oznacza, że nie ma oczekiwania na zastosowanie zasad, a GPO jest stosowane niejako równolegle na przykład z procesem logowania użytkownika, czy też startem komputera.

Nie wszystkie jednak ustawienia GPO potrafią działać w takim trybie. Tym, które nie potrafią, dedykowano drugi restart/logowanie.

Przy następnym restarcie czy też logowaniu GPO ten jeden raz wykonane zostanie w trybie synchronicznym. Stworzy to możliwość zastosowania ściśle synchronicznych ustawień, takich jak chociażby zasady przekierowania folderów.

Istnieje jeszcze jeden wyjątek, kiedy Vista wchodzi od razu w tryb synchroniczny. Tryb taki używany jest przy pierwszym logowaniu użytkownika, czy też starcie komputera po przyłączeniu do domeny.

W celu ustalenia w Vista na stałe podobnego domyślnego zachowania, jak dla systemów Windows 2000 czy Windows 2003, czyli procesu synchronicznego należy włączyć w GPO następujące ustawienie: “Computer Configuration\Administrative Templates\System\Logon\Always wait for the network at computer startup and logon".

Do początku stronyDo początku strony

Śladami GPO

Klucz „History” to jednak nie jedyne miejsce, gdzie możemy się doszukiwać historii działania GPO. Każde przetworzenie GPO jest również rejestrowane w bazie WMI. Wynikowy Zestaw Zasad (ang. Resultant Set of Policies) to narzędzie graficzne pozwalające wydobyć z bazy te informacje. Jego działanie opiera się na dwóch trybach: logowania i planowania.

Group Policy Loging Mode pozwala sprawdzić wyniki zastosowania ostatniego GPO. Można to zrobić zdalnie, ale w takim przypadku warunkiem powodzenia jest by komputer był włączony i oczywiście otwarte były odpowiednie porty. W przypadku, gdy w ten sposób chcemy sprawdzić zastosowane ustawienia użytkownika, użytkownik ten musi być wcześniej (choć raz) zalogowany. Tryb ten dostępny jest tylko w systemie Windows XP i późniejszych.

Group Policy Modeling natomiast symuluje użycie danego GPO. Miejscem gdzie to się odbywa jest kontroler domeny. Rezultaty tego działania trafiają do bazy WMI na kontrolerze domeny, by stamtąd GPMC mogło wydobyć zasymulowane w ten sposób wyniki. Odpowiednikiem tego narzędzia z linii komend jest najpopularniejsze chyba obecnie narzędzie diagnostyczne GPO- gpresult.

W Vista jednak, mimo wszystko dziennik zdarzeń to podstawowe miejsce, gdzie należy szukać wskazówek, w jaki sposób zostało przetworzone GPO - poprawnie czy też może coś poszło nie tak. Ujednolicono bowiem diagnostykę GPO przenosząc informacje diagnostyczne dotąd rozdzielone na kilka plików w jedno miejsce, którym to stał się dziennik zdarzeń a dokładnie gałąź „Applications and Services Logs->Microsoft->Windows->Group Policy”. Nadal jednak, by móc te wyniki odpowiednio zinterpretować, często niezbędne staje się poznanie zasad, na jakich GPO opiera swoje działanie. Mam nadzieję, że ten artykuł, choć w małej części w tym pomoże.

Do początku stronyDo początku strony

Przeczytaj pozostałe części tego artykułu

Elementy GPO, czyli Group Policy Objects, cz. I


Barbara Wróbel

Barbara Wróbel
Absolwentka Wydziału Informatyki i Nauki o Materiałach Uniwersytetu Śląskiego. Jako instruktor prowadzi szkolenia dla ABC Data Centrum Edukacyjne. Moderator portalu wss.pl. Główne zakresy zainteresowań: ISA Server, usługi terminalowe, Active Directory. Posiada certyfikat MCSE+S.


Do początku stronyDo początku strony