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

 

spacer.png, 0 kB
spacer.png, 0 kB
Yazarın bu bölümdeki diğer yazıları...
HTTP-GET DDoS Atak Engelleme Yazdır E-posta
Inanc Ilgin, Trend Micro   
15.12.2008

Bu makalede binlerce HTTP-GET isteği ile yapılan DDoS atakları karşısında nasıl davranmamız gerektiği irdelenecektir. Ayrıca atağın boyutuna göre sırası ile almamız gereken önlemler anlatılacaktır. 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.

Nginx kurulumunun detayları için http://nginx.net/ adresine başvurulabilir.


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

Yorumlar (4)
1. 16-12-2008 14:30
 
Merhaba Onur, 
 
Topoloji ve yapmak istediklerin hakkında biraz bilgi verebilirsen elimden geldigi kadar yardımcı olmaya calisirim. 
 
Kolay gelsin.
 
Inanc Ilgin
2. 16-12-2008 11:07
 
Fakat şöyle bişiy var ben mi yanlış yaptım bilemiyorum. Şirketimin iç web sitesine herkes ulaşmaya çalışırken diyelim ki 30 bilgisayar var ve bu kullanıcı aynı anda sabit ip üzerinden ulaşmaya çalışıyor web siteme ve firewall onun trafik limiti daraltıyor buda bazı kullanıcıları diskalifiye ediyor. Ben biyerde yanlış yaptım galiba?
 
onur karamanlı
3. 15-12-2008 13:08
 
Belirttiğiniz adresi inceledim. Ek bilginiz ve eklemeleriniz için teşekkürler.
 
Inanc Ilgin
4. 15-12-2008 11:08
 
Konu ile ilgili olarak Kasim baslarinda bir bilgi-alisverisi donmustu. Asagidaki link de ilginizi cekebilir; 
 
https://lists.owasp.org/pipermail/owasp-turkey/2008-November/thread.html#498 
 
Bir de ek bir onlem. Bazi Apache parametreleri de kontrol edilebilir. 
 
https://lists.owasp.org/pipermail/owasp-turkey/2008-November/000498.html
 
Bedirhan Urgun

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 2012 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