spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
HTTP Flood Saldırılarına Karşı Web Uygulaması Seviyesinde Yaklaşımlar Yazdır E-posta
Gökhan Muharremoğlu, PwC   
16.06.2012

Flood saldırıları ile hedeflenen esas amaç, sistemlerin normal kullanım senaryolarıyla belirlenmiş sınırlarının zorlanıp, aşılarak hizmetin engellenmesini sağlamaktır. Bir veri trafiğinin normal kabul edilen düzeyden anormal kabul edilecek düzeye gelmesi, bir Flood (sel) saldırısı örneği olabilir. Bu saldırıların belirli bir protokol üzerinde yapılması ile saldırı adını ve tekniğini o protokole yönelik olarak değiştirmiş olur. Bunlara örnek olarak; DNS Flood, UDP Flood, SYN Flood, HTTP Flood gibi saldırılar örnek gösterilebilir. Bu saldırı türlerinin her biri kendine özgün teknik detaylar içermektedir. Protokollerin var olan zafiyetlerinden yararlanılarak, normal kabul edilecek trafik düzeyinin artması ile Flood saldırıları amacına ulaşabilir.

Flood saldırıların başarılı olabilmesinin ardında yatan en büyük etken, saldırı için kullanılan protokolün tasarımında bulunan güvenlik zafiyetidir. Bu nedenle protokol’de bulunan zafiyetin de göz önünde bulundurularak bir sistem tasarımına gidilmesi, güvenlik açısından en etkin yöntem olmaktadır. HTTP protokolü, uygulama katmanında (OSI 7) bulunan bir protokol olması nedeniyle, sadece paket içeriğini analiz edebilen güvenlik cihazları (IPS, IDS, vs.) ile denetlenebilmektedir. Bu güvenlik cihazları dışındaki cihazlar eğer bu katmanda çalışmıyorsa, paket içeriğini denetleyemez. Ancak HTTP trafiği için söz konusu Flood saldırılarına geldiğinde, TCP protokolünün denetlenebilmesi gibi bir durum ortaya çıkar. Böylece birçok HTTP Flood saldırısı henüz taşıma katmanında iken engellenebilir. Ancak, HTTP Flood saldırılarının etkili bir şekilde tespit edilemediği veya engellenemediği durumlar da vardır.

Bu durumların büyük çoğunluğu yetersiz yapılandırmış güvenlik cihazlarından ortaya çıkmakla beraber, diğer bir büyük çoğunluğu da ilgili bir güvenlik cihazının hali hazırda bulunmamasından kaynaklıdır. Bu gibi durumlar için uygulanması en etkili ve en kolay yöntem, Web uygulaması tasarımı aşamasında Flood şeklinde yapılan isteklerin sistemi minimum etkilemesini sağlamak ve tasarımı bu yönde geliştirmektir. Aynı zamanda etkileri en aza indirilen saldırının, TCP üç yollu el sıkışma doğası gereğince Spoof edilemeyen bir IP adresi üzerinden geldiği göz önüne alınarak IP adresinin tespit edilip, mümkünse engellenmesi gerekmektedir. Önünde IPS ve benzeri güvenlik cihazlarının olduğu sistemlerin birçoğunun günümüzde HTTP Flood saldırılarını tespit edip, engelleyecek şekilde doğru yapılandırılmadığı görülmektedir. Birçok güçlü SYN, UDP, DNS, ICMP Flood saldırısından başarı ile kurtulabilen sistemin, tek bir IP adresi üzerinden gelen HTTP Flood saldırısında hizmet veremeyecek duruma geldiğine sık sık rastlanmaktadır. Bu nedenle HTTP Flood saldırıları günümüzde geçerliliğini koruyan, yaygın bir tehdittir. Bu tehdide karşı ek bir önlem almak isteyen ya da elinde sadece bir Stateless Firewall veya benzeri tek başına yetersiz ekipman bulunduran bir sistem yöneticisi için en uygun çözüm, bu saldırılara Web uygulaması düzeyinde bir çözüm geliştirmektir.

Bir Web uygulamasında aşağıdaki kriterlerde bir tasarım temel alınarak Flood saldırılarına karşı direnç oluşturmak mümkün olabilir:

  • Web uygulamasının bütün sayfaları tarafından çağrılan ortak bir Script’in kullanılması.

  • Bu Script’in Web uygulamasına erişmeye çalışan her IP adresini kaydetmesi.

  • Kaydedilen veritabanının “DBMS:: Flat File” yani düz metin dosyası veya RAM olarak seçilmesi.

  • Kaydedilen her IP adresinin istek yaptığı zamana ait mikro saniye bilgisinin de kaydedilmesi.

  • Aynı IP adresinden yapılan isteklerin zaman bilgilerinin kıyaslanması.

  • Önceden belirlenmiş zaman kuralını ihlal eden IP adresleri için bir sayaç oluşturulması.

  • Beyaz listede bulunan IP adresleri için istisnalar yaratılması.

  • Oluşturulan sayaç değerinin IP adresi ve mikro saniye bazındaki zaman bilgisi ile kaydedilmesi.

  • Kuralı belirli sayıda ihlal eden IP adresinin bir başka veri tabanına yazılarak not edilmesi.

  • IP adresinin yaptığı bütün Script çalıştırma isteklerinin psuedo code “EXIT” ile sonlandırılması.

  • Sonlandırma işlemi için bir zaman aşımı değeri belirlenmesi.

  • Bu süreyi beklemek istemeyen gerçek bir kullanıcı ise, CAPTCHA sorulması.

  • Kaydedilen IP adreslerinin liste olarak başka bir güvenlik sistemi tarafından (örn. Stateless Firewall) işlenmesi.

  • Kaydedilen IP adreslerinin Web sunucusu tarafından otomatik engellenmesi (örn. Htaccess) 

  • Sistem yöneticisinin bir e-posta ile uyarılması.

Yukarıda geçen adımları tasarımı içinde kullanan bir Web uygulaması HTTP Flood saldırılarını Web uygulaması (Scripting) seviyesinde tespit edebileceği gibi bu saldırılara karşı hem Web uygulaması seviyesinde bir direnç geliştirebilir hem de elinde hali hazırda bulunan, paket içeriği okuma yeteneği bulunmayan bir Stateless Firewall veya ACL (Access List) ile IP adresi bazında engelleme gerçekleştirebilir.

Bir HTTP Flood senaryosu ile durum daha ayrıntılı incelenebilir:

Web uygulamasının “normal” kabul edilen trafik değerleri,

Tekil bir IP adresinden gelen en fazla istek sayısı: 5 adet/sn.

Tekil bir IP adresinin bir birine en yakın iki isteği arasındaki süre: 0.2 sn.

Yukarıdaki gibi bir baz düzeyde (baseline) trafiğe sahip olan Web uygulaması için aşağıdaki kurallar ile aktif edilmiş bir HTTP Flood koruması mümkün olan en az hata (en az false positive) ile sonuca ulaşacaktır:

Tekil bir IP adresinden 0.1 sn. içinde gelebilecek maksimum istek sayısının 10 adet ile sınırlandırılması.

Yukarıdaki kural saniyenin 10’da 1’inde 10 adet yani 10.000 mikro saniyede bir IP adresinden 1 adet isteğin yapılabilmesine izin verecektir.  Bu kural “anormal” olarak kabul edilen trafiği temsil etmektedir. Normal olarak kabul edilen trafik ise,  40.000 mikro saniyede bir IP adresinden 1 adet istek yapılmasıdır. Belirli bir süre zarfında yapılan istek sayısını saymak birçok hatalı (false positive) uyarının önüne geçecektir. Sadece iki bağlantı arasındaki süreyi ölçerek yapılan bir tespit sistemi iç içe kullanılan bazı sorguların Flood saldırısı olarak yorumlanmasına neden olabilir. Buna en güzel örnek iç içe konmuş HTML (iframe) çerçeveleridir.

Bir Web uygulaması için güvenlik ile ilgili bir çözüm geliştirirken yazılımcının güvenlik konusunda bilgi ve deneyim sahibi olması, ortaya çıkacak sonucu daha da etkili kılacaktır. Web uygulamasının diğer katmanlardaki güvenlik cihazları ile konuşuyor olması, HTTP Flood saldırıları için Web uygulamasını barındıran sistemin de ek bir güvenlik önlemiyle daha korunması sonucunu doğuracaktır. Önünde doğası gereği sadece temel engelleme işlemlerini hızlı bir şekilde gerçekleştiren bir Stateless Firewall bulunduran bir Web uygulaması, Firewall'un bu özelliğini bir anda bu saldırı tipine karşı bir avantaj olarak kullanmaya başlayabilir.

Web uygulaması tabanlı bu çözüm ile saldırı esnasında tüketilen kaynak (SQL sorgusu, CPU, vs.) miktarı azaltılabilir, saldırgan IP adresleri tespit edilebilir ve/veya otomatik olarak başka bir sistem aracılığı ile (Htaccess, Iptables veya bir Stateless/Stateful Firewall ile) bu adresler engellenebilir. Doğası gereği, Web uygulaması zafiyet tarama araçları (vulnerability scanner),  Brute Force (kaba kuvvet) parola denemeleri de bir Flood saldırısı etkisi ile çalışabilmesinden dolayı bu girişimler de tespit edilebilir ve/veya yavaşlatılabilir hatta engellenebilir.

Referanslar

[1]-HTTP Anti Flood Security Gateway Module - https://sourceforge.net/projects/iosec/

[2]-IOSEC.ORG-http://www.iosec.org

[3]-SANS-http://www.sans.org/reading_room/whitepapers/detection/denial-service-attacks-mitigation-techniques-real-time-implementation-detailed-analysi_33764

[4]-Applicure-http://www.applicure.com/solutions/prevent-denial-of-service-attacks


Favori olarak ekle (0) | Görüntüleme sayısı: 5759

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2014 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB