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).