Bir Sayfa Seçin

Web sitenize kötü gözle bakacak Hacker’ların işini biraz daha zorlaştırmak ister miydiniz? Eğer siteniz PHP tabanlı ise açık kaynak kodlu PHP-IDS (PHP-Intrusion Detection System) yazılımı çok işinize yarayacak.

PHP-IDS’i aslında tüm PHP tabanlı uygulamalar için kullanabilirsiniz. Ama şimdi burada daha çok bir web sitesine (ör: WordPress tabanlı bir siteye) nasıl PHP-IDS’i kurabileceğinizi anlatacağım. (Aşağıdaki tarifler 0.6.4 versiyonu temel alınarak yazılmıştır.)

Not: Bu yazıyı yazdıktan 6 ay sonra, PHP-IDS’i sitenize bir tıkla entegre etmenizi sağlayacak çok güzel bir WordPress eklentisi çıktı. “Mute Screamer” adlı eklentiyi WordPress Eklenti Deposu‘ndan indirebilirsiniz. Daha kendine özgü bir konfigürasyon yapmak isteyenler ise aşağıdaki yazı ile işe başlayabilirler.

İlk önce uygulamayı barındıran zip ya da gz dosyayı www.php-ids.org‘tan ya da Github‘tan indirin ve web sunucunuzun www (public-html) dizinine ya da bir üst dizinine açın.

İlk etapta uygulamanın config dosyasına elinizi bile sürmenize gerek yok. Tek yapmanız gereken uygulama paketinin içindeki example dizinindeki “example.php” dosyasını alıp www (public-html) dizinine ya da istediğiniz herhangi bir dizine kopyalamak. Dosyanın ismini “php-ids.php” ya da başka birşey olarak değiştirebilirsiniz.

Daha sonra ismini değiştirdiğiniz “example.php” dosyasını açıp içindeki (aşağıda kırmızı ile gördüğünüz) adresleri oluşturduğunuz klasör düzenine göre değiştirin.

// set the include path properly for PHPIDS
set_include_path(
get_include_path()
. PATH_SEPARATOR
. '../../lib/'
);
............
$init = IDS_Init::init(dirname(__FILE__) . '/../../lib/IDS/Config/Config.ini.php');
$init->config['General']['base_path'] = dirname(__FILE__) . '/../../lib/IDS/';
$init->config['General']['use_base_path'] = true;
$init->config['Caching']['caching'] = 'none';
............

Ardından, ismini değiştirdiğiniz “example.php” dosyasını “include” komutu ile websitenizin mastar dosyasına ekleyin. Örneğin WordPress için tema dosyalarınızı açıp ister “index.php” ister “header.php” dosyalarının en başına ekleyin.

<?php include ‘path/to/example.php’; ?>

Daha sonra web sitenize girdiğinizde, eğer herşey yolunda gitiyse, sayfanın en tepesinde “No attack detected – click for an example attack” linkini göreceksiniz. Bu linke tıklayın. Sitenize bazı saldırı komutları gönderilecek ve olan biten ile ilgili çıktı ekranda gözükecektir.

“example.php” dosyasını çağrılan her php dosyası öncesinde koşturmak istiyorsanız 2 farklı (ve daha garantili) yol daha var. Bir yol “php.ini” dosyasına aşağıdaki kodu eklemek. Böylece tüm sunucudaki php dosyaları çalışmadan önce otomatik olarak “example.php” çalıştırılacaktır. (Tabi ki, değişikliğin etkin olabilmesi için sunucuyu restart etmeniz gerekir)

auto_prepend_file = /path/to/www/example.php

Diğer yol da ilgili dizinin .htaccess dosyasına aşağıdaki kodu eklemek. Bu sefer de o dizindeki tüm php dosyaları çalışmadan önce otomatik olarak “example.php” dosyası çalışacaktır.

php_value auto_prepend_file /path/to/www/example.php

Her defasında “No attack detected – click for an example attack” yazısının sitenizde görünmesini engellemek için yukarıdaki “example.php” kodunda mavi ile işaretli satırı silebilirsiniz.

Tabi bu haliyle PHP-IDS sadece saldırıyı tespit edip bir log tutmuş oluyor. Saldırının sonuç vermesini engellemek için kodda ufak bir değişiklik daha yapmanız lazım. Aşağıdaki kırmızı satırı eklerseniz diğer php kodları çalıştırılmadan durdurulmuş olur.

...............
die('<h1>Saldırı Tespit Edildi!</h1>');
} else {
echo '<a href="?test=%22><script>eval(window.name)</script>">No attack detected - click for an example attack</a>';
}

PHP-IDS üzerinde daha ince ayar yapıp sitenize çok farklı yetkinlikler kazandırmanız mümkün. Bu ince ayarlar için PHP-IDS sitesinin forum kısmına bakmanız gerekecek.