- NF.sec – Linux Security Blog - http://nfsec.pl -
Podstawy bezpieczeństwa PHP – Suhosin
Autor: Patryk Krawaczyński Data: 30/12/2011 @ 00:19 Kategoria: Bezpieczeństwo | Brak komentarzy
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:
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 [1]
Artykuł wydrukowany z NF.sec – Linux Security Blog: http://nfsec.pl
Adres do artykułu: http://nfsec.pl/security/3619
Adresy na tej stronie:
[1] Hardened-PHP: http://www.hardened-php.net/suhosin/
Kliknij tutaj by wydrukować.
Copyright © 2009 NFsec - Linux Security. All rights reserved. Wszystkie prawa zastrzeżone.