Ö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