background image

 

Architektura systemu 
operacyjnego Windows 
NT
 

h

Przegląd systemu Windows NT 3.51 

 

Najważniejsze elementy systemu opera-
cyjnego. Tryb jądra i tryb użytkownika. 
Znaczenie poszczególnych warstw syste-
mu. 

h

 Składowe elementy Windows NT 
Executive

 

W tym rozdziale weźmiemy pod lupę system 
operacyjny i przyjrzymy się, jak jest zabezpie-
czony przed awarią układu, nieuprawnionym 
dostępem i zniekształceniem danych. Omawia-
ne zagadnienia pozwolą lepiej zrozumieć zało-
żenia przyjęte przez projektantów Windows NT. 
Przeanalizujemy wszystkie kluczowe elementy 
systemu ze szczególnym uwzględnieniem ich 
wzajemnego współdziałania. W pierwszej części 
rozdziału skupimy się na architekturze Win-
dows NT 3.51, by następnie omówić zmiany 
wprowadzone w wersji 4.0. 

 

Elementy składające się na Windows NT 
Executive oraz funkcje poszczególnych 
komponentów  

h

Zmiany wprowadzone w Windows NT 
4.0 

 

Zmiany wprowadzone do nowej wersji 
systemu i ich znaczenie dla poprawy dzia-
łania systemu. 

h

Zmiany w egzekutywie Windows NT 
Executive 

 

Wpływ poważnych zmian w Windows NT 
Executive na działanie systemu operacyj-
nego. 

h

Win32K Executive 

 

Nowy element zawarty w Windows NT 
4.0. Komponenty, które we wcześniej-
szych wersjach działały w warstwie użyt-
kownika. 

h

Co się dzieje w czasie rejestracji 
w systemie 

 

Proces rejestracji w systemie ujęty jako 
ciąg zdarzeń.

 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

64 

Architektura Windows NT 3.51 

Windows NT w wersji 3.51 zbudowany jest według architektury „zmo-
dyfikowanego mikrojądra”. Składa się z dwóch głównych warstw: trybu 
użytkownika (User mode) oraz trybu jądra (Kernel mode) (por. rysunek 
3.1). Każda warstwa składa się z oddzielnych, ale współpracujących ze 
sobą modułów. Taka struktura pozwala projektantom zmieniać elementy 
systemu, bez oddziaływania na pozostałe składniki. 

Rysunek 3.1 

Tryb użytkownika 
oraz tryb jądra jako 
składniki systemu 
operacyjnego Win-
dows NT. 

 

Na obecnym etapie trudno jest szczegółowo analizować różne elementy 
składające się na warstwę trybu jądra. Rozpoczniemy jednak od tego 
trybu, gdyż tu ulokowane jest centrum usług systemu operacyjnego. Na 
tym piętrze architektury realizowane są zadania niskiego poziomu, takie 
jak planowanie wątków i synchronizacja mikroprocesora. Inne procesy, 
jak administrowanie pamięcią wirtualną, realizowane są na warstwie 
wyższej w trybie jądra użytkownika. 

Warstwa trybu jądra 

Warstwę trybu jądra można podzielić na trzy podstawowe części: 

background image

Architektura systemu operacyjnego Windows NT  

65 

 

„

Abstrakcyjna warstwa sprzętowa (HAL - Hardware Abstraction Layer) - 
Pierwsza część jest odpowiedzialna za współpracę z fizyczną stroną 
komputera. 

„

Jądro (lub mikrojądro) - Druga część realizuje najważniejsze funkcje 
systemu operacyjnego wykorzystywane przez komponenty trybu ją-
dra. 

„

Komponenty wykonawcze - Trzecia część jest zbiorem składników, 
z których każdy jest odpowiedzialny za implementację właściwej mu 
usługi systemu operacyjnego. Przykładowo: kontroler wskaźników 
bezpieczeństwa (Security Reference Monitor), implementuje system za-
bezpieczeń, a menedżer procesów we/wy (I/O Manager) zarządza 
wszystkimi procesami wejścia/wyjścia przebiegającymi w systemie. 
O wszystkich elementach wykonawczych będziemy się szczegółowo 
uczyć w dalszej części rozdziału. 

Wszystkie składniki tworzą wspólnie Windows NT Executive. Zanim 
skoncentrujemy się na różnych warstwach systemu operacyjnego, po-
winniśmy sobie wyjaśnić powód takiej, a nie innej architektury Windows 
NT. 

Mikroprocesory, będące sercem każdego komputera, umożliwiają uru-
chomienie wątków. Wątki są wykonywane w kontekście procesów, 
a każdy proces może uruchomić wiele wątków. Wątki są w istocie rzeczy 
instrukcjami, które zlecają komputerowi, jak ma działać. Wątki wykony-
wane w ramach systemu operacyjnego pracują na różnych poziomach 
uprawnień. Te, które odpowiadają za funkcjonowanie systemu, są waż-
niejsze od tych, które są uruchamiane przez aplikacje. Z tego powodu 
wątki sterujące kodem systemu operacyjnego mają wyższy poziom 
przywilejów, niż wątki sterujące kodem aplikacji. W ten sposób aplikacja 
jest chroniona od niezamierzonego zawieszenia się systemu operacyjne-
go. Moduły wchodzące w skład Windows NT Executive są wszystkie 
uruchamiane w trybie jądra, gdyż posiadają przywileje i zabezpieczenia 
wyższego rzędu, niż uruchamiany przez nie kod.  

Procesory rodziny Intelx86 obsługują cztery poziomy przywilejów, ozna-
czonych jako pierścienie o numerach od 0 do 3 (por. rysunek 3.2). Pier-
ścień 0 jest najwyższym poziomem uprawnień, w który są wyposażone 
wątki sterujące systemem operacyjnym. Stanowi to skuteczne zabezpie-
czenie układu przed zakłóceniami, które mogą być generowane przez 
aplikacje. Procesy aplikacji są uruchamiane z trzecim poziomem przywi-
lejów, co zapobiega ewentualnym szkodliwym oddziaływaniom na sys-
tem. 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

66 

Rysunek 3.2 

Tryb jądra i tryb użytkowni-
ka działają na różnych 
poziomach uprawnień. 

 

Wszystkie aplikacje uruchamiają swój kod w wydzielonej i izolowanej 
przestrzeni adresowej, aby zabezpieczyć kody lub dane innych procesów. 
Zanim nastąpi przejście od jednego procesu do drugiego, system opera-
cyjny zmienia tablice stron procesora, zatem procesy „nie widzą” się 
wzajemnie. 

Teraz przyjrzymy się z bliska szczegółom komponentów Windows NT 
Executive.  

Komponenty Windows NT Executive 

Program wykonawczy zawiera moduły jądra systemu operacyjnego, 
które sterują jego sercem. Każdy element ma do wykonania swoje własne, 
specyficzne zadanie. Analizę komponentów, celem określenia ich zadań, 
zaczniemy od centrum jądra, przechodząc kolejno coraz bardziej na ze-
wnątrz. 

Abstrakcyjna warstwa sprzętowa (HAL)  

Jedna z najważniejszych cech Windows NT polega na niezależności od 
fizycznych rozwiązań komputera. Jest realizowana przez abstrakcyjną 
warstwę sprzętową, umieszczoną w samym centrum warstwy trybu ją-
dra. Dzięki temu sterowniki urządzeń HAL mogą obsługiwać więcej niż 
jedną platformę sprzętową. Niektóre fabryki komputerów rozprowadzają 
dostosowaną do swojego produktu wersję HAL, która zapewnia wyższy 
stopień zgodności między sprzedawanym urządzeniem a Windows NT. 
W takim przypadku należy zainstalować nakładkę, aby zapewnić dobre 
działanie systemu operacyjnego. 

background image

Architektura systemu operacyjnego Windows NT  

67 

 

Jądro 

Każdy proces składa się co najmniej z jednego wątku. Każdy wątek jest 
z kolei odpowiedzialny za oddzielną klasę czynności. Zadaniem jądra jest 
planowanie, w jakiej kolejności poszczególne czynności będą miały do-
stęp do procesora. Sterowanie kolejnością  wątków realizowane jest po-
przez poziomy priorytetów. Wątki o wyższym priorytecie są wykonywa-
ne przed wątkami o priorytecie niższym.  

Jądro zajmuje 4 kB jednostek pamięci systemu nie podlegających stroni-
cowaniu; Oznacza to, że pamięć wykorzystywana przez jądro, nie może 
być stronicowana i przenoszona na dysk. Kod, uruchamiany wewnątrz 
jądra, nie podlega wydziedziczaniu, co oznacza, że nie może być prze-
rwany przez inny proces. Oba rozwiązania zapewniają stabilność modu-
łu jądra w systemie operacyjnym. 

Menedżer obiektów 

Zasoby systemu operacyjnego są reprezentowane przez abstrakcyjną 
strukturę danych o nazwie obiekt. Obiekt może reprezentować cokolwiek 
- od katalogu do wątku procesu. Każdy obiekt zawiera informację, która 
umożliwia identyfikację jego opisu oraz metody jego udostępniania. Me-
nedżer obiektów steruje tworzeniem, usuwaniem i modyfikacją wszyst-
kich typów obiektowych w systemie operacyjnym Windows NT. Limituje 
również wielkość zasobów kontrolowanych przez obiekty, zabezpiecza-
jąc system przed obniżeniem wydajności.  

Oto kilka przykładów obiektów systemu operacyjnego: 
„

Połączenia symboliczne 

„

Porty 

„

Wątki 

„

Pliki 

„

Katalogi 

„

Semafory i zdarzenia 

Aby uzyskać dostęp do obiektu znajdującego się pod kontrolą menedże-
ra, procesy wyposażane są we wskaźniki nazywane „uchwytami obiek-
tów”. Menedżer obiektów, nazywany czasem ogólną przestrzenią nazw 
(global namespace), ma strukturę podobną do systemu plików. Moduł do-
starcza informacji o statusie różnych obiektów systemu operacyjnego 
oraz jest odpowiedzialny za usuwanie z niego wszystkich zbędnych 
obiektów. 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

68 

Kontroler wskaźników bezpieczeństwa 

Moduł  służy do sterowania wewnętrznym bezpieczeństwem systemu; 
zarządza dostępem, tworzeniem i usuwaniem wszystkich obiektów 
w systemie. Swoje zadania wykonuje dzięki liście kontroli dostępu (ACL 
-  Access Control List), która jest skojarzona z każdym obiektem. (O liście 
ACL powiemy niedługo nieco więcej.) Każdy obiekt zawiera elementy 
o nazwie pozycje kontroli dostępu (ACE - Access Control Entries), a każda 
z nich zawiera unikatowy identyfikator bezpieczeństwa użytkownika lub 
grupy (SID - security ID). W chwili obecnej identyfikator SID jest unika-
tową liczbą generowaną przez system operacyjny, która jest przyporząd-
kowana każdemu użytkownikowi (i grupie) w domenie.  

Aby umożliwić użytkownikowi dostęp do obiektów, kontroler wskaźni-
ków bezpieczeństwa współpracuje w procesie rejestracji z podsystemami 
ochrony trybu użytkownika. Wynikiem wspólnej pracy jest przepustka 
chronionego dostępu (SAT- Security Access Token) zawierająca identyfika-
tory (SID) użytkownika oraz wszystkich grup, do których należy. Każdo-
razowo, gdy użytkownik żąda dostępu do obiektu, kontroler porównuje 
pozycje z przepustki z elementami listy kontroli dostępu obiektu. Jeśli 
weryfikacja wypadnie pozytywnie, klient otrzymuje pozwolenie na ko-
rzystanie z zasobów, zgodnie z uprawnieniami opisanymi odpowiednią 
pozycją kontroli dostępu. 

Menedżer procesów 

Moduł kieruje dwoma typami obiektów: procesami i wątkami. Procesy 
posiadają zasoby i wątki umieszczone we własnej wirtualnej przestrzeni 
pamięci. Wątki zawierają przynależne im: stos jądra, blok środowiskowy 
oraz zbiór rejestrów. Menedżer procesów jest odpowiedzialny za two-
rzenie i usuwanie procesów oraz śledzenie wątków. Reguły tworzenia 
oraz usuwania obiektów nie są określane przez moduł, ale pochodzą 
z zewnątrz, od jednego z podsystemów trybu użytkownika. Moduł do-
starcza jedynie zbioru standardowych usług, dzięki którym różne pod-
systemy tworzą lub wykorzystują wątki.  

Mechanizm lokalnego wywoływania procedur (Local Procedure 
Call Facility) 

Podsystemy tworzące architekturę  środowiska Windows NT służą jako 
serwery dla aplikacji uruchamianych w systemie, działając analogicznie 
jak serwery aplikacji dla programów uruchamianych w środowisku sie-
ciowym. Mechanizm lokalnego wywoływania procedur jest równoważny 
zasadom pracy zdalnych wywołań procedur (RPC - Remote Procedure 
Calls
) dostarczających usług komunikacyjnych klient/serwer. Różnica 

background image

Architektura systemu operacyjnego Windows NT  

69 

 

polega na tym, że LPCF jest zaimplementowany wewnątrz pojedynczego 
systemu operacyjnego, do obsługi komunikacji między podsystemami 
trybu użytkownika a aplikacjami. Moduł jest odpowiedzialny za zapew-
nienie mechanizmów komunikacyjnych między aplikacjami a składo-
wymi systemu. 

Menedżer pamięci wirtualnej (Virtual Memory Manager) 

Kolejny składnik jest odpowiedzialny za odwzorowywanie wirtualnych 
adresów przestrzeni adresowej procesów na fizyczne strony pamięci 
systemu komputerowego. Umożliwia to wątkom dostęp do należnych im 
obszarów pamięci, bez naruszania przestrzeni wykorzystywanej przez 
inne procesy. Moduł realizuje fizyczne rozmieszczenie stron pamięci 
operacyjnej w sposób „zrozumiały” dla procesów. 

Układ umożliwia również systemowi operacyjnemu korzystanie 
z pamięci obszerniejszej od zainstalowanej na komputerze. Jeżeli fizyczna 
pamięć komputera jest całkowicie wykorzystana, to najmniej ważne 
z ostatnio używanych stron pamięci (LRU - Least Recently Used) są zapi-
sywane na dysk. 

Menedżer procesów wejścia/wyjścia (I/O Manager)  

Działanie tego modułu najlepiej jest porównać do pracy policjanta steru-
jącego ruchem. Zarządza bowiem wszystkimi funkcjami wejścia/wyjścia, 
sterowników wszystkich urządzeń systemu. Swym działaniem obejmuje 
w szczególności: sterowniki urządzeń komputera, adaptery sieciowe oraz 
system plików. Sterowniki wszystkich działających w systemie urządzeń 
wejścia/wyjścia mogą posługiwać się zapewnianym przez moduł inter-
fejsem. Aktualnie menedżer umożliwia pracę urządzeń na różnych po-
ziomach. Sterownik urządzenia we/wy wysokiego poziomu przesyła 
wezwanie do sterownika niskiego poziomu, bez potrzeby zajmowania się 
fizycznymi szczegółami urządzenia. Na przykład: redirektor sieciowy, 
który jest sterownikiem wysokiego poziomu, może bezpośrednio przesy-
łać wezwanie do sieci, bez zajmowania się zasadami sterowania karty 
ethernet. Przewaga wspólnego interfejsu polega również na możliwości 
jednoczesnego korzystania z różnych urządzeń. 

Sterowniki porozumiewają się, wykorzystując specjalną strukturę danych 
o nazwie pakiet żądania (IRP- I/O Request Packet). Menedżer odbiera IRP 
i przesyła go do odpowiedniego adresata. Wykorzystuje się do tego asyn-
chroniczne rozwiązania wejścia/wyjścia, umożliwiające aplikacji konty-
nuowania działania w 

trakcie wykonywania operacji we/wy. 

W rozwiązaniach synchronicznych działanie aplikacji zostaje zawieszone 
do czasu pełnego zrealizowania żądania we/wy. Wszystkie żądania 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

70 

we/wy są realizowane za pośrednictwem kolejki, przy czym o kolejności 
decyduje priorytet, a nie pierwszeństwo zgłoszenia. 

Aby przyśpieszyć działanie operacji we/wy, w module pracuje menedżer 
bufora (Cache Manager). Wykorzystanie bufora kojarzy się zazwyczaj 
z operacjami  wejścia i wyjścia systemu plików, możliwe jest jednak 
w stosunku do dowolnych komponentów sieciowych, sterowanych 
menedżerem we/wy. Aktualnie moduł obsługuje trzy charakterystyczne 
grupy sterowników: 

„

Sterowniki urządzeń fizycznych - obsługę urządzeń fizycznych, typu 
mysz lub klawiatura, realizują oddzielne sterowniki mogące 
współpracować z menedżerem procesów we/wy. Takie rozwiązanie 
pozwala, w razie potrzeby, wymieniać fizyczne komponenty systemu, 
bez oddziaływania na inne urządzenia i sterowniki.  

„

Sterowniki urządzeń systemu plików - implementacja tych sterowników 
umożliwia wykorzystanie różnych systemów plików na tym samym 
napędzie. Rozwiązanie, polegające na traktowaniu redirektora 
sieciowego oraz serwera jako sterowników urządzeń systemu plików, 
pozwala menedżerowi we/wy na dostęp do katalogów plików innych 
serwerów, według tej samej zasady co do katalogów lokalnych. 

„

Sterowniki urządzeń sieciowych - rozwiązania umożliwiające współpracę 
z siecią 

są integralną częścią systemu operacyjnego, 

zaimplementowaną w 

formie sterowników urządzeń sieciowych, 

układu obsługi procesów wejścia i wyjścia. Obsługa różnych urządzeń 
sieciowych jest zaimplementowana na różnym poziomie menedżera 
procesów we/wy. Jak już wspomniano redirektor i 

serwer są 

zaimplementowane jako urządzenia systemu plików. Ulokowane są 
w obszarze menedżera nazywanym interfejsem dostawczym (Provider 
Interface
). Na tym samym poziomie są ulokowane zarówno NetBIOS 
jak i protokół Windows Sockets. Niższy poziom zajmują sterowniki 
protokołów TCP/IP, NetBEUI, NWLink i DLC. Współpracę między 
sterownikami protokołów komunikacyjnych, a sterownikami systemu 
plików umożliwia mechanizm o 

nazwie interfejs sterowników 

komunikacyjnych (Transport Driver Interface). Sterowniki poziomu 
komunikacyjnego są napisane zgodnie ze specyfikacją NDIS 3.0 
(Network Device Interface Specification). Określa ona wspólne reguły, 
umożliwiające wymianę informacji między adapterami fizycznymi, 
a sterownikami  protokołów komunikacyjnych. Ponadto pozwala 
instalować na jednym komputerze wiele kart sieciowych i korzystać 
z kilku protokołów komunikacyjnych. 

background image

Architektura systemu operacyjnego Windows NT  

71 

 

Uwaga 

Windows 3.51 współpracował z trzema systemami plików: FAT (File Allocation 

Table), NTFS (New Technology File System) oraz HPFS (High Performance File 

System). W wersji 4.0 ograniczono możliwość współpracy do dwóch pierwszych. 

Komponenty trybu użytkownika 

Elementy składające się na warstwę trybu użytkownika można podzielić 
na dwie kategorie. Pierwsza zawiera składniki, które są związane 

systemem ochrony, druga grupuje podsystemy środowiskowe, 

niezbędne do uruchomienia aplikacji działających na platformach 
różnych systemów operacyjnych. W dalszej części rozdziału zostaną 
omówione komponenty związane z ochroną systemu z uwzględnieniem 
współdziałania z 

kontrolerem wskaźników bezpieczeństwa. Teraz 

skupimy się na podsystemach środowiskowych: 

Podsystemy środowiskowe 

Windows NT umożliwia uruchamianie aplikacji napisanych dla MS-DOS, 
OS/2, Windows 3.x oraz aplikacji 32 bitowych napisanych dla Windows 
NT. Taką elastyczność zapewniają różne podsystemy, zaprojektowane 
w celu  obsługi działania programów nie dedykowanych specjalnie dla 
NT. Podczas uruchamiania aplikacji, układy te emulują działanie 
odpowiedniego systemu operacyjnego. 

Podsystemy  środowiskowe mogą współdziałać z 

komponentami 

Windows NT Executive. Dostosowują usługi do specyficznych wymagań 
środowiska stawianych przez programy niededykowane dla NT. Zaletą 
stosowania różnych podsystemów jest izolowanie komponentów 
wykonawczych od wpływu błędów generowanych przez programy,  

Uwaga 

Windows 3.51 zawiera ważne odstępstwo od tej reguły. Podsystemy Win32 
sterują myszą, klawiaturą oraz wyjściem monitora łącznie dla wszystkich 
podsystemów. Awaria Win32 rzutuje na pracę innych podsystemów zatrzyma-
niem pracy myszy, klawiatury i ekranu. 

Wśród modułów omawianej grupy znajdują się wirtualne maszyny DOS 
(VDS - Virtual Dos Machines) oraz kilka innych podsystemów. Z wyjąt-
kiem Win32 są opcjonalne, co oznacza, że  ładują się w chwili, gdy są 
potrzebne do obsługi aplikacji klienta. Oto lista podsystemów dostępnych 
w Windows NT: 
„

podsystem OS/2 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

72 

„

podsystem POSIX 

„

podsystem Win32 

„

wirtualna maszyna MS-DOS 

„

wirtualna maszyna Win16 

Podsystem OS/2 

Układ umożliwia uruchomienie aplikacji zbudowanej specjalnie dla OS/2 
jedynie na platformie Intelx86. Komputery RISC nie współpracują 
z podsystemem OS/2, ale aplikacje działające w trybie rzeczywistym 
OS/2 mogą być uruchamiane w środowisku MS-DOS. 

Podsystem POSIX 

POSIX (Portable Operating System Interface for Computing Enviroments) jest 
jedynie zbiorem standardów opracowanych przez IEEE (Institute of Elec-
trical and Electronic Engineers
). Aktualnie tylko jeden ze standardów 
otrzymał ostateczną postać i zaczyna być akceptowany przez klientów. 
Ten standard to POSIX.1 lub inaczej IEEE standard 1003.1-1990. Definiuje 
on interfejs programów użytkowych w języku C, działający pomiędzy 
aplikacją a systemem operacyjnym. Z tego powodu aplikacje napisane 
według standardów POSIX muszą zdawać się na działanie pod kontrolą 
innych systemów operacyjnych, w zakresie usług związanych między 
innymi z ochroną i pracą w sieci. 

Wymagania stawiane przez POSIX systemowi plików, dotyczą rozróż-
niania wielkich liter oraz możliwości stosowania długich nazw. NTFS jest 
zgodny z tym standardem. Aplikacje kompatybilne z POSIX mogą być 
uruchamiane przy zastosowaniu innego systemu plików, o ile nie wyma-
gają do niego dostępu, 

Podsystem Win32 

Ten moduł jest odpowiedzialny za uruchamianie aplikacji Win32. W NT 
3.51 steruje wyjściem monitora jak również współpracą myszy 
i klawiatury.  Ponieważ podsystem steruje funkcjami wejścia/wyjścia 
Windows NT, wszystkie inne podsystemy zmuszone są korzystać z jego 
usług w zakresie współdziałania z użytkownikiem (por. rysunek 3.3). 

Uwaga 

Odnotujmy, że powyższe uwagi odnoszą się do Windows NT 3.51 a nie NT 4.0. 
W nowej wersji dokonano zmian, dzięki którym Win32 przestał sterować 
omawianymi funkcjami. Więcej na ten temat przeczytamy w następnym 
fragmencie rozdziału. 

background image

Architektura systemu operacyjnego Windows NT  

73 

 

Rysunek 3.3 

Składniki podsys-
temu Win32 
w Windows 3.5x 

 

„

Podsystem Win32 steruje operacjami wejścia/wyjścia, używając kom-
binacji różnych usług, które opisujemy w poniższym wykazie: Console 
Services  
(Usługi konsoli)  zapewniają działanie okna tekstowego oraz 
funkcji wygaszania systemu i obsługi błędów krytycznych. Dostarcza 
32 bitowym aplikacjom Windows specjalizowanych funkcji typu two-
rzenie i usuwanie obiektów. 

„

Window Manager (Menedżer okien) jest usługą działającą w chronionym 
trybie pracy. Odpowiada za tworzenie interfejsu ekranu Windows. 
Program współpracuje z interfejsem urządzeń graficznych (GDI- Gra-
phics Device Intarface
, zarządzając informacjami graficznymi przepły-
wające do (oraz od) aplikacji. Standardową funkcją modułu jest przy-
jęcie żądania aplikacji (na przykład utworzenie okna) i wysłanie jej do 
GDI. Z drugiej strony, wszystkie informacje związane ze zmianą 
ekranu, zainicjowane przez użytkownika (na przykład przesunięcie 
okna), są przesyłane przez moduł do aplikacji. 

„

Graphics Device Interface (GDI - Interfejs urządzeń graficznych) jest rów-
nież programem działającym w chronionym trybie pracy. Moduł od-
powiada za tworzenie graficznych obrazów, zarówno na ekranie, jak 
i na drukarce. Dostarcza zbioru standardowych funkcji, umożliwiają-
cych współpracę aplikacji z konkretnymi urządzeniami graficznymi. 
GDI zarządza informacjami, dotyczącymi cech obrazu, przepływają-
cymi od aplikacji do sterownika graficznego. Dzięki GDI aplikacja 
współpracuje z urządzeniem wyświetlającym (ekranem lub drukarką) 
bez jakiejkolwiek znajomości cech urządzenia. O module można my-

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

74 

śleć jako o tłumaczu, przekładającym z języka aplikacji, na język zro-
zumiały przez sterowniki rządzeń. 

„

Graphics Device Drivers (Sterowniki urządzeń graficznych) Moduł składa 
się ze zbioru bibliotek DLL, zawierających funkcje umożliwiające do-
stęp GDI do fizycznych urządzeń wyjściowych, najczęściej monitora 
i drukarki. Sterowniki otrzymują od GDI zrozumiałe dla nich instruk-
cje i zlecają urządzeniom określone przez nie zadania. Wykorzystanie 
sterowników pozwala na oddzielną implementację bardzo specyficz-
nych cech urządzeń w niezależnych modułach, które są obsługiwane 
przez wspólny zbiór instrukcji. Sterowniki niskiego poziomu bezpo-
średnio regulują pracę urządzeń, natomiast sterowniki wysokiego po-
ziomu wpierają GDI dzieląc zadania na mniejsze części, zrozumiałe 
dla sterowników niskiego poziomu. 

Jak już mówiliśmy, usługi działają jako chronione procesy trybu użyt-
kownika. Z tego powodu wszystkie pozostałe podsystemy są traktowane 
przez Windows NT 3.51 jako klienci Win32. Aby zapewnić funkcjonalną 
współpracę między użytkownikiem a aplikacją, wszystkie podsystemy 
muszą dostosować wezwania Win32 API do wymagań podsystemu Win 
32. Najważniejszy, z punktu widzenia bezpieczeństwa problem polega na 
tym, że awaria podsystemu Win32 wpływa na działanie systemu opera-
cyjnego, gdyż uniemożliwia korzystanie z myszy, klawiatury i ekranu. 

Podsystem Win32 jest również modułem odpowiedzialnym za działanie 
i sterowanie wirtualnej maszyny DOS (VDM). Wirtualne maszyny DOS 
przeznaczone są do uruchamiania 16 bitowych aplikacji kompatybilnych 
z Windows lub MS-DOS. 

Wirtualna maszyna MS-DOS 

Windows NT umożliwia uruchamianie aplikacji kompatybilnych z MS-
DOS przez symulowanie komputera bazującego na procesorze Intel 486, 
działającego w systemie operacyjnym MS-DOS. Jednocześnie można 
utworzyć kilka wirtualnych maszyn MS-DOS na jednym komputerze 
działającym pod kontrolą NT. Jeśli system pracuje na platformie Intel, 
dostępny jest tryb pracy procesora o nazwie Virtual-86. Umożliwia on 
bezpośrednią realizację większości instrukcji, a jedynie kilka poleceń 
we/wy musi być emulowanych programowo. Na komputerach RISC nie 
jest dostępny tryb Virtual-86, zatem wszystkie instrukcje procesora 486 są 
na tej platformie emulowane programowo. 

Aby umożliwić normalną pracę aplikacji kompatybilnych z MS-DOS, 
należy zasymulować kilka charakterystycznych własności tego 
środowiska: 

background image

Architektura systemu operacyjnego Windows NT  

75 

 

„

Zbiór instrukcji Intel x86 jest zapewniany przez moduł wykonywania 
instrukcji (Instruction Execution Unit) 

„

Usługi przerwań - normalne działanie programów napisanych dla DOS 
zależne jest od przerwań realizowanych przez BIOS. Wirtualna ma-
szyna MS_DOS emuluje te usługi. 

„

Usługi przerwania nr 21 - przerwanie 21 jest normalnie realizowane na 
poziomie MS-DOS. VDM zapewnia jego emulację. 

„

Sterowniki urządzeń wirtualnych mają za zadanie symulować zbiór ste-
rowników, dostępnych normalnie dla aplikacji działających 
w systemie MS-DOS. 

Odnotujmy, że na komputerach z procesorem Intel aplikacje tekstowe są 
uruchamiane w oknie, natomiast graficzne korzystają z pełnego ekranu. 
Na platformie RISC oba rodzaje programów są uruchamiane w graficz-
nym oknie sesji. 

Wirtualna maszyna Win16 

System operacyjny Windows NT wyposażony jest w jedną - wielowąt-
kową wirtualną maszynę DOS dla 16 bitowych aplikacji Windows (zwa-
ny czasem WOW - Windows on Win32). Każda z aplikacji Win16 uru-
chamiana poprzez mechanizm wirtualny działa na zasadzie wielozada-
niowości bez wywłaszczania. Oznacza to, że w tym samym czasie może 
być realizowana tylko jedna aplikacja, a pozostałe zmuszone są do ocze-
kiwania. Tym niemniej procesy realizowane przez WOW podlegają me-
chanizmom wielozadaniowości z wywłaszczeniem w stosunku do pozo-
stałych procesów działających w systemie. 

Komponenty ochrony trybu użytkownika 

Warstwa trybu użytkownika w systemie operacyjnym Windows NT za-
wiera różne składniki, które wspólnie tworzą podsystem ochrony: 

„

Log-on Processes (Procesy rejestracji) pracują w trybie użytkownika 
i służą do weryfikacji użytkowników rejestrujących się w systemie. 
Dotyczy to zarówno użytkowników logujących się lokalnie, jak i ze 
stacji odległych. 

„

Local Security Authority (Lokalne upoważnienie ochrony) wspólnie 
z procesami rejestracyjnymi służy do weryfikacji upoważnień przy-
znanych kontu użytkownika. Status konta użytkownika musi zostać 
sprawdzony, zanim użytkownik uzyska dostęp do systemu. Ośrodek 
zabezpieczeń lokalnych jest najważniejszym elementem podsystemu 
bezpieczeństwa, pracującym w trybie użytkownika. Odnotujmy, że 
składniki trybu użytkownika współpracują z jedynym komponentem 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

76 

systemu bezpieczeństwa pracującym w trybie jądra, a mianowicie 
kontrolerem wskaźników ochrony. W części rozdziału analizującej 
procesy rejestracji poświęcimy temu problemowi więcej uwagi. Oma-
wiany moduł jest odpowiedzialny za współdziałanie z procesami reje-
stracyjnymi i generowanie przepustki dostępu do systemu (SAT- sys-
tem Access Token). Inne zadania komponentu to realizacja strategii 
nadzoru i 

wytwarzanie komunikatów o 

zdarzeniach związanych 

z rejestracją dla kontrolera wskaźników bezpieczeństwa (SRM). 

„

Security Account Manager (Menedżer zabezpieczeń kont) pracuje 
w trybie użytkownika i odpowiada za obsługę baz danych, zawierają-
cych informacje o kontach użytkowników. Współpracuje z poprzed-
nim składnikiem, dostarczając niezbędnych, do weryfikacji użytkow-
nika, informacji. 

Opisane elementy tworzą razem z programem Security Reference Moni-
tor podsystem pod nazwą Windows NT Security Subsystem. Nie jest to 
układ  środowiskowy, ponieważ zawiera składowe pracujące w różnych 
trybach. Z tego powodu nazywany jest podsystemem zintegrowanym. 
O działaniu tego podsystemu powiemy nieco więcej w dalszej części roz-
działu, teraz natomiast przejrzymy zmiany w architekturze Windows NT 
wprowadzone w wersji 4.0. 

Zmiany architektury wprowadzone w Windows NT 4.0 

Architektura systemu operacyjnego Windows NT 4.0 oparta jest na tych 
samych założeniach co w wersji poprzedniej. Aby jednak podnieść wy-
dajność systemu, bez ograniczania poziomu integralności, wprowadzono 
do systemu kilka modyfikacji zarówno w części wykonawczej, jak 
i w podsystemie Win32. 

Jak już mówiliśmy, centralne moduły systemu operacyjnego pracują 
w pierścieniu 0 w trybie jądra. Jest to poziom o najwyższych przywilejach 
w systemie. Należą do niego elementy w decydującym stopniu odpowie-
dzialne za współpracę z fizycznymi urządzeniami komputera. Podsys-
temy trybu użytkownika wywołują komponenty pracujące w trybie jądra, 
celem wykonania operacji, umożliwiającej dostęp do urządzeń na pozio-
mie sprzętowym. Takie rozwiązanie daje gwarancje, że aplikacje pracują-
ce w jednym z trybów użytkownika (pierścień 3) nie mogą spowodować 
zawieszenia systemu wykonując próbę dostępu do urządzeń fizycznych. 
Zabezpieczenie to wiąże się z obniżeniem wydajności systemu. Powodem 
spadku wydajności są przełączenia i przejścia międzypierścieniowe. 

background image

Architektura systemu operacyjnego Windows NT  

77 

 

Rysunek 3.4 

Architektura 
systemu Windows 
NT 4.0 

 

Przełączenia mają miejsce, gdy aplikacja Windows wywołuje funkcje API 
podsystemu Win32. Z przejściami międzypierścieniowymi mamy do 
czynienia, gdy kod pierścienia 3 wywołuje kod pierścienia 0. Aby sko-
munikować się z odpowiednim podsystemem, aplikacja musi bowiem 
korzystać z pośrednictwa mechanizmu lokalnego wywołania procedur 
(Local Procedure Call). Ponieważ Win32 zawiera interfejs urządzeń gra-
ficznych (GDI), to między podsystemem Win32 a Windows NT Executive 
występują liczne dodatkowe przejścia międzypierścieniowe. Wszystkie te 
przejścia łącznie odbijają się na wydajności. 

Zmiany w Windows NT Executive 

W warstwie jądra Windows NT 4.0 umieszczono dodatkowy komponent 
o nazwie Win32K Executive. Nie należy jej mylić z systemem Windows 
NT Executive, której składnikiem jest Win32K. Nowy komponent przejął 
najważniejsze funkcje podsystemu Win32 trybu użytkownika. 

Jak pamiętamy, podsystem Win32 zawierał kilka różnych komponentów 
zarządzających współdziałaniem z urządzeniami graficznymi (menedżer 
okien, GDI oraz sterowniki urządzeń graficznych), w szczególności 
z wyjściem na graficzny monitor i drukarkę. Ponieważ współpraca była 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

78 

inicjowana w trybie użytkownika (pierścień 3), przejścia międzypierście-
niowe miały miejsce przy realizacji wywołań Windows NT Executive 
(pierścień 0). Win32K Executive jest w istocie, umieszczonym w trybie 
jądra, nowym miejscem dla wymienionych elementów podsystemu 
Win32. Skutkiem takiej zmiany jest usprawnienie pracy systemu. 

Rysunek 3.5 

Zmodyfikowa-
ny system 
Windows NT 
Executive 
w wersji 4.0 

 

W nowym systemie aplikacje realizują wywołania funkcji Win32K 
w trybie jądra, omijając pośrednictwo podsystemów Win32. Nie eliminuje 
to zupełnie przejść międzypierścieniowych, ale znacznie redukuje ich 
liczbę. Inny sposób poprawienia wydajności polega na tworzeniu kolejki 
wywołań i przesyłaniu ich w formie pakietu. Zamiast osobnych przejść 
dla każdego wywołania można jednorazowo wysłać całą grupę. Celem 
tego rozwiązania było również usprawnienie działania systemu. 

Komponenty Win32K Executive 

Win32K Executive jest nowym komponentem trybu jądra, który zastępuje 
usługi wejścia/wyjścia, realizowane w poprzedniej wersji przez podsys-
tem Win32. Zamiast wykonywania chronionych procesów w trybie użyt-
kownika, realizuje je w ramach trybu jądra i pierścienia 0 (por. rysunek 
3.6). Efektem jest podniesienie wydajności poprzez umożliwienie bezpo-
średnich wywołań z Win32K Executive do mikrojądra i abstrakcyjnej 
warstwy sprzętowej (HAL). 

background image

Architektura systemu operacyjnego Windows NT  

79 

 

Rysunek 3.6 

Win 32K Executive. 

 

Win32K Executive składa się z kilku różnych elementów, odpowiedzial-
nych za określone funkcje: 

„

Window Manager (Menedżer okien) odpowiada za tworzenie interfejsu 
ekranu Windows. Program współpracuje z interfejsem urządzeń gra-
ficznych (GDI - Graphics Device Intarface) zarządzając informacjami 
graficznymi przepływającymi do (oraz od) aplikacji. Standardową 
funkcją modułu jest przyjęcie żądania aplikacji (na przykład utworze-
nie okna) i wysłanie jej do GDI. Z drugiej strony, wszystkie informacje 
związane ze zmianą ekranu, zainicjowane przez użytkownika (na 
przykład przesunięcie okna), są przesyłane przez moduł do aplikacji. 

„

Graphics Device Intarface (interfejs urządzeń graficznych) odpowiada 
za tworzenie graficznych obrazów zarówno na ekranie, jak i na dru-
karce. Dostarcza zbioru standardowych funkcji umożliwiających 
współpracę aplikacji z konkretnymi urządzeniami graficznymi. GDI, 
zarządza informacjami dotyczącymi cech obrazu przepływającymi od 
aplikacji do sterownika graficznego. Dzięki GDI aplikacja współpracu-
je z urządzeniem wyświetlającym (ekranem lub drukarką) bez jakiej-
kolwiek znajomości cech urządzenia. O module można myśleć jako 
o tłumaczu, przekładającym z języka aplikacji, na język zrozumiały 
przez sterowniki urządzeń. 

„

Graphics Device Drivers (sterowniki urządzeń graficznych) tworzą mo-
duł, będący zbiorem bibliotek DLL zawierających funkcje umożliwia-
jące dostęp GDI do fizycznych urządzeń wyjściowych, najczęściej mo-
nitora i drukarki. Sterowniki otrzymują od GDI zrozumiałe dla nich 
instrukcje i zlecają urządzeniom określone przez nie zadania. Wyko-
rzystanie sterowników pozwala na oddzielną implementację bardzo 
specyficznych cech urządzeń w niezależnych modułach, które są ob-

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

80 

sługiwane przez wspólny zbiór instrukcji. Sterowniki niskiego pozio-
mu bezpośrednio regulują pracę urządzeń, natomiast sterowniki wy-
sokiego poziomu wpierają GDI, dzieląc zadania na mniejsze części, 
zrozumiałe dla sterowników niskiego poziomu. 

Znając już komponenty obu warstwy systemu operacyjnego, możemy 
przyjrzeć się różnym, istotnym dla bezpieczeństwa procesom, które reali-
zują poszczególne elementy 

System ochrony Windows NT 

Moduły należące do warstw trybu jądra oraz trybu użytkownika wyko-
nują wiele wewnętrznych operacji systemowych. Rozpoczniemy od krót-
kiego przeglądu komponentów tworzących podsystem ochrony. Oto lista 
składników wraz z opisem realizowanych przez nie funkcji: 

„

Moduł procesów rejestracji służy do weryfikacji użytkowników rejestru-
jących się w systemie. 

„

Ośrodek zabezpieczeń lokalnych{ XE „Ośrodek zabezpieczeń lokalnych”  } 
służy wspólnie z procesami rejestracyjnymi do weryfikacji upoważ-
nień przyznanych kontu użytkownika. Status konta użytkownika mu-
si zostać sprawdzony, zanim uzyska dostęp do systemu. Ośrodek za-
bezpieczeń lokalnych jest najważniejszym elementem podsystemu 
bezpieczeństwa pracującym w trybie użytkownika. Moduł jest odpo-
wiedzialny za współdziałanie z 

procesami rejestracyjnymi 

i generowanie przepustki dostępu do systemu (SAT- System Access To-
ken
). Inne zadania komponentu to realizacja strategii nadzoru 
i wytwarzanie komunikatów o zdarzeniach związanych z rejestracją 
dla kontrolera wskaźników bezpieczeństwa (SRM). 

„

Security Account Manager (menedżer zabezpieczeń kont) jest obecnie 
nazywany bazą danych usług katalogowych (directory services databa-
se
). Moduł SAM odpowiada za obsługę baz danych zawierających in-
formacje o kontach użytkowników. W procesie rejestracji współpracu-
je z poprzednim składnikiem, dostarczając informacji niezbędnych do 
weryfikacji użytkownika. 

„

Kontroler wskaźników bezpieczeństwa - moduł  służy do sterowania we-
wnętrzną ochroną systemu; zarządza dostępem, tworzeniem 
i usuwaniem wszystkich obiektów w systemie. Swoje zadania wyko-
nuje dzięki liście kontroli dostępu (ACL- Access Control List), która jest 
skojarzona z każdym obiektem. Każdy obiekt zawiera z kolei elemen-
ty o nazwie pozycje kontroli dostępu (ACE- Access Control Entries), 
a każda z nich zawiera unikatowy identyfikator bezpieczeństwa użyt-
kownika lub grupy (SID- Security ID). W chwili obecnej identyfikator 

background image

Architektura systemu operacyjnego Windows NT  

81 

 

SID jest unikatową liczbą generowaną przez system operacyjny, która 
jest przyporządkowana każdemu użytkownikowi (i 

grupie) 

w domenie.  

Zanim obejrzymy z bliska proces rejestracji, musimy najpierw zdobyć 
kilka informacji o identyfikatorach bezpieczeństwa oraz kontach użyt-
kownika. W chwili, gdy administrator systemu tworzy konto użytkowni-
ka, system kojarzy z nim unikatowy numer zwany identyfikatorem bez-
pieczeństwa (SID - Security IDentification number). Dopóki użytkownik 
pozostaje aktywny w systemie, dopóty jest rozpoznawany przez ten 
identyfikator. W razie usunięcia i ponownego utworzenia konta, system 
przyznaje użytkownikowi zupełnie nowy identyfikator. Nie będzie mu 
przydzielony żaden z atrybutów ochrony należny poprzedniemu kontu. 
Każde uprawnienie, w które chcemy wyposażyć użytkownika, musi być 
ponownie skojarzone z nowym kontem. 

Proces rejestracji w systemie (Log-On Process) 

Zakładamy, że czytelnikowi znany jest widok ekranu w czasie rejestracji 
oraz przebieg procesu. Zaczynamy od wciśnięcia kombinacji klawiszy 
CTRL+ALT+DEL

, która otwiera okno rozpoczynające rejestrację. 

Wprowadzamy identyfikator swojego konta, hasło, wciskamy klawisz 
OK

 i jak za dotknięciem czarodziejskiej różdżki jesteśmy zalogowani 

w systemie. Chociaż proces przebiega bardzo szybko, to zanim dobiegnie 
końca, musi wydarzyć się wiele rzeczy. 

Jedno ze zdarzeń polega na utworzeniu przepustki (SAT- Security Access 
Token
) obowiązującej na czas trwania sesji. Zawiera ona ciąg informacji 
wykorzystywanych przy ubieganiu się o dostęp do zasobów systemu. 
Znajdują się na niej między innymi identyfikatory użytkownika oraz 
wszystkich grup, do których należy. Każdy program oraz proces 
uruchomiony w kontekście konta użytkownika wyposażony jest w kopię 
jego przepustki. Jeśli aplikacja żąda dostępu do obiektu, to przepustka 
jest wykorzystywana do sprawdzenia, jakie uprawnienia ma do niego 
użytkownik. 

Każdy obiekt systemu operacyjnego zawiera listę uprawnień dostępu. 
Lista jest porównywana z przepustką  użytkownika  żądającego dostępu 
do zasobu. Jeżeli na liście znajduje się identyfikator użytkownika lub 
grupy, do której należy, to uzyskuje dostęp do obiektu, zgodnie z pozio-
mem uprawnień określonym przez listę. 

Proces rejestracji rozpoczyna się w chwili wciśnięcia kombinacji klawiszy 
CTRL+ALT+DEL

[MF1]

, nazywanej czasem sekwencją skupienia nad bez-

pieczeństwem, której wynikiem jest wyświetlenie okna, zawierającego 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

82 

żądanie podania nazwy konta i hasła. Celem takiego rozwiązania jest 
zabezpieczenie przed możliwością przechwycenia danych identyfikacyj-
nych użytkownika przez program imitujący ekran rejestracyjny (takie 
programy nazywamy koniami trojańskimi). Podana kombinacja klawiszy 
generuje funkcję niskiego poziomu wywoływaną przez system operacyj-
ny, która nie może być skopiowana z poziomu programów. Przechwyce-
nie kombinacji CTRL+ALT+DEL i zmiana jej znaczenia jest jednak możli-
we na platformie DOS. Dlatego należy uważać na konie trojańskie działa-
jące w sesji DOS uruchamianej przez zrestartowanie konsoli z dyskietki.  

Na  żądanie systemu należy wprowadzić nazwę konta oraz hasło. Po-
twierdzenie danych identyfikacyjnych rozpoczyna proces, który musi się 
zakończyć przyznaniem lub zakazaniem dostępu do systemu. Odebrane 
przez proces rejestracji dane o użytkowniku są przekazywane do ośrodka 
zabezpieczeń lokalnych, który wywołuje pakiet weryfikacyjny (authentifi-
cation package
). 

Oryginalny pakiet może być zastąpiony innym. Umożliwia to producen-
tom pisanie własnych pakietów identyfikacyjnych, których zadaniem jest 
umożliwienie jednoczesnego dostępu do kilku systemów lub wykorzy-
stanie do potwierdzania tożsamości różnego rodzaju urządzeń fizycz-
nych. Przykładowo: czytników kart magnetycznych, głosu a nawet klu-
czy mechanicznych. 

Pakiet identyfikacyjny sprawdza nazwę konta i hasło porównując je 
z bazą danych kont użytkowników. Jeśli weryfikacja przebiegnie ko-
rzystnie, to menedżer ochrony kont (SAM) zwraca identyfikatory bezpie-
czeństwa (SID) użytkownika oraz wszystkich grup, których jest człon-
kiem. Pakiet identyfikacyjny tworzy sesję rejestracyjną, która wspólnie 
z identyfikatorami jest przesyłana z powrotem do ośrodka zabezpieczeń 
lokalnych. 

W tym momencie moduł rozpoczyna tworzenie przepustki. Oprócz iden-
tyfikatora użytkownika i wszystkich grup, których jest członkiem prze-
pustka zawiera informację o uprawnieniach przynależnych do każdego 
ID. 

W kolejnym etapie przepustka jest zwracana procesowi rejestracji. Tu 
wskutek skojarzenia przepustki z procesami tworzonym dla użytkowni-
ka przez podsystem Win32 powstaje zakres upoważnień  użytkownika. 
Od tego momentu podsystem Win32 uruchamia interaktywną sesję użyt-
kownika. 

Jeżeli pakiet identyfikacyjny nie potwierdzi konta na lokalnej bazie da-
nych, to odpowiednia informacja zwracana jest pakietowi alternatywne-
mu (o ile istnieje w sieci). W razie niepowodzenia weryfikacji system 
zwraca informację,  że błędnie wprowadzono nazwę konta lub hasło. 

background image

Architektura systemu operacyjnego Windows NT  

83 

 

W takim przypadku użytkownik może podjąć ponowną próbę rejestracji 
w systemie. 

Uprawnienia użytkownika 

Zazwyczaj różnym użytkownikom systemu przyznane są pewne ograni-
czone uprawnienia administracyjne. Prawo do wygaszania komputera 
lub do archiwizacji plików są przykładami uprawnień  użytkownika. 
Różnica między prawami użytkownika a uprawnieniami dostępu tkwi 
w sposobie ich przyznawania. Prawa dostępu są określane w wyniku 
porównania identyfikatorów na przepustce użytkownika z zawartością 
listy kontroli dostępu konkretnego obiektu. Prawa użytkownika dotyczą 
aktywności, która nie jest związana ze specyficznym obiektem. 

Zakres upoważnień użytkownika, pojęcie personifikacji 

Jak już wcześniej wzmiankowano, zakres uprawnień konta użytkownika 
jest kombinacją procesów wykonywanych przez Win32 oraz przepustki 
użytkownika. Zazwyczaj zakres uprawnień konta dotyczy programów 
uruchamianych przez użytkownika. Mówimy, że programy są urucha-
miane w kontekście uprawnień  użytkownika. Zasada polega na ograni-
czeniu możliwości aplikacji do zakresu uprawnień posiadanych przez 
osobę, która ją uruchamia. 

W systemie operacyjnym Windows NT można mówić o dwóch rodzajach 
zakresów upoważnień. Pierwszy, zwany prostym, dotyczy procesów, dla 
których konteksty bezpieczeństwa zostały określone w momencie reje-
stracji. Drugi, zwany zakresem upoważnień serwera, dotyczy procesów 
implementowanych przez chroniony serwer.  

Próba wywołania usług obiektów chronionego podsystemu powoduje 
sprawdzenie, czy zakres upoważnień zawiera wystarczające uprawnie-
nia. Czasami, wywoływane przez użytkownika, procesy serwera wyma-
gają dostępu do obiektów, do których nie mają uprawnień. Przejmują 
wtedy atrybuty bezpieczeństwa klienta w procesie nazywanym personi-
fikacją. Umożliwia to dostęp do niezbędnych obiektów w kontekście 
uprawnień użytkownika. 

Obiekty, Typy obiektów 

Jak już mówiliśmy, wszystkie obiekty reprezentują pewne procesy, użyt-
kowników lub zasoby zawarte w systemie. Każdy z nazwanych obiektów 
(jak również niektóre nienazwane) zawiera deskryptor bezpieczeństwa. 
Deskryptor składa się z różnych informacyjnych parametrów, opisują-

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

84 

cych upoważnienia dostępu do obiektu. Informacje zawarte 
w deskryptorze obejmują: 

„

Identyfikator ochronny właściciela (owner security ID)  określający 
użytkownika (lub grupę), który jest właścicielem obiektu. 

„

Identyfikator ochronny grupy jest elementem używanym jedynie 
przez podsystem POSIX, pomijanym przez pozostałe podsystemy 
Windows NT. 

„

Lista kontroli dostępu (ACL{ XE „Lista kontroli dostępu (ACL)” }- Access 
Control List
) jest spisem użytkowników i grup mających uprawnienia 
do obiektu. Zawiera również spis użytkowników i grup, którzy mają 
indywidualnie zabroniony dostęp do obiektu. 

„

Lista kontroli dostępu do systemu jest pozycją sterującą komunikata-
mi układu monitorującego; określa rodzaj wiadomości generowanych 
przez system. 

Obiekty można podzielić na proste (non-container) i złożone (container). 
Obiekty złożone zawierają inne obiekty, które dziedziczą atrybuty bez-
pieczeństwa układów nadrzędnych. Atrybuty bezpieczeństwa, zależne są 
od rodzaju obiektów, których dotyczą. Przykładowo: atrybuty bezpie-
czeństwa plików są różne od atrybutów kolejek drukarki. 

Jak działa lista kontroli dostępu 

Lista kontroli dostępu do obiektu zawiera informacje opisujące upraw-
nienia dostępu oraz zasady monitoringu przyznane użytkownikowi (lub 
grupie) do konkretnego obiektu. Wiadomości zapisane są w odpowied-
nich pozycjach kontroli dostępu (ACEs-Access Control Entries). Lista może 
zawierać trzy rodzaje pozycji. Pierwsze dwie są nazywane dyskrecjonal-
nymi, gdyż niosą informacje dotyczącą uprawnień dostępu (AccessAllo-
wed
) lub ich braku (AccessDenied). Analiza dostępności do obiektu zaczy-
na się zawsze od przeglądu pozycji zabraniających dostępu. Trzeci typ 
obejmuje pozycje systemu nadzoru (SystemAudit), decydujące o rodzaju 
komunikatów generowanych system monitorujący, które zostaną zapisa-
ne w dzienniku zdarzeń systemu bezpieczeństwa. 

W chwili, gdy użytkownik próbuje uzyskać dostęp do obiektu, kontroler 
wskaźników bezpieczeństwa sprawdza numer identyfikatora na jego 
przepustce, porównując go z pozycjami na liście kontroli dostępu. Jeśli 
kontroler znajdzie pozycję zawierającą identyfikator, to przystępuje do 
sprawdzania jej rodzaju. Gdy pozycja dyskrecjonalna zawiera informację 
o zabronionym dostępie (AccessDenided), dostęp użytkownika do obiektu 
jest niemożliwy i dalsza kontrola jest wstrzymana. Jeśli natomiast użyt-

background image

Architektura systemu operacyjnego Windows NT  

85 

 

kownik ma prawo dostępu (AccessAllowed), kolejne procesy analizują tak 
zwaną maskę dostępu użytkownika (Access Mask). 

Wykorzystanie maski dostępu użytkownika 

Każda pozycja uprawnionego dostępu (AccessAllowed) zawiera zbiór 
uprawnień. Są one właściwe każdemu typowi obiektu i są wspólnie na-
zywane specyficzną maską dostępu pozycji kontroli (ACE’s specific access 
mask
). Określonych jest szesnaście poziomów dostępu, które mogą być 
przyznane do każdego obiektu. Maski dostępu, które można skojarzyć 
z każdym obiektem noszą nazwę  standardowych masek dostępu  (standard 
access masks
).  Tworzą one zbiór uprawnień, które są wykorzystywane 
łącznie ze specyficznymi maskami dostępu. Poniższa lista ilustruje maski 
dostępu wykorzystywane przez Windows NT 4.0: 

„

SYNCHRONIZE 

służy do synchronizacji dostępu, uprawnia proces do 

oczekiwania aż obiekt umożliwi wprowadzenie sygnalizowanego sta-
nu. 

„

WRITE_OWNER{ XE „WRITE_OWNER” \t „Patrz Maski dostępu użytkow-
nika” } 

uprawnia do przyznawania możliwości określania właściciela. 

„

WRITE_DAC 

uprawnia do przyznawania lub zabraniania modyfikacji 

dyskrecjonalnych pozycji listy kontroli dostępu. 

„

READ_CONTROL 

uprawnia do przyznawania lub zabraniania prawa 

odczytu deskryptora bezpieczeństwa i właściciela obiektu. 

„

DELETE 

uprawnia do przyznawania, odbierania lub usuwania prawa 

dostępu. 

Oprócz specyficznych i standardowych masek dostępu istnieje jeszcze 
typ określany ogólnymi maskami dostępu (generic access mask). Ten rodzaj 
masek określa zasięg uprawnień „natury ogólnej”. Są to: 
„

GENERIC_READ

 

„

GENERIC_EXECUTE

 

Ogólne maski dostępu mogą być odwzorowane na specyficzny zbiór 
uprawnień dostępu (lub specyficzną maskę dostępu) przez aplikację 
tworzącą obiekt. Na przykład: GENERIC_EXECUTE może być 
odwzorowana przez aplikację definiującą obiekt na jedną ze 
specyficznych masek obiektu o nazwie FILE_RUN. Zazwyczaj wszystkie 
ogólne typy masek są odwzorowywane na inne należące do typu stan-
dardowego lub specyficznego. 

Co się dzieje jeśli użytkownik próbuje uzyskać dostęp do obiektu? Otóż 
tworzona jest jeszcze jedna maska o nazwie maska pożądanego dostępu 
(desired access mask). Zawiera ona listę uprawnień do wybranego obiektu, 

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

86 

potrzebnych użytkownikowi (lub procesowi działającemu w kontekście 
uprawnień użytkownika). 

Oto algorytm realizowany przez Windows NT celem weryfikacji upraw-
nień dostępu do zasobów przysługujących użytkownikowi lub aplikacji 
działającej w kontekście jego uprawnień: 

1. Przepustka użytkownika (SAT- Security Access Token) (lub aplikacji 

działającej w kontekście jego uprawnień) jest porównywana ze zbio-
rem identyfikatorów wszystkich pozycji (ACE) listy kontroli dostępu 
(ACL). Jeżeli  żaden identyfikator z 

przepustki nie zgadza się 

z identyfikatorami pozycji dostępu, pozycja jest pomijana. 

2.  Wszystkie pozycje zabraniające dostępu są analizowane w pierwszej 

kolejności. Jeśli dostęp do obiektu jest zabroniony, system sprawdza 
czy maska pożądanego dostępu zawiera żądanie ReadControl lub (i) 
WRITE_DAC. Jeśli tak, system sprawdza czy użytkownik jest właści-
cielem obiektu. Jeśli użytkownik jest właścicielem, to otrzymuje do-
stęp do obiektu, w przeciwnym razie dostęp do obiektu jest zabronio-
ny. 

3. Jeśli dostęp do obiektu jest wykluczony zabraniającą dostępu pozycją 

kontroli dostępu (AccessDenided ACE), dalsza analiza jest wstrzymana, 
nawet jeśli inne uprawnienia znajdują się zarówno na następnych po-
zycjach ACE jak i na masce pożądanego dostępu. Dostęp użytkownika 
do obiektu jest po prostu wykluczony. 

4.  Analiza jednej pozycji listy kontroli dostępu trwa do czasu znalezienia 

jednej z wartości: dostęp uprawniony (AccessAllowed), lub dostęp za-
broniony (AccessDenided). Jeśli jedna z pozycji kontroli (ACE) zawiera 
uprawnienie dostępu, to lista uprawnień maski pożądanego dostępu 
jest porównywana ze spisem uprawnień pozycji kontroli (ACE). Jeżeli 
lista uprawnień maski pożądanego dostępu zawiera żądania, wykra-
czające poza uprawnienia zawarte w spisie pozycji kontroli (ACE), 
system analizuje w ten sam sposób kolejne pozycje kontroli (ACE) li-
sty kontroli dostępu (ACL). Użytkownik otrzymuje dostęp do obiektu, 
jeśli wszystkie pozycje maski pożądanego dostępu występują na jed-
nej lub kilku pozycjach kontroli dostępu (ACE). 

5. Dostęp do obiektu jest bezwarunkowo wykluczony, jeśli maska pożą-

danego dostępu zawiera choćby jedno żądanie nie występujące wśród 
uprawnień zawartych na liście kontroli dostępu (ACL). 

Znaczenie rejestrów Windows NT 

Ważną rolę w systemie ochrony systemu operacyjnego spełniają rejestry. 
Rejestry Windows NT (i Windows 95) zawierające wszystkie informacje 

background image

Architektura systemu operacyjnego Windows NT  

87 

 

konfiguracyjne, zastąpiły liczne zbiory inicjujące (*.ini), które występowa-
ły w Windows 3.x. Rejestry są  złożoną strukturą, składającą się z wielu 
pozycji, zawierających różne informacje niezbędne do właściwej konfigu-
racji i działania systemu. Każda pozycja może również zawierać pozycję 
niższego rzędu, które z kolei znów zawierają dane lub pozycje rzędu 
niższego. 

Wszystkie pozycje rejestru są zorganizowane w układzie o strukturze 
drzewa z pięcioma gałęziami głównymi. Każda gałąź ma własną, charak-
terystyczną strukturę. Jaka jest rola rejestrów w systemie ochrony? 
Wszystkie informacje związane z bezpieczeństwem lokalnego komputera 
są zawarte w jednej z gałęzi rejestrów. Jeśli serwer pełni rolę kontrolera 
domeny, to wszystkie dane istotne dla bezpieczeństwa całej domeny są 
również umieszczane w strukturze rejestrów. W szczególności cała baza 
danych usług katalogowych (wcześniej baza danych SAM) dla domeny 
zawiera się w rejestrach głównego lub zapasowych kontrolerów domeny. 

Gałąź rejestrów o nazwie 

HKEY_LOCAL_MACHINE

 zawiera bazę danych 

usług katalogowych oraz inne informacje związane z bezpieczeństwem 
systemu. Te specyficzne pozycje oraz podstruktury są nazywane rojami 
(hives), ponieważ reprezentują dyskretny zbiór powiązanych pozycji 
i struktur.  W przeciwieństwie do innych pozycji nie są tworzone dyna-
micznie, ale są stałą częścią systemu operacyjnego. Każdy rój jest związa-
ny  z jednym  (lub  więcej ) zbiorem standardowych plików, w których 
przechowywane są różne istotne informacje. 

HKEY_LOCAL_MACHINE

 zawiera różnorodne pozycje przechowujące 

informacje związane z bezpieczeństwem, do najważniejszych należą: 

HKEY_LOCAL_MACHINE\SAM

 pozycja zawiera bazę danych usług kata-

logowych (dawniej 

SAM

) dla kont użytkowników i grup. Jeśli serwer jest 

kontrolerem domeny, to tutaj mieści się baza danych usług katalogowych 
dla całej domeny. Standardowe pliki stowarzyszone z tą pozycją to Sam, 
Sam.log oraz Sam.sav. 

HKEY_LOCAL_MACHINE\Security

 pozycja jest używana przez podsystem 

ochrony Windows NT i zawiera informacje o regułach lokalnej strategii 
ochrony. Standardowe zbiory skojarzone z pozycją to Security, Securi-
ty.log oraz Security.sav. 

Struktura 

HKEY_LOCAL_MACHINE\Sam

 zawiera informacje systemu 

ochrony o użytkownikach i grupach działających na maszynie lokalnej 
lub w domenie. Jeżeli komputer jest kontrolerem domeny, pozycja jest 
automatycznie odwzorowana i skopiowana na pozycję 

HKEY_LOCAL_

 

MACHINE\security\SAM

background image

 

Część I  Przegląd systemu ochrony Microsoft Windows NT 

88 

Ostrzeżenie 

Nie wolno zmieniać pozycji HKEY_LOCAL_MACHINE\SAM, ani żadnej 
struktury podrzędnej przy pomocy programu narzędziowego do edycji rejestrów 
(Windows NT registry editor). Wszystkie informacje tej pozycji zapisane są 
w formacie binarnym i nie mogą być edytowane „ręcznie”. Wszystkie niezbędne 
zmiany dotyczące ochrony użytkowników, grup, uprawnień NTFS powinny być 
wykonywane odpowiednimi narzędziami systemowymi takimi jak User 
Manager for Domains. 

Ważna jest systematyczna archiwizacja rejestrów, zwłaszcza jeśli baza 
danych usług katalogowych podlega częstym zmianom. Kopię zapasową 
najłatwiej wykonać przy użyciu systemowego programu archiwizującego 
(NT Backup). Dobrze mięć również więcej niż jeden kontroler domeny, co 
zapewnia ciągłą dostępność bazy danych usług katalogowych. 

W innych rozdziałach... 

Skończywszy naukę o architekturze systemu możemy przejść do studio-
wania metod tworzenia domen i określania relacji upoważnienia. 

„

Rozdział 4  - Pojęcie domen Windows NT- wprowadza w szczegóły procesu 
tworzenia i administrowania domeną. Poznamy wiele metod ułatwiających 
zadania administracyjne. 

„

Rozdział 5 - Rola relacji upoważnienia między domenami w systemie ochrony - uczy 
dlaczego, kiedy i jak tworzyć typowe modele domen wykorzystując różne re-
lacje upoważnienia. 

„

Rozdział 6  -  Ochrona kont użytkownika w systemie Windows NT- skupia się na 
szczegółach tworzenia i konserwacji kont użytkowników i grup. Omówimy 
typy predefiniowanych kont Windows NT oraz sytuacje, w których należy 
z nich korzystać.