SUHOSIN
Suhosin adalah
semacam proteksi untuk melindungi aplikasi PHP yang kita buat atau core-PHP itu
sendiri dab suhosin mulai diimplementasikan pada installer php di januari 2007.
Suhosin termasuk juga mengenkripsi
COOKIES sehingga jika anda mengimplementasikan SESSION, maka perlu hati-hati.
Sesuai dengan yang sudah saya lakukan, SESSION di PHP tidak akan dikenal di
sub folder dan sub domain jika suhosin masih aktif walaupun sudah menggunakan
syntax session.cookie_domain. So, bagaimana cara mengatasinya? satu-satunya
jalan dengan mematikan di php.ini untuk:
suhosin.cookie.encrypt=Off
suhosin.session.encrypt=Off
Trus bagaimana caranya jika tidak bisa mengubah php.ini di server hosting
kita? mudah saja, biasanya php me-load master php.ini tetapi juga me-load local
php.ini jika di folder/sub domain yang mengandung php.ini
Contoh: jika ingin mematikan
suhosin di subdomain, buat file php.ini dengan isi seperti di atas pada folder
dimana sub-domain tersebut berada
Suhosin juga merupakan sistem
proteksi canggih untuk instalasi PHP. Dirancang untuk melindungi server dan
user dari cacat yang dikenali maupun yang tidak dikenali dalam aplikasi PHP dan
PHP core. Suhosin hadir dalam dua
bagian yang independen, dapat digunakan secara terpisah atau dikombinasikan. Bagian
pertama adalah sebuah patch kecil yang melawan PHP core, yang menerapkan beberapa proteksi low-level yang melawan bufferoverflows atau kerentanan terhadap
format string, dan bagian kedua adalah sebuah ekstensi PHP yang powerful yang mengimplementasikan semua proteksi yang lain. Tidak seperti PHP Hardening-Patch, Suhosin kompatibel terhadap instalasi
PHP secara normal, yang berarti kompatibel juga untuk 3rd party binary
extension seperti ZendOptimizer. Patch-patch dan extensi Suhosin dapat didownload pada
http://www.hardened-php.net/suhosin/download.html
Kenapa?
Pertanyaan paling penting untuk pengguna baru suhosin adalah, kenapa mereka harus menggunakan
suhosin, jika benar-benar dibutuhkan dan apa yang mereka dapatkan dengan
menggunakan patch, extension, atau kombinasi dari keduanya? Jawaban dari pertanyaan tersebut bergantung pada untuk apa anda menggunakan PHP. Jika Anda
menggunakan PHP hanya untuk server Anda sendiri dan hanya untuk script dan
aplikasi milik Anda sendiri, maka Anda bisa menilai sendiri, jika Anda cukup mempercayai
code Anda sendiri. Dalam kasus seperti ini kemungkinan besar Anda tidak
memerlukan extension Suhosin. Karena sebagian besar fitur-fiturnya dimaksudkan untuk
melindungi server dari serangan tehnik-tehnik kerentanan programming.
Bagaimanapun PHP adalah sebuah bahasa pemrograman yang sangat kompleks
dengan banyak perangkap yang jarang diawasi selama pengembangan
aplikasi. Bahkan programmer PHP core menulis code secara tidak aman dari waktu
ke waktu, karena mereka tidak tahu tentang adanya perangkap
PHP. Karena itu
memiliki Suhosin sebagai jaring pengaman Anda adalah sebuah ide
yang bagus.
Suhosin-patch disisi lain datang dengan perlindungan Zend Engine, fitur yang
melindungi server Anda dari kemungkinan bufferoverflows dan kerentanan di
dalam Zend Engine. Sejarah telah menunjukkan bahwa beberapa bug ini selalu ada di
versi PHP sebelumnya.
Jika
Anda tidak hanya menjalankan skrip PHP Anda sendiri, tetapi juga hostig 3rd party PHP
application untuk diri sendiri dan bahkan mungkin untuk pelanggan, maka Anda tidak
bisa mempercayai kualitas code dari aplikasi PHP yang Anda gunakan.
Sayangnya itu adalah kenyataan bahwa perangkap bahasa PHP tersebut tidak banyak
diketahui oleh para pemrogram. Jika Anda menginginkan perlindungan tambahan untuk server dan bisnis Anda, penggunaan
extensi dan patch suhosin sangat direkomendasikan. Selalu ingat bahwa anda tidak
hanya melindungi diri sendiri dan pengguna anda, tetapi juga orang lain di
internet, yang mungkin akan diserang oleh server anda dengan serangan
Spam/DDoS.
Instalasi
Preparation
Bila anda ingin
menginstal PHP dengan Suhosin-Patch anda harus terlebih dahulu melakukan
beberapa langkah persiapan.
Langkah 1 :
instalasi signaturekey project hardened-PHP Terlebih dahulu anda ambil salinan dari http://www.hardened-php.net/hardened-php-signature-key.asc dan impor
ke GNU Privacy Guard keychain anda
#> gpg --import < hardened-php-signature-key.asc gpg: /root/.gnupg/trustdb.gpg: trust-db erzeugt
gpg: key 0A864AA1: public key "Hardened-PHP Signature
Key" imported
gpg: Anzahl
insgesamt bearbeiteter Schlüssel: 1
gpg: importiert:
1
Langkah 2 :
men-download dan memeriksa file yang diperlukan Sekarang saatnya
untuk ambil salinan tarball PHP terbaru dan versi terbaru dari suhosin-patch.
Sebagai tambahan anda harus mendapatkan tandatangan digital
(*.sig) file.
Anda bisa ambil semua ini di
http://www.hardened-
php.net/suhosin/download.html
Sebagai tindakan
pencegahan pertama anda dapat memeriksa MD5 Hash dari file download terhadap
orang-orang yang anda temukan pada halaman download
#>
md5sum php-5.1.4.tar.bz2
66a806161d4a2d3b5153ebe4cd0f2e1c
php-5.1.4.tar.bz2
#>
md5sum suhosin-patch-5.1.4-0.9.0.patch.gz
ea9026495c4ce34a329fd0a87474f1ba
suhosin-patch-5.1.4-0.9.0.patch.gz
bila nilai hash
MD5 yang berlaku anda dapat memeriksa tandatangan digital seperti
ini.
#> gpg
php-5.1.4.tar.bz2.sig
gpg: Signature made Di 16 Mai 2006 23:39:04 CEST using DSA
key ID 0A864AA1
gpg: Good signature from "Hardened-PHP Signature
Key"
#> gpg suhosin-patch-5.1.4-0.9.0.patch.gz.sig
gpg: Signature made So 21 August 2006 20:02:53 CEST using
DSA key ID 0A864AA1
gpg: Good signature from "Hardened-PHP Signature
Key"
Langkah 3 : Unpacking dan Patching
Anda sekarang harus mengekstrak tarbal PHP, gunzip patchfile
dan kemudian menerapkan patch.
#> tar -xfj
php-5.1.4.tar.bz2
#> gunzip
suhosin-patch-5.1.4-0.9.0.patch.gz
#> cd
php-5.1.4
#> patch -p 1 -i ../suhosin-patch-5.1.4-0.9.0.patch
Jika anda lebih suka
memilih suhosin sebagai extension builtin anda juga dapat mendownload source code extension suhosin dan mengcopy file
src ke direktori ext/suhosin dengan menggunakan PHP source tree anda
Instalasi pada Linux/Unix
Setelah menyelesaikan persiapan pada PHP source tree,
langkah selanjutnya tidak begitu berbeda
dengan instalasi PHP seperti biasanya. Jika anda mengcopy extension suhosin
ke direktori ext anda juga harus mengaktifkannya.
#> [./buildconf - in case you want to compile suhosin
statically]
#> ./configure --with-whatever-you-want
[--enable-suhosin]
#> make
#> make test
#> make install
Dengan mengeksekusi make test anda dapat memverifikasi,
bahwa PHP masih bekerja dan tidak
merusak apapun.
If you are upgrading from a previous installation of PHP you
do not need to recompile all installed PHP modules and extensions unless you are
upgrading to a PHP version that breaks binary compatibility.
However recompiling the extensions after having installed PHP with the Suhosin-Patch can protect them from possible format string
vulnerabilities, which was built into the header files. After having recompiled and installed everything, have a
look at the bundled php.ini files for examples how to use the new configuration directives. For a
documentation of the new directives consult the Configuration section. Binary extensions from for example
Zend should continue flawlessly. If you encounter any problem contact us
immediately. Installing the Extension Unlike the Hardening-Patch for PHP, nearly all of
Suhosin
´s features are within the extension. Therefore you might want to only install the extension and
use a plain unpatched PHP. Depending on the system we might already offer binary
packages. You can check our Suhosin
Downloads page. In that case you only need to activate the extension
inside your php.ini and maybe add Configuration directives if you are not satisfied by the default values. Before you continue compiling the
Suhosin-Extension you should verify the file integrity. Please check the preparation section of this guide. The next step is unpacking the
extension tarball and performing the usual
compilation steps for PHP extensions.
#> cd suhosin
#> phpize
#> ./configure
#> make
#> make install
This should install suhosin in the correct extension
directory. The final step is adding a load directive to php.ini extension=suhosin.so and optionally add some Configuration directives in case you do not like the default values. Special Instructions Some distributions already come with Suhosin source or binary packages. Here is a small overview how to install Suhosin on this distributions. Installing on Gentoo Installing and using Suhosin on Gentoo is very easy. At the
moment the Suhosin patches and extensions are only available in the external PHP Overlay,
and not yet in the Portage tree, you can expect them to also be available in the main Portage tree during
October 2006. Let’s install the PHP Overlay then:
#> emerge layman
#> layman -f
#> layman -a php-testing
Now let’s install PHP
with the Suhosin patch and extension:
#> echo "dev-lang/php" >>
/etc/portage/package.keywords (unstable version needed)
#> USE="suhosin" emerge =php-4* for PHP4, or
=php-5* for PHP5 (NOTE: you cannot also have the "hardenedphp" USE
flag enabled at the same
time!)
That’s it, your PHP on Gentoo is now running with the
Suhosin patch enabled, and the Suhosin extension was automatically installed (from the
dev-php{4,5}/suhosin package).Installing on FreeBSD The Suhosin-Patch and the Suhosin extension are both within the FreeBSD ports. Therefore installing it on FreeBSD is very simple. The Suhosin-Patch is an option which you can choose when you install the lang/php4 or lang/php5 port. To install the patch just do
#> cd /usr/ports/lang/php5
#> make
... now select the menu item that says: Enable Suhosin
Protection
#> make install
To install the extension just do
#> cd /usr/ports/security/php-suhosin
#> make
#> make install After these simple steps Suhosin-Patch is successfully installed on your system. Upgrading Upgrading to a new PHP or new Suhosin-Patch version is quite identical to the normal installation process. This is like upgrading a normal PHP.
That means, if the binary compatibility was broken between PHP versions you have to recompile all
installed PHP modules/extension. Upgrading the Suhosin-Extension on the other hand is as simple as recompiling it (or using a binary), replacing
the file and restarting your webserver.