WordPress PHP Flood Koruması

Wordpress Php Firewall

WordPress’te flood saldırılarını engellemek için Php imdadımıza yetişiyor. Bilindiği gibi WordPress, Mysql veritabanını yoğun biçimde kullanan bir yazılım. Cache eklentileri kullansanız bile kimi zaman flood (tekrarlanan istekler) saldırılarıyla veritabanı sunucunuz devre dışı bırakılabiliyor. Özellikle arama bölümüne (?s=a gibi) çok sayıda istek gönderilmesiyle birlikte “Error establishing a database connection” gibi bir hatayla karşılaşmanız olası. Bu tip bir saldırıya bir nebze karşı koymak Php ile mümkün.

Geliştirdiğim Biçimiyle Artık Bir WordPress Eklentisi

WordPress için PHP Firewall Yazalım

Blogumuza gelen istekleri bir süzgeç yardımıyla değerlendirip; flood olabilecek istekleri reddedelim.  Bunun için PHP’de sessionları kullanacağız. Eğer bir ip adresi belirlediğimiz süreden daha hızlı işlem yapmaya çalışıyorsa onu yine belirlediğimiz bir iletiyle uyaracağız.

 

Bu kod ile saniyede birden fazla istekte bulunan kişilere belirlediğimiz iletiyi gösteriyor; ardından çalışmayı “die” ile durduruyoruz. Böylece istek yapan ip adresi henüz veritabanına ulaşmadan engellenmiş oluyor.

Php Firewall’in Kullanımı

WordPress’in kurulu olduğu dizine girerek index.php dosyanızı indirin. Sayfanın en başına yukarıdaki kod parçasını yapıştırıp dosyayı kaydettikten sonra bu dosyayı tekrar sitenize yükleyin.

Wordpress PHP Firewall - Flood Koruması

Bu kod parçasını temanızdaki header.php’nin en üstüne eklemek yerine index.php’ye eklemiş olmamızın yegane nedeni index.php ile yorumlanan bütün içeriğin, veritabanı gibi işlemlere başlamadan, koruma altına alınmasıdır.

Bu oldukça basit bir kod parçasıdır. Ancak ihtiyaç duyduğunuzda imdadınıza yetişebilir. Genellikle saldırı altında olduğunuzda bu kodu kullanmanız daha mantıklı olabilir. Ancak süreyi 1 saniye yerine 3-4 saniye yapmanız (+ 1 olan kısmı +3 veya +4 olarak değiştirerek) daha yoğun saldırıların üstesinden gelmenizi sağlayabilir. Çok yoğun saldırıları önlemek için sunucu ve network tabanlı güvenlik önlemlerini düşünmelisiniz.

Bu kod parçası ile yalnızca WordPress değil PHP yazılımlarınızı da koruyabilirsiniz. Birkaç değişiklikle hemen her Php yazılımına entegre edilebilir. Joomla, Vbulletin, Mybb gibi popüler web yazılımlarında da aynı mantıkla basit bir koruma sağlayabilirsiniz.

Yoğun saldıralarda yüksek sayıda (her ip için) session oluşturulması saldırının bir session flooda dönüşmesine neden olabilir. Ancak her koşulda mysql’e yönelik bir saldırıdan daha az yorucu olduğunu söyleyebiliriz.

PHP Firewall’in örnek adresine şuradan ulaşabilirsiniz: http://www.beybut.com/demo/firewall-demo.php

Örnek sayfayı açtığınızda F5 tuşuna hızlıca basarak sayfayı yenileyiniz ve gelen mesajları takip ediniz. Eğer 2 saniyeden daha hızlı istek gönderirseniz koruma kodu devreye girecek ve şirin bir mesaj alacaksınız.

admin hakkında 986 makale
Beybut.com yöneticisi ve yazarı. 17 Ocak 1980'de doğdu. Uluslar arası ilişkiler ve siyaset bilimi, Türkçe öğretmenliği eğitim aldı. 1995 yılından beri, özellikle yazılım konusunda profesyonel çalışmalarda bulundu. Pascal, Delphi, Php, sunucu güvenliği ve optimizasyonu, Seo alanlarında çalışmalar yürüttü. Yerel gazetelerde köşe yazarlığı yaptı. Yazın yaşamına dair yarışmalarda birçok ödül kazandı. Şiir, tarih, psikoloji, felsefe ve siyaset bilimi özel ilgi alanları.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*