NFsec Logo

Podstawy bezpieczeństwa PHP – Suhosin

30/12/2011 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 337, ilość słów: 382)

S

uhosin jest zaawansowanym systemem bezpieczeństwa dla języka PHP. Został on zaprojektowany tak, aby chronić serwery przed już znanymi, jak i dopiero nowymi lukami w aplikacjach oraz samym rdzeniu PHP. Składa się z dwóch niezależnych części: łaty nakładanej na sam interpreter jak i rozszerzenia, które można dołączyć do już skompilowanej instalacji. Mogą zostać one wykorzystane oddzielnie lub równocześnie. Pierwsza z nich implementuje kilka niskopoziomowych mechanizmów ochrony przed przepełnieniem buforów (ang. buffer overflows), czy nadużyciami z wykorzystaniem ciągów formatujących (ang. format string vulnerabilities). Druga część jest potężnym rozszerzeniem, które pozwala na implementację reszty ochrony.

Jednymi z ważniejszych funkcji jakie oferuje Suhosin to:

  • Transparentne szyfrowanie ciasteczek i sesji,
  • Ochronę przed manipulacją zmiennej memory_limit w PHP,
  • Możliwość ochrony przed takimi atakami jak: Remote File / URL Inclusion, Directory / Path traversal, czy HTTP Response Splitting
  • Kontrolę limitów żądań HTTP z rozróżnieniem na metody: GET, POST, COOKIE
  • Kontrolę obiektów / plików wrzucanych przez upload,
  • Białe i czarne listy funkcji, adresów URL i użycia eval()
  • Możliwość logowania adresów IP wyciągniętych z nagłówka HTTP: X-Forwarded-For, jeśli host znajduje się za reverse proxy.

Przykład ręcznej instalacji rozszerzenia w systemie CentOS 6.2:

yum install php-devel re2c
wget http://download.suhosin.org/suhosin-0.9.32.1.tar.gz
tar -xvf suhosin-0.9.32.1.tar.gz
cd suhosin-0.9.32.1
phpize
./configure
make
make test
make install
cp suhosin.ini /etc/php.d/

Po restarcie serwera WWW, polecenie: php -v powinien zwrócić nam mniej więcej komunikat:

PHP 5.3.3 (cli) (built: Nov  3 2011 11:45:59) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

Suhosin mimo standardowej konfiguracji wprowadza wiele nowych ograniczeń dla aplikacji PHP, co może spowodować czasami problemy w poprawnym jej działaniu. Dlatego bardzo dobrym pomysłem jest włączenie na początku rozszerzenia w trybie symulacji, które będzie logowała wszystkie naruszenia np. do pliku /var/log/suhosin.log:

suhosin.simulation = On
suhosin.log.syslog = 511
suhosin.log.syslog.facility = 9
suhosin.log.syslog.priority = 1
suhosin.log.sapi = 511

Dodatkowo do daemona logowania rsyslog należy dodać wpis:

user.*						/var/log/suhosin.log

Następnie go przeładowując: /etc/init.d/rsyslog restart. Tak pasywnie działające rozszerzenie możemy zostawić na jakiś starając się użytkować normalnie aplikację i spoglądając od czasu do czasu w log, aby wykrywać i dopasowywać wykryte naruszenia do naszych potrzeb:

Dec 29 22:43:04 stardust suhosin[31582]: ALERT-SIMULATION - configured request variable
value length limit exceeded - dropped variable '__utmb'
(attacker '79.8.8.8', file '/var/www/test.php')

Po danym okresie czasu można wyłączyć tryb symulacji i wprowadzić działanie mechanizmu w środowisku produkcyjnym.
Więcej informacji: Hardened-PHP

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , ,

Komentowanie tego wpisu jest zablokowane.