Hosting www zagrożenia, bezpieczna konfiguracja SECURE 2006 17-18/10/2006 Błażej Miga, PCSS blazej.miga@man.poznan.pl Jaroslaw Sajko, PCSS jaroslaw.sajko@man.poznan.pl 1
Agenda Wprowadzenie Apache zagrożenia PHP zagrożenia Obrona Dyskusja 2
Zespół Bezpieczenstwa PCSS 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, UNIZETO, itvp) Usługi komercyjne (audyty, testy penetracyjne, analizy kodów źródłowych i binarnych, szkolenia, etc...) Praca po godzinach (komunikatory, ebankowość, bezpieczny hosting, Wi-Fi, analizatory kodów źródłowych) 3
Historia i dzień dzisiejszy 1994 r. Rob McCool (National Center for Supercomputing Applications) NCSA HTTPd 1995 r. NCSA HTTPd - a patchy server Apache Wrzesień 2006-61% rynku Aktualne wersje (2.2.3, 2.0.59 1.3.37) 4
Więcej informacji Oficjalna strona internetowa http://www.apache.org Listy mailingowe announce@httpd.apache.org dev@httpd.apache.org Apache Modeling Project http://f-m-c.org/projects/apache/ 5
Architektura serwera Źródło: The Apache Modeling Project http://apache.hpi.uni-potsdam.de/ 6
Moduły (1) umożliwiają dodawanie nowych funkcjonalności do serwera kompilowane przy pomocy programu apxs wkompilowane w program lub w postaci bibliotek so 7
Moduły (2) moduły dynamiczne są wczytywane podczas startu serwer wszystkie procesy Apache a posiadają identyczny kod wykonywalny modules.apache.org Baza modułów (437-10.2006) 8
Prefork MPM (1) MPM Multi-Processing Modules Pierwsza multitaskowa architektura Apache a Domyślny MPM dla UNIX Jeden proces server zarządca ustala liczbę procesów - dzieci zajmujące się żądaniami HTTP 9
Prefork MPM (2) Źródło: The Apache Modeling Project http://apache.hpi.uni-potsdam.de/ 10
Apache - podsumowanie Każdy proces Apache'a posiada identyczny kod wykonywalny Dowolny child proces może obsługiwać żądanie do dowolnego virtualhost Każdy proces Apache'a posiada kompletna informacje o konfiguracji serwera Języki skryptowe dodawane jako modul uruchamiane sa w child procesie, jako CGI w nowym procesie 11
Apache Analyzer Prezentacja działania programu Informacje o systemie Wyszukiwanie konfiguracji serwera Odnajdywanie najważniejszych struktur serwera: pools, moduły, hooki, filtry, struktury server_info i request_info scoreboard 12
PHP - Historia i dzień dzisiejszy 1994 r. Rasmus Lerdorf Personal Home Page Tools 1997 r. Zeev Suraski, Andi Gutmans (Israel Institute of Technology) PHP3 PHP: Hypertext Preprocessor Sierpień 2006 19 milionów domen, 1.3 miliona adresów IP Aktualne wersje (5.1.6, 4.4.4) 13
PHP w pigułce 4239 funkcji 81 rozszerzeń (19 wkompilowanych standardowo) 10 najpopularniejszych projektow PHP kozysta z 789 funkcji z 9 rozszerzeń 14
Konfiguracja php Plik konfiguracyjny php.ini Dyrektywy Apache a php_value php_flag php_admin_value php_admin_flag PHPINIDir 15
php.ini Nazwa Wartosc defaultowa Zmiana w allow_url_fopen 1 PHP_INI_SYSTEM auto_append_file NULL PHP_INI_PERDIR auto_prepend_file NULL PHP_INI_PERDIR disable_functions php.ini only display_errors 1 PHP_INI_ALL extension_dir /path/to/php PHP_INI_SYSTEM memory_limit 8M PHP_INI_ALL open_basedir NULL PHP_INI_SYSTEM safe_mode 0 PHP_INI_SYSTEM sendmail_path /usr/sbin/sendmail -t PHP_INI_SYSTEM PHP_INI_PERDIR php.ini,.htaccess, httpd.conf 16
Modul vs CGI Modul CGI Sposob dzialania ID usera uruchamiajacego skrypt disable_functions Safe_mode W praktyce niemozliwy do realizacji Dziala bez probemow Wynik generuje proces Taki sam jak processu Jedna wartosc dla Uruchamiany jest nowy Mozliwosc dowolnej Mozliwosc dowolnej Apache'a Apache wszystkich serwisow proces, generujacy wynik konfiguracji konfiguracji Ochrona filesystemu Uzytkownicy maja mozliwosc podgladania skryptow innych osob Brak mozliwosci podgladania skryptow Zagrozenia Uzytkownik moze przejac kontrole na serwerem, odczytac konfiguracje, zablokowac dzialanie serwera Wydajnosc Duza Niska 17
PHP Analyzer Wyluskiwanie informacji o zainstalowanych rozszerzeniach Informacja o systemie Informacja o zagrozeniach 18
Ochrona (1) System operacyjny Kernel Pakiety Konfiguracja Infrastruktura Firewall Redundancja 19
Ochrona (2) Instalacja i konfiguracja Apache Wykompilowanie wszystkiego co niepotrzebne Utwardzenie podstawowej konfiguracji ModSecurity chroot 20
Ochrona (3) Instalacja i konfiguracja PHP Wykompilowanie niepotrzebnych modulow Utwardzenie podstawowej konfiguracji 21
Ochrona (4) Chroot Zewnetrzny: Chroot systemowy mod_security mod_jail Wewnetrzny: Php base_dir Osobne instancje serwera Apache 22
Ochrona (5) Rozwiazanie: Dwie warstwy: Serwer proxy rozdzielajacy polaczenia Wiele instancji serwera Apache obslugujacych poszczegolne serwery wirtualne Kazdy z serwerow w swoim wlasnym chroot'cie Latwa integracja z chroot-proftpd i kompletne rozdzielenie uzytkownikow 23
Ochrona (6) Wydajnosc Powierzchnia dyskowa RAM Procesor Zarzadzanie Skrypty home-made Bezpieczenstwo Znacznie wyzsze niz standardowej instalacji 24
Dane kontaktowe Zespół Bezpieczeństwa PCSS blazej.miga@man.poznan.pl jaroslaw.sajko@man.poznan.pl http://www.man.poznan.pl http://security.psnc.pl 25
Pytania? Dziękuję za uwagę! 26