Forum'da ara:
Ara


« Önceki başlık :: Sonraki başlık »  
Yazar Mesaj
Mesaj13.04.2012, 18:02 (UTC)    
Mesaj konusu: HTTP-GET DDoS Atak Engelleme

Bildiğimiz gibi DDoS, birçok firmanın başını ağrıtan ve bazı durumlarda önlenmesi çok güç olan bir atak türüdür. En başta basit olarak senaryomuzu çizelim:
• Linux Sunucu
• Apache Web Sunucu
• Alan ismi : www.xx.com
Yukarıda belirtildiği gibi üzerinde Apache Web Sunucusu çalışan bir sunucumuz bulunmakta. Web sunucumuz üzerinde çalışmakta olan www.xx.com adresine saniyede binlerce IP adresinden HTTP-GET isteği yapılmaktadır.
Bu durumda Apache belli bir sure sonra bu isteklere yanıt verememeye başlayacaktır. Eğer istekte bulunulan sayfanın bağlandığı bir veritabanı sunucumuz mevcut ise, bu istek veritabanımızın da yanıt verememesine sebep olacaktır.

Peki ne yapacağız ?

Öncelikle şunu bilmeliyiz ki; her bir HTTP-GET isteği için ayrı bir bağlantı oluşturulmasına gerek yoktur. Çünkü HTTP/1.1, açılan bir bağlantı içerisinden dilediğimiz kadar istek göndermemize izin verir. Bu bilindiği gibi Request Pipelining olarak adlandırılmaktadır. Bu da demek oluyor ki güvenlik duvarımızda (donanımsal ya da yazılımsal) TCP 80 portuna gelen sadece bir HTTP-GET isteği görebiliriz ama aslında bu istek içerisinden binlerce istek alıyor olabiliriz.
• Bir HTTP-GET atağında öncelikle yapmamız gereken şey web sunucumuzun loglarını incelemek olacaktır. Çünkü bu loglar icerisinde bizim IDP (Intrusion Detection & Prevention) sistemimiz üzerinden engelleyebilecegimiz sabit bir data bulabiliriz. Mesela sabit bir HTTP başlığı, referrer veya user-agent tespit edip IDP sistemimiz üzerinden engelleyebiliriz.
• Eğer gelen istekler değişik çerezler ile geliyorsa ve bu alanda yapabileceğimiz ekstra bir şey yoksa ikinci bir önlem olarak, bir dakika icerisindeki web server loglarına bakarak en cok istegi yapan IP adreslerini daha sistemimize ulaşmadan engelleyebiliriz. Ama örneğimizde olduğu gibi farklı kaynaklardan gelen istekleri bu şekilde engellememiz fazla mümkün olamayacaktır. Çünkü karşı karşıya olduğumuz atak türünde saldırılar binlerce farklı IP adresinden gelemekte ve bu IP adresleri sürekli değişmektedir.
• Diğer bir yöntem olarak web sunucumuz (Apache) üzerinde çeşitli modüller kullanabiliriz. Mod_Evasive yada Mod_Choke, önerilebilecek modülleriden ikisidir. Fakat atağın büyüklüğüne ve getirdiği trafik yoğunluğuna göre bu modüller yetersiz kalabilir.
• Bir sonraki aşama olarak IDP’ miz ya da güvenlik duvarımız üzerinde TCP Bağlantı Limiti (Connection Limit) koyarak ve eşik değerini (threshold) düşürerek saniyede gelen bu aşırı HTTP-GET isteklerini daha web sunucumuza ulaşmadan engelleyebiliriz. Bu genellikle etkili olan ve saldırganın başarısını azaltan bir engelleme mekanizmasıdır. Ama bu durumda gelen istek HTTP-GET isteği olduğu için güvenlik duvarımız ya da IDP’miz hangi isteğin dogru hangi isteğin yanlış olduğunu anlayamayacak ve bu durumda siteye normal olarak ulaşmak isteyen kişilerin isteklerinin de engellenme ihtimali sozkonusu olacaktır. Ayrıca bu işlemde bile eğer atak çok büyük ise güvenlik sistemimizden kaçan istekler arka taraftaki web sunucumuza ulaşacak ve sitemizin sağlıklı çalışmasına engel olacaktır.
• TCP Bağlantı Limitleme işleminin yanı sıra Apache sunucumuz üzerine bir Ters Vekil Sunucu (Reverse Proxy) kurup, sayfaların ön belleklenmesini sağlayarak gelen bu isteklerin sunucu tarafında herhangi bir TCP bağlantı açmadan alınmasını sağlayabiliriz. Nginx bu amaçla kullanılabilecek faydalı bir yazılımdır.
Bu işlemlerin sonucunda bağlantı limiti (IDP ya da güvenlik duvarı) ile saniyede belirttigimiz limitin üzerinde gelen istekler engellenecek ve ters vekil sunucumuzun sayesinde gelen istekler daha Apache’ye ulaşmadan ön bellek üzerinden verilecektir. Ters vekil sunucumuzu kurduktan sonra IDP veya güvenlik duvarımız üzerinde yaptığımız bağlantı limiti eşik değerini yukarılara çekerek testlerimizi yapabiliriz. Bu testlerin sonucunda saldırı amaçlı bağlantılar ile sitemize normal yollardan ulaşmak isteyen kullanıcılar arasında bir denge kurulacak ve hatalı engellemelerin önü alınacaktır.
Önceki mesajları göster:   


Powered by phpBB © 2001, 2005 phpBB Group
Türkçe Çeviri: phpBB Türkiye & Erdem Çorapçıoğlu