23 Şubat 2008 Cumartesi

Hardened Php5 Debian/Etch/Ubuntu

PHP programcıları Suhosin’i yakından tanırlar. Suhosin; PHP’nin daha güvenli çalışması için geliştirilmiş bir PHP modülüdür. Hali hazırda debian depolarında henüz bulunmayan Suhosin’i aşağıdaki adımları izleyerek debian tabanlı web sunucunuza kurabilirsiniz.

Öncelikle aşağıdaki depoları /etc/apt/sources.list dosyamıza ekliyoruz.

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

Daha sonra “apt-get update” komutu ile paket depolarımızı güncelliyoruz.

Ardından “apt-get install php5-suhosin” komutu ile Suhosin modulu yamanmış PHP5′imizi yüklüyoruz.

Yüklenen php modüllerini

dpkg -l | grep php komutu ile görebilirsiniz.

Tüm yapmanız gerekenler bu kadar…

Eğer php5'i apt-get ile yada .deb paketi olarak kurduysanız sistemi yamamak için aşağıdaki yönergeleri izlemeniz gerekmekte...

Herşeyden önce Php5'i kaynak kodundan derlemek gerekecek bunun için öncelikle aşağıdaki paketleri kurmanız gerekecek;

apt-get install dpkg-dev build-essential

Daha sonra kaynak kodu indirip derleyeceğimiz bir dizine gidiyoruz. Ben genelde /usr/src dizinini tercih ediyorum bu işler için;

cd /usr/src
apt-get source php5

Bir sonraki aşamada hardened-php imzamızı sisteme import ediyoruz;

wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import <>

Sonraki aşamada suhosin patch'ini çekiyoruz;

wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.0-0.9.6.2.patch.gz

Ardından php5 kaynak kodumuzu çektiğimiz yama ile yamıyoruz;

gunzip suhosin-patch-5.2.0-0.9.6.2.patch.gz
cd php5-5.2.0
patch -p 1 -i ../suhosin-patch-5.2.0-0.9.6.2.patch

Eğer hata almadan yamayabildiysek yeni .deb paketimizi dpkg-buildpackage komutu ile oluşturuyoruz.

Eğer hata aldıysak aşağıdaki komutla eksik paketlerin kurulumunu yapmamız gerekecek;

apt-get install apache-dev apache2-prefork-dev bison chrpath debhelper firebird2-dev flex freetds-dev libapr1-dev libbz2-dev libc-client-dev libcurl3-dev libdb4.4-dev libexpat1-dev libfreetype6-dev libgcrypt11-dev libgd2-xpm-dev libjpeg62-dev libkrb5-dev libldap2-dev libmcrypt-dev libmhash-dev libmysqlclient15-dev libncurses5-dev libpam0g-dev libpcre3-dev libpng12-dev libpq-dev libpspell-dev librecode-dev libsnmp9-dev libsqlite0-dev libt1-dev libtidy-dev libwrap0-dev libxmltok1-dev libxml2-dev libxslt1-dev re2c unixodbc-dev

Bu paketleri kurduktan sonra tekrar dpkg-buildpackage komutuyla derleme işlemini yapıyoruz.

Herşey yolunda gittiyse yeni oluşturulan deb paketini kurarak yeni sisteme kavuşmuş oluyoruz :)

Hemen bir örnek verelim. Aşağıdaki komutu kullanarak phpinfo’yu blacklist’e ekleyelim.

echo suhosin.executor.func.blacklist=”phpinfo” >>/etc/php5/conf.d/suhosin.ini

Daha sonra başka bir terminalden syslogu takip edelim.

$tail -f /var/log/syslog

Eklediğimiz fonksiyonun çalışması için Apache’yi restart edelim.

$/etc/init.d/apache2 force-reload

/var/www/ dizini altında içeriği aşağıdaki gibi olan info.php dosyasını oluşturalım.

phpinfo();
?>;

Şimdi tarayıcımızdan http://siteadresi/info.php yazarak oluşturduğumuz info.php’i çalıştıralım.

Gördüğünüz gibi info.php açılmıyacaktır ve syslog’u takip ettiğiniz diğer terminale baktığınızda aşağıdaki gibi bir uyarı mesajı göreceksiniz.

Mar 5 18:58:01 ubuntu-server suhosin[27952]: ALERT - function within blacklist called: phpinfo() (attacker ‘192.168.2.2′, file ‘/var/www/info.php’, line 2)

Suhosin hakkında daha fazla bilgi almak için aşağıdaki adrese girin.

http://www.hardened-php.net/suhosin/

Suhosin ile neler yapabileceğinizi keşfetmek için alttaki adresindeki yazıyı incelemenizi tavsiye ederim.

http://www.hardened-php.net/suhosin/configuration.html




0 yorum:

Paylaş

Twitter Delicious Facebook Digg Stumbleupon Favorites