Wstęp do systemu zabezpieczeń w Windows 2000

Autor: Krzysztof Satoła

Rozwiązania zabezpieczające są w Windows 2000 głęboko zintegrowane z systemem. Aplikacje działają w trybie użytkownika, a system w trybie jądra. Wszystkie odwołania do zasobów zachodzą poprzez interfejs

programowy API (Application Programming Interface), który

komunikuje się z usługami działającymi pod kontrolą systemu.

System bezpieczeństwa w Windows 2000 działa w warstwie trybu

użytkownika jak i w warstwie trybu jądra. W trybie użytkownika działają usługi np. Active Directory (AD), natomiast w trybie jądra nad bezpieczeństwem systemu czuwa moduł Security Reference Monitor (SRM). Wszelkie krytyczne ze względu bezpieczeństwa decyzje podejmowane są w trybie jądra, gdzie użytkownik oraz procesy przez niego uruchamiane nie mają wstępu. To powoduje, że Windows 2000 w

rękach świadomego administratora jest bardzo bezpiecznym systemem operacyjnym.

Zintegrowanie AD z podsystemem bezpieczeństwa systemu operacyjnego daje nam pewność, że można zaimplementować (wdrożyć) bezpieczny

mechanizm komunikacji w sieci opartej o Windows 2000. W związku z tym ochrona danych, tych składowanych i tych przesyłanych, będzie

kombinacją trzech elementów: autentykacji, zapewnienia jednoznacznej identyfikacji i autoryzacji, oraz potwierdzenia, że użytkownik ma

odpowiednie uprawnienia do zasobów i prawa do wykonania zadania.

Podczas autoryzacji podsystem bezpieczeństwa, działając w trybie

użytkownika, przesyła zapytania do SRM (tryb jądra) w celu porównania dostarczonych mu danych z listą DACL (Discretionary Access Control List) obiektu. Lista DACL zawiera wpisy ACE (Access Control Entry), które definiują uprawnienia użytkowników przypisane im do obiektu.

Każdy wpis ACE zawiera wpis kto i co może robić z obiektem.

Podsystem bezpieczeństwa (Security Subsystem) działa w

kontekście procesu LSA (Local Security Authority), który jest pomostem między trybem użytkownika a trybem jądra. Proces LSA

zawiera:

• usługę Netlogon (Netlogon.dll) - której zadanie polega na utrzymywaniu bezpiecznego połączenia z kontrolerem domeny,

przesyłania danych uwierzytelniających i zwrocie tzw. żetonu

dostępu (Access Token) po udanym zalogowaniu.

• protokół NTLM (Msv1_0.dll) - który zapewnia autentykację klientów nie obsługujących Kerberosa (Windows 9x oraz NT).

• protokół SSL (Schannel.dll) - zapewniający usługę szyfrowania danych przesyłanych siecią (na poziomie aplikacji).

• protokół Kerberos v5 (Kerberos.dll) - jest standardowo używany w Windows 2000 do zapewnienia bezpiecznej autentykacji bazującej

na TGT (Ticket-Granting Tickets) oraz biletach usługowych.

• usługę centrum dystrybucyjnego kluczy dla Kerberosa

(Kdcsvc.dll) - odpowiedzialną za wysłanie TGT do klienta, który po raz pierwszy loguje się w jako użytkownik zasobów sieciowych.

• usługę serwera LSA (Lsasrv.dll) - która wymusza stosowanie zasad bezpieczeństwa AD.

• bazę zabezpieczeń lokalnych SAM (Samsrv.dll) - używaną w sieciach bezdomenowych oraz lokalnie. SAM zapewnia też

stosowanie lokalnych zasad bezpieczeństwa.

• moduł Directory Service (ntdsa.dll) - wspierający replikację między kontrolerami domeny, dostęp do AD poprzez protokół LDAP

(Lightweight Directory Access Protocol) oraz inne usługi względem

AD.

• Multiple Authentication Provider (Secur32.dll) - wspiera wszystkie pakiety związane z bezpieczeństwem dostępne w systemie

(Kerberos, Windows NT LAN Manager (NTLM), Secure channel oraz

pakiety Distributed Password Authentication (DPA)).

LSA utrzymuje wszelkie informacje związane z bezpieczeństwem w

Windows 2000. W szczególności zapewnia:

• interaktywną autentykację na komputerach z Windows 2000.

• generuje znacznik dostępu (Access Token) dla podmiotu

zabezpieczeń podczas procesu autentykacji.

• zarządza lokalnymi zasadami zabezpieczeń i audytami.

• tworzy listę zaufanych domen, która jest widoczna w okienku

podczas logowania.

• określa przywileje użytkowników oraz zapewnia dostęp tylko do tych zasobów, do których istnieje pozwolenie.

• zarządza kolejkami pamięci stronicowanej i niestronicowanej.

Windows 2000 pozwala na różne sposoby autentykacji przy pomocy kilku protokołów. Zapewnia to jak największą zgodność z różnymi maszynami klienckimi występującymi w sieci. Każdy z klientów może wykorzystać taki protokół, jaki z jego strony wydaje się być najbezpieczniejszy. Windows 2000 wspiera następujące protokoły:

Windows NT LAN Manager (NTLM)

Używany przez klientów AD Windows NT, 95 i 98 oraz lokalnie przez

systemy Windows 2000 Professional i Server (member server). Podczas procesu autentykacji korzysta się z usługi MSV1_0 oraz usługi Netlogon.

Kerberos v5

Jest standardowym protokołem uwierzytelniającym dla systemów

Windows 2000. Zapewnia wzajemną autentykację klienta i serwera, lepszą wydajność, a także wspiera udzielanie pełnomocnictw. Proces autentykacji korzysta z usługi KDC na kontrolerze domeny oraz z AD podczas

uzyskiwania TGT i biletów usługowych.

Distributed Password Authentication (DPA)

Protokół używany w Internecie przez organizacje takie jak MSN. DPA jest częścią Microsoft Commercial Internet System (MCIS). Jest to usługa pozwalająca na pojedyncze logowanie oraz dostęp do wielu zasobów

sieciowych (zob. .NET Password), będących we władaniu członków

organizacji.

Secure channel (Schannel)

Zapewnia autentykację przy pomocy protokołów bazujących na kluczach publicznych takich jak Secure Socket Layer (SSL) czy Transport Layer Security (TLS). Windows 2000 wspiera mechanizm Public Key

Infrastructure (PKI) umożliwiający wydawanie i weryfikację kluczy

publicznych.

Niezależnie od sposobu autentykacji wszystkie żądania przechwytuje warstwa pośrednia zwana Security Support Provider Interface (SSPI).

Dzięki temu aplikacje otrzymują jednolity interfejs programowy a system dba o resztę, czyli o wybór konkretnego protokołu. Więcej na ten temat znaleźć można w dokumencie RFC 1508 (www.rfc-editor.org/rfc.html).