IIS 7.0 - Bezpieczne udostępnianie usług www BłaŜej Miga blazej.miga@man.poznan.pl Zespół Bezpieczeństwa PCSS Centrum Innowacji Microsoft 1
Wstęp Bezpieczny hosting Komponenty serwera IIS + ASP.NET - dobrana para ZagroŜenia przykładowe ataki Zabezpieczamy serwer 2
Zespół PCSS Bezpieczeństwa Praca operacyjna w ramach ogólnopolskiej szerokopasmowej sieci PIONIER oraz zasobów Centrum Praca badawczo naukowa w ramach projektów krajowych oraz europejskich (CLUSTERIX, EGEE, itvp, MIC) Usługi komercyjne (audyty, testy penetracyjne, analizy kodów źródłowych i binarnych, szkolenia, etc...) Praca po godzinach (bezpieczeństwo systemów hostingowych, PKI) http://security.psnc.pl/ 3
Bezpieczny hosting Poufność zapewnienie poufności kodom źródłowych skryptów klienta ograniczenie dostępu do danych konfiguracyjnych serwera, serwisów, aplikacji Dostępność dostępność aplikacji 24x7x365 minimalizacja czasu odtworzenia środowiska Integralność danych zabezpieczenie aplikacji i danych przed modyfikacjami osób trzecich. 4
Komponenty serwera IIS IIS 5.0 IIS 7.0 DLLHost ISAPI Extensions INETINFO.EXE ASPNETWP ASP.NET Apps W3SVC WAS Worker Process w3wp.exe ASP.NET Web App Metabase WinSock 2.0 user AFD.SYS TCP/IP kernel HTTP.SYS TCP/IP 5
http.sys Driver kernel-mode komponent http protocol stack Obsługuje połączenia https Klasa HttpListener komunikacja z http.sys Konfiguracja netsh http httpcfg 6
http.sys MoŜliwości konfiguracyjne netsh http add iplisten... netsh http add sslcert... netsh http add timeout... netsh http add urlacl... netsh http show cachestate HKLM\SYSTEM\CurrentControlSet\Servi ces\http\parameters Strony z informacją o pojawiających się błędach wkompilowane w http.sys 7
Tips & Tricks Wyszukiwanie hostingów IIS 7.0 Asdas method Server: Microsoft-HTTAP!/2.0 HKLM\SYSTEM\CurrentControlSet\Servi ces\http\parameters\urlaclinfo http://+:80/temporary_listen_addresses/ http://+:80/wsman/ 8
Tips & Tricks http://.../wsman/ (np. www.iis.net/wsman/) 9
Internet Information Services IIS ver 1.0 Windows NT 3.51 (maj 1995r.) 13 lipiec 2001 Code Red worm 2005 Bill Staples We've learned from Apache 30 styczeń 2007 Windows Vista IIS 7.0 Budowa modułowa Konfiguracja pliki xml Nowy panel administracyjny 10
KONKURS www.secunia.com IIS ver. 6.0 2003-2006 3 advisories (2 Moderately, 1 less) Apache 2.0.x 2003-2006 33 advisories (większość less critical) Sun ONE/iPlanet 6.x 19 advisories 11
IIS 7.0 - Moduły Przeszło 40 modułów Biblioteka dll Pogrupowane Http modules Security modules Content modules Compression modules Caching modules Logging and Diagnostics modules 12
IIS 7.0 http pipeline 13
Http services W3svc konfiguracja serwisów tworzenie HTTPListener'ów WAS Zarządca procesów Działa z uprawnieniami konta LocalSystem Tworzy worker procesy (w3wp.exe) 14
IIS Konfiguracja Konfiguracja serwera i serwisów umieszczona jest w plikach xml Narzędzia konfiguracyjne: IIS Manager Tworzenie własnych modułów WMI klasa System.Web... vi webconfig.xml 15
ASP.NET Połączenie ASP i.net W skład platformy wchodzą: Kompilatory C#, Visual Basic.NET, J# Kompilator kodu zarządzającego Metody umieszczania serwisów: Wersja skompilowana Wersja w postaci kodu źródłowego kod ten jest kompilowany przy pierwszym Ŝądaniu strony. 16
Application Domain Element łączący ASP.NET i IIS Główne zadanie zapewnieni izolacji między aplikacjami MoŜliwości konfiguracyjne: Wybór środowiska.net Limity przydziału procesora Limity przydziału pamięci Wybór procesora na którym będzie działać proces Wybór uŝytkownika z uprawnieniami którego aplikacje będą uruchamiane Konfiguracja.NET Trust Levels (Code Access Security) 17
AppDomain SpecificUser Przy konfiguracji uŝytkownika naleŝy podać jego nazwę i hasło! Problem synchronizacji haseł Problem zmiany nazwy konta uŝytkownika Problem szyfrowania haseł 18
AppDomain SpecificUser %systemroot%\system32\inetsrv\confi g\applicationhost.config <applicationpools> <add name= test autostart= true > <processmodel identitytype= SpecificUser username= bla password= [enc:iiswasonlyrsaprovid er:...:enc] maxprocesses= 10 /> </add></applicationpools> 19
Kompilacja aspx. worker proces (w3wp.exe) Sprawdzenie czy istnieje skompilowana wersja Kompilacja kodu csc.exe... cvtres.exe... Plik wynikowe umieszczane są w katalogu %SYSTEM%\Microsoft.NET\Framework\ver \Temporary ASP.NET Files\ 20
ZAGROśENIA 21
ZagroŜenia załoŝenia wstępne Serwer hostuje n klientów Klienci mają moŝliwość umieszczania własnych aplikacji, skryptów ASP.NET ZagroŜenia dotyczą błędów konfiguracyjnych środowiska hostującego Nie analizujemy ataków na serwisy XSS, Sql injection etc. Cel: Co złego moŝe zrobić skrypt/program umieszczony na naszym serwerze? 22
ZagroŜenia 1 DoS Maksymalne wykorzystanie zasobów dyskowych Do kompilowania plików aspx kompilator musi mieć uprawnienia tworzenia plików w katalogu %SYSTEMROOT%\Microsoft.NET\Framewo rk\ver\temporary ASP.NET Files\... Katalog ten wykorzystywany jest do zapisywania skompilowanych skryptów Program uŝytkownika zapisuje nieskończenie wiele danych do losowych plików w tym katalogu 23
Przykład protected void Page_Load(object sender, EventArgs e) { Random x=new Random(); int j; while(true) { System.IO.FileStream plik = System.IO.File.Create(@"c:\temp\" + x.next().tostring()); plik.setlength(1024*1024); plik.close(); } } 24
Ochrona 1 - Maksymalne wykorzystanie zasobów dyskowych NTFS przydziały (quota) Problemy z wyznaczeniem wartości limitu przy jednym Application Domain Ograniczenie ilości katalogów w których skrypty uŝytkownika mają moŝliwość zapisywania danych 25
ZagroŜenia 2 DoS wykorzystanie zasobów pamięci Uruchomienie nieskończonej ilości procesów dzieci Tworzenie nieskończenie wielkich tablic w wykonywanych skryptach ASP.NET 26
Ochrona 2 DoS wykorzystanie zasobów pamięci Utworzenie osobnych Application Domain dla kaŝdego hostowanego serwisu Ustawienie limitów przydziału procesora i pamięci dla kaŝdego Application Domain Ograniczenie moŝliwości uruchamiania własnych programów przez klienta 27
ZagroŜenia 3 Umieszczenie serwera na listach spamerów Wysyłanie nieautoryzowanego mailingu z serwera.net System.Net.Mail System.Net.Sockets Własne programy wykorzystujące połączenia TCP do wysyłania danych 28
Ochrona 3 Umieszczenie serwera na listach spamerów Ograniczenie moŝliwości uruchamiania własnych programów przez klienta Zastosowanie firewall'a 29
ZagroŜenia 4 Utrata poufności danych umieszczonych na serwerze WMI System.Management Informacje o środowisku, uruchomionych procesach System.Diagnostics.Process System.Environment Własne programy Odczyt rejestru Przeszukiwanie filesystemu serwera 30
Przykład using System.Diagnostics; protected void Page_Load(object sender, EventArgs e) { int i; String a="<br><b>moduły</b><br>"; i =Process.GetCurrentProcess().Modules.Count; for (int j = 0; j < i; j++) a += Process.GetCurrentProcess().Modules[j].FileName+"<br>"; Label1.Text=a; } 31
Ochrona 4 Utrata poufności danych umieszczonych na serwerze Ograniczenie moŝliwości uruchamiania własnych programów przez klienta Ustawienie odpowiednich uprawnień do plików i katalogów dla uŝytkownika uruchamiającego kod strony Szyfrowanie haseł wykorzystywanych do łączenia się z bazą danych Umieszczanie na serwerze skompilowanych wersji skryptów 32
Podsumowanie: IIS + ASP.NET ogromne moŝliwości tworzenia aplikacji webowych DuŜe moŝliwości konfiguracyjne (xml, mmc, WMI) Bogata dokumentacja (www.asp.net, MSDN) Darmowe środowisko developerskie Visual Studio Express Zagwarantowany rozwój i support środowiska 33
Dane kontaktowe Zespół Bezpieczeństwa PCSS Centrum Innowacji Microsoft blazej.miga@man.poznan.pl http://mic.psnc.pl http://www.man.poznan.pl http://security.psnc.pl 34
Dziękuje za uwagę. Pytania? Sugestie? Wątpliwości? 35