Bezpieczeństwo aplikacji PHP hostowanych w środowisku Windows Gerard Frankowski, PCSS III Konferencja MIC Nowoczesne technologie bliŝej nas Poznań,, 16.04.2009 1
Agenda Bezpieczeństwo w MIC O O czym dziś nie powiemy - cel prezentacji IIS i PHP? Bezpieczeństwo IIS Bezpieczeństwo PHP Mini-przegl przegląd d narzędzi Więcej informacji Pytania i dyskusja 2
Kim jesteśmy my? Zespół Bezpieczeństwa PCSS istnieje od 1996r. Zabezpieczanie infrastruktury PCSS Zadania bezpieczeństwa w projektach R&D Szkolenia,, transfer wiedzy Badania własnew Usługi zewnętrzne Najciekawsze badania z ostatnich lat Bezpieczeństwo komunikatorów w internetowych Badania sieci bezprzewodowych na terenie Poznania Raport nt. bezpieczeństwa bankowości elektronicznej Bezpieczeństwo serwerów WWW (Apache, MS IIS) Bezpieczeństwo sklepów w internetowych http://security.psnc psnc.plpl 3
Bezpieczeństwo w MIC Ochrona infrastruktury MIC Audyty bezpieczeństwa, konsultacje Program szkoleń bezpieczeństwa Więcej informacji w programie szkoleń http:// ://mic.psnc.pl/szkolenia Badania poziomu bezpieczeństwa technologii Microsoft (2007-08) 08) IIS 7.0 Audyty bezpieczeństwa dla administracji i MŚP M P (2007) 4
O czym dziś nie powiemy? Celem dzisiejszej prezentacji NIE JEST udowadnianie wyŝszo szości jakiejkolwiek technologii nad inną NiemoŜliwym jest takŝe e dokonanie dziś dogłę łębnego przeglądu kwestii bezpieczeństwa hostingu realizowanego w róŝnych technologiach 5
Cel prezentacji Wskazanie niektórych sytuacji, kiedy korzystnie jest pomieszać technologie A kiedy nie? Czy wiąŝą się z tym jakieś zagroŝenia? Tak! Jak zawsze... Jak ich unikać? Prezentacja jest przeznaczona dla projektantów w aplikacji i administratorów środowisk hostingowych 6
Hosting Microsoft ASP czy PHP? Co musimy wziąć pod uwagę Kwestie finansowe (MŚP, uŝytkownicy u indywidualni) Szybkość nauki MoŜliwo liwości językaj Dostępno pność specjalistów w na rynku Docelowe wymagania stawiane przed aplikacją Własne preferencje 7
PHP - dobry pomysł Właściciel nowo działaj ającego na rynku mikroprzedsiębiorstwa potrzebuje szybko uruchomić formularz zamówie wień oferowanego produktu Firma posiada tylko licencję na serwer Prezes firmy sam zaprojektował aplikację,, a do jej wykonania zamierza zatrudnić studenta/praktykanta W celu zmniejszenia kosztów w firma skorzysta z otwartego środowiska bazodanowego Docelowa aplikacja jest prosta i niewielka (Pamiętajmy o bezpieczeństwie!) 8
PHP - zły y pomysł DuŜa a korporacja przygotowuje zestaw aplikacji intranetowych do pracy grupowej oraz monitorowania działania ania sieci Firma posiada szereg licencji na róŝne r rodzaje oprogramowania firmy Microsoft Koszt zatrudnienia nowych lub wyszkolenia własnych specjalistów w ASP.NET jest pomijalny w stosunku do oczekiwanych zysków w i moŝliwo liwości firmy Aplikacje będąb intensywnie korzystać z juŝ zainstalowanego oprogramowania MS SQL Server 9
Bezpieczeństwo środowiska heterogenicznego Konieczność współdzia działania ania róŝnych r technologii i rozwiąza zań MoŜliwe problemy na punktach styku Poziom bezpieczeństwa poszczególnych komponentów Specyficzne potrzeby (np. konfiguracyjne) poszczególnych modułów i ich wzajemna zgodność 10
Bezpieczeństwo serwera WWW IIS czy Apache? (a moŝe e coś innego...) Liczba advisories Na ile jest ona miarodajna? Omówimy przypadek serwera IIS Badania poziomu bezpieczeństwa serwera IIS v. 7.0 Prezentacje MIC m.in in.. na konferencjach Secure CON, Confidence Szkolenie MIC 30.10.2007 Slajdy dostępne na WWW MIC 11
Bezpieczny serwer IIS (1) Wybór r odpowiedniego serwera Unikanie kontrolera domeny Maksymalnie okrojona instalacja Decyzja o wyborze niezbędnych usług ug (www, smtp, nntp, ftp, ) Dobrze dobrany katalog domowy serwisów w (wydzielona partycja) Usunięcie domyślnie zainstalowanych katalogów w (icon( icon, iishelp) 12
Bezpieczny serwer IIS (2) Definicja odpowiednich uprawnień dla katalogu domowego serwera (Read, Log) Ustawienie uprawnień do katalogu ze skryptami (Execute( Execute) Wyłą łączenie niepotrzebnych filtrów w ISAPI (np. Digest, Frontpage, Compression) ) i skasowanie plików w DLL Wyłą łączenie mapowania dla typów w plików:.asa,.asp. asp,,.bat,.cdx,.cer,.htr. htr,,.htw. htw,,.ida. ida,.idc,,.idq. idq,,.printer. printer,,.shtml. shtml,,.shtm. shtm,,.stm. 13
Bezpieczny serwer IIS (3) Logowanie Ŝąda dań HTTP Uprawnienia odczytu pliku logu jedynie dla administratora systemu Uprawnienia zapisu do HKLM/Software tylko dla administratora systemu Weryfikacja uprawnień grupy Everyone w stosunku do katalogów: Web root %systemroot% %systemroot%\system32system32 %systemroot%\system32\temptemp 14
Bezpieczny serwer IIS (4) ServerMask Ukrywanie sygnatur Maskowanie cookies Emulacja serwera Apache UrlScan ServerHeader Modyfikacja nagłówk wków w HTTP 15
Jak postawić PHP na IIS? Interpreter PHP-CGI.exe Wyjątkowo prosty Bardzo niewydajny Wtyczka ISAPI (php5isapi.dll dll) Szybsza niŝ interpreter Problemy z wielowątkowo tkowością Mechanizm FastCGI Nieco szybszy niŝ interpreter Znacznie stabilniejszy niŝ wtyczka ISAPI Implementacje Zend i Microsoft 16
Czy PHP jest bezpieczny? To say PHP has a security problem suggests that it's impossible to develop a secure PHP application, but to say PHP doesn't have a security problem suggests that everything is perfect neither is true (Chris Shifflet) PHP is neither inherintly secure nor insecure. It is the responsibility of the programmer of a web application, the database administrator and the system administrator to ensure that security is not compromised at several levels (James D. Keeline) 17
ZagroŜenia związane zane z PHP Błędy w konfiguracji: Ujawnianie informacji Zła a polityka logowania Zbyt szerokie uprawnienia uŝytkownikau Błędy w tworzonych aplikacjach: Błędy projektu Błędy kodu Błędy środowiska PHP Współpracuj pracujące ce komponenty 18
Konkurs dla Uczestników Nagroda ksiąŝ ąŝkowa Pytanie: : 14 kwietnia ujawniono lukę bezpieczeństwa skojarzoną z aplikacjami PHP hostowanymi pod Windows. Kto z Państwa wie,, co to za luka? Czy jest związana zana stricte z kodem PHP, czy z modułem przezeń wykorzystywanym (jeśli tak,, to jakim)? 19
Odpowiedź 20
Wybrane aspekty poprawnej konfiguracji PHP (1) Plik php.ini Katalog systemowy Katalog instalacyjny php Polityka ujawniania informacji error_reporting = E_ALL & ~E_NOTICE expose_php php = off display_errors = off log_errors = on error_log = c:\mylogs 21
Wybrane aspekty poprawnej konfiguracji PHP (2) Limity memory_limit = 8M max_input_time = 60 max_execution_time = 120 Ograniczenie inwencji uŝytkownika u file_uploads = off register_globals globals = off magic_quotes_gpc gpc = on (?) allow_url url_fopen = off disable_functions = passthru,, exec,... 22
Jak sprawdzić poziom bezpieczeństwa stwa? System operacyjny Serwer WWW IIS Lockdown Wizard Środowisko PHP: PHPSecInfo Aplikacje Skanery kodu źródłowego: : RATS, PiXy A fool with a tool is still a fool ;) 23
PHPSecInfo (1) Proste narzędzie (napisane w PHP ;) Projekt PHP Security Consortium http://phpsec phpsec.org/projects/.org/projects/phpsecinfophpsecinfo Prosta analiza konfiguracji środowiska PHP Wgrywamy pod http://127.0.0.1/phpsecinfo phpsecinfo Przyjazny interfejs Obszerne objaśnienia Nie wszystkie testy działaj ają w środowisku Windows 24
PHPSecInfo wynik działania ania 25
Pixy (1) Skaner kodu źródłowego Autorzy: : Secure System Labs (Politechnika( Wiedeńska http://pixybox pixybox.seclab.tuwien.ac.at/pixy Narzędzie uruchamiane z linii komend Wymaga Sun JRE oraz narzędzia dotty do analizy wyników Całość działa w środowisku Windows Wykrywa podatności XSS oraz SQL Injection Obrazuje przepływ potencjalnie złośliwych z danych 26
Pixy (2) 27
Podsumowanie Są sytuacje,, w których warto pomieszać technologie,, ale nie zawsze i nie wszystkie MoŜna hostować aplikacje PHP pod Windows, takŝe e za pośrednictwem serwera IIS Trzeba zwróci cić uwagę na kwestie bezpieczeństwa w kontekście wszystkich wykorzystanych rozwiąza zań,, a takŝe e interfejsów między nimi Często więcej zaleŝy y od tego, jak wykorzystamy technologie,, a nie od tego, czy są one niebezpieczne 28
Więcej informacji (na początek) PHP Security Consortium http://phpsec phpsec.org http://phpsec phpsec.org/projects/guide Instalacja i uruchomienie aplikacji PHP na IIS: Konfiguracja php.ini dla systemu Windows http://www.wegotserved wegotserved.co..co.uk/2008/03/04/installing- php-for for-iis-on-windows-home home-server http://learn.iis iis.net/page..net/page.aspx/24/running-php- applications-on on-iis http://forums.kayako kayako.com/f84/configure-php-ini- settings-windows windows-based-server-4067 29
Zaproszenie na szkolenie Termin: Maj / czerwiec 2009 (2 szkolenia) Miejsce Poznań oraz Warszawa Roboczy temat: Bezpieczeństwo heterogenicznej platformy hostingowej Macie Państwo moŝliwo liwość wpłyni ynięcia na kształt i zakres szkolenia! Ankieta konferencyjna E-mail do MIC (mic( mic@psnc.pl) 30
Informacje kontaktowe Autor prezentacji gerard.frankowski frankowski@man. @man.poznan.plpl Centrum Innowacji Microsoft: http://mic mic.psnc.plpl mic@psnc psnc.plpl PCSS http://www.pcss pcss.plpl Zespół Bezpieczeństwa PCSS http://security.psnc psnc.plpl security@man.poznan poznan.plpl 31
Pytania i dyskusja Dziękuj kuję za uwagę! 32