niedziela, lipca 30, 2006

Identyfikacja dostępu do zasobów w Windows


Przeprowadzanie autentykacji użytkowników w serwerze internetowym IIS

Spojrzenie historyczne - prawa dostępu użytkowników do zasobu w środowisku Windows są przechowywane w samych zasobach. Generalnie istnieją dwa protokoły autentykacji: named pipes (domyślny do MS SQL) oraz TCP/IP.

Zabezpieczenie IIS jest o tyle zagmatwane, że IIS korzysta z zabezpieczeń Windows - IIS jest środkiem do udostępniania plików z serwera w przeglądarce klienta. Jak nieznany użytkownik sieci może być autentykowany? Drogą do tego jest specjalne konto "wytrych" wpuszczające (potencjalnie) do wewnątrz zasobów Windows - IIS Anonymous User. Administrator musi stworzyć dla niego lokalne konto - IUSR_machinename (np. IUSR_marekw) który ma prawo "log on locally" i należy do grupy "Guest". Teoretycznie jest to bezpieczne.

Typy autentykacji (i podanie danych akredytacji do otrzymania dostępu do zasobów, gdy konto anonimowe jest zablokowane:

  1. Challenge/Response - działa dobrze w domenie Windows i tylko gdy przeglądarką klienta jest IE (czyli po zalogowaniu się do domeny, użytkownik jest automatycznie widziany przez IIS).
  2. Basic Authentication - jeżeli C/R nie uda się - przeglądarka prezentuje dialog żądający podania konta i hasła (są one wysyłane do IIS - czystym tekstem zakodowane Base64), zwykle wzmacnia (chroni przed podsłuchem) się tę transmisję poprzez SSL. Po otrzymaniu danych IIS przedstawia się w Windows jako ten użytkownik którego konto uzyskał w wyniku dialogu z przeglądarką.

Sposób aby programistycznie można wymusić autentykację:

<%

Response.Clear

Response.Buffer = True

Response.Status = "401 Unauthorized"

Response.AddHeader "WWW-Authenticate","NTLM"

Response.End

%>

Impersonifikacja (przestawienie się) - serwer IIS obsługuje pobranie zawartości pliku poprzez przedstawienie się jako konkretny użytkownik (anonimowy - IUSR_marekw, lub jako ten którego akredytację podał przy ekranie logowania). Użytkownik ten musi mieć prawo logowania się lokalnego do serwera Windows.

Oddelegowanie (delegation) - nie ma go w NT 4.0

SSL - oprogramowanie kodujące transmisję, duży narzut na wydajność serwera.


Zabezpieczenie MS SQL Server'a

Ma trzy poziomy: standard (wbudowany i pomija autentykację z domeną), zintegrowany z NT (wykorzystuje do logowania do MS SQL konto zalogowanego do domeny użytkownika - najczęściej wykorzystuje się protokół 'named pipes'), hybrydowy. Należy pamiętać, żeby stosować 'SYSTEM DSN' oraz podawać jako nazwę serwera 'local', gdy serwer SQL jest na tej samej maszynie co IIS - poprawia to wydajność.

Sprawy się naprawdę komplikują w przypadku zainstalowanie MS SQL na innym serwerze niż IIS.


Brak komentarzy: