WP AntiFlood: WordPress Flood Koruma Eklentisi

WordPress flood koruma eklentisi, WP Anti Flood ile blogunuza yönelen istekleri Ip adresi ve milisaniye bazında bekleterek yönlendirmeye tabi tutabilirsiniz. WordPress blogunuza yönelen ve http isteğinde bulunan saldırıların tahribatını yine WordPress üzerinden azaltabilirsiniz. Saldırıların neden olduğu yüksek kaynak kullanımından meydana gelen yavaşlıktan, fazla bağlantı nedeniyle oluşan “Error establishing a database connection” hatalarından sıyrılmanız olanaklı.

 

Wordpress Flood Koruması WP AntiFlood Eklentisi
WordPress Flood Koruması WP AntiFlood Eklentisi

WP AntiFlood’un Çalışma Süreci

WP AntiFlood eklentisi, Worpdress’e eklemlenen işlem öncesi, PHP tabanlı bir süzgeçtir. Bu süzgeç, bir ip adresinden gelen isteğin zamanını session yardımıyla depolayarak; aynı ip adresinden gelen bir sonraki isteğin zamanıyla ilk isteğin zamanını karşılaştırır. Eğer Settings bölümünde milisaniye cinsinden belirlediğiniz süreden daha kısa bir sürede http get/post talebinde bulunulmuşsa ilgili ip adresini bir geçiş/kapı sayfasına yönlendirir. Bu geçiş sayfası hızlı talepte bulunan kişiyi birkaç saniyeliğine yavaşlatıp istekte bulunduğu sayfaya tekrar yönlendirir. Eğer aşırı istek nedeniyle bir veritabanı hatasıyla karşılaşıldıysa yine bir kapı kullanarak talep edilen sayfaya yönlendirme yapar. Böylece -sunucu ve ağ optimizasyonunuzla da ilişkili olarak- yüksek talepte bulunan ipler beklemeye alınıp normal ziyaretçilerin bu yoğunluktan en az biçimde etkilenmesi; site hızının ve kararlılığının, sunucu kaynaklarının korunması amaçlanır.

WP AntiFlood Hangi Durumlarda Kullanılır?

WP AntiFlood, blogunuz için daima önerilen bir yazılımımız. Çünkü bir saldırının ne zaman geleceğini kestirmek mümkün değil. Normal zamanlarda Level 1-2-3’te bırakabileceğiniz eklenti ayarı, saldırı durumlarında Level 4-5 veya belirlediğiniz bir ayara (Random) çekilebilir.

WP AntiFlood Arama Motorlarını Engeller Mi? veya Arama Motorları Taklit Edilerek Saldırı Yapılabilir Mi?

Wp AntiFlood’un arama motorlarını engellememesi için kullanılan bir fonksiyona sahiptir. Bu fonksiyonun manipule edilmemesi için referer, browser agent yerine IP/hostname tabanlı bir tarama yapılır. Böylece flood araçlarını kullanan ip adresleri, arama motorlarını taklit edemez. Wp AntiFlood proxy flood saldırılarında da gerçek ip adresine ulaşmaya çalışarak bu ip adresiyle ilgili veriyi sessionda saklar. Bu sayede transparan ve bazı anonymous proxyler WPAntiFlood’u alt edemez.

Wp AntiFlood, Blogumu Tüm Ddos/Botnet Saldırılarından Korur Mu?

Hayır. Wp AntiFlood, WordPress’e eklemlenen bir PHP yazılımıdır. Direk olarak network veya Internet bağlantınız ile ilgili bir koruma sağlamaz. WordPress’in sunucu (cpu, ram vb.) ve Internet kaynak kullanımını, http saldırıları süresince, en alt düzeyde tutmayı amaçlar.

Wp AntiFlood’un Artıları Nelerdir?

Wp AntiFlood eklentisi;

  1. Bir veritabanına gereksinim duymaz. WordPress veritabanını kullanmaz. Bu anlamda ekstra bir yüke veya koruma zaafiyetine neden olmaz.
  2. WordPress’in “options” ayarlarına kaydolmaz. Tüm işlemleri PHP dosyasına yazma/değiştirme yoluyla sağlar. Böylece en az düzeyde kaynak tüketir ve özgürce çalışır.
  3. wp-admin/, ?s= arama sorguları gibi WordPressle ilgili tüm görüntülenebilir sayfalar flood korumasına dahildir.
  4. Random bölümüyle özelleştirilebilir. Sunucu ve Internet özelliklerinizle de ilişkili olarak koruma düzeyini milisaniye cinsinden özelleştirebilirsiniz.
  5. İçeriğinde zararlı kodlar, başka bir siteyle bağlantı bulunmaz. Bir ihtiyaçtan ortaya çıkarak kullanıcılara temiz biçimde ulaşmıştır.
  6. Açık kaynak kodlu ve ücretsizdir.
  7. Talep ve takdir ile gelişime daima açıktır.

WordPress’in resmi sitesinde eklentinin sayfasına ulaşabilir; eklentiyi oradan kurabilirsiniz. Ancak oradaki sürümü ilk olduğundan ve onay süreci gerektirdiğinden aşağıdaki indirme bağlantısını kullanabilirsiniz. Yine de beklemek ve ilk sürümü kullanmak isterseniz: https://wordpress.org/plugins/wp-antiflood/

Wp AntiFlood Eklentisini İndir

Kurulum: Zip dosyasının içeriğini Worpdress’in kurulu olduğu dizinde /wp-content/plugins klasörüne klasör olarak Ftp ile yükleyin. WordPress admin panelinizde Eklentiler bölümünden eklentiyi etkinleştirerek; sol menüde görebileceğiniz bölüme tıklayıp ayarları kendinize göre yapıp kaydedin.

İyi kullanımlar dilerim. Geliştirme için görüş ve taleplerinizi lütfen yorum bölümünden bildiriniz.

WordPress PHP Flood Koruması

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.