Maalesef bu şuanda sektörümüzün en büyük belalarından biri. Bu sorunu kökten çözmenin 2-3 metodu var ben en kolayından bahsetmek istiyorum işi kaynağında yok etmek. Yani isp ve datacenter şirketlerinin kendi verimerkezlerinden dışarı çıkan paketleri gerçekten mantıklı mantıksız izleyerek sahte ve saldırı içerikli olanlarını temizlemesi yönünde. Bu kısmen zor kısmen problem olacak bir durum.
Sorununuz için yaptığınız scriptin türevlerinin işe yararlılığı tartışılır durumda, mantık olarak tek bir ip adresini kullanan 10 kişilik bir ofis veya internet kafe üzerinden sizin sisteme girildiğinde gerçekte sadece 4-5 kişi aynı anda sitede geziyor olmasına rağmen siz tek ip gördüğünüz için herkesi engellemiş olabilirsiniz tek açık nokta burası kalıyor sanırım. Daha profesyonel çözüm olarak http_GET flood işi için sizin script'in benzer modelini kullanan IPS/IDP cihazlar mevcut sektörde, bu cihazların fiyatları 15-20k usd den başlamakta ve ele avuca gelir hatırı sayılır kalitede iş yapanların fiyatları ise 70-80k altında olmamakta. SYN konusunda ise durum daha zor. Bu noktada piyasada %100 çözüm üreten sadece 2-3 ekipman bulunuyor, bunların fiyatları da 50k civarından başlıyor... Saygılarımla; Selçuk SARAÇ [email protected] Hosting Internet Hizmetleri San. Tic. Ltd. Şti. Otakçılar Cad. No: 78, Kat:4, Flat Ofis, Eyüp/ İstanbul/ Türkiye 7/24 Destek Hattı : +90 (212) 437 87 87 (pbx) Kurumsal Erişim(Satış, İdari) : +90 (212) 437 85 50 (pbx) Fax : +90 (212) 437 85 60 Müşteri Kontrol Paneli : http://my.sadecehosting.com WebMail : http://webmail.sadecehosting.com -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Barkın Kılıç Sent: Wednesday, February 02, 2011 11:55 PM To: [email protected] Subject: [Linux-guvenlik] Http Get/Post Flood atak engelleyen script Merhaba Son zamanlarda sıkca artan DDOS saldırıları can sıkmaya devam ederken,kimi çeşitleri için korunma yolları mevcut kimileri içinse gerçekten korunmak zor. Bunların içinden HTTP GET/POST flood ile sıkça karşılaşıyorum. Bu atak çeşidi normal HTTP GET isteğini binlerce defa ve farklı bot networklerden yaparak servis dışı bırakabiliyor sunucuları. Geçenlerde yine yaşadığımız bu problem nedeniyle aklıma önceden bildiğim ama örneğini görmediğim bir script yazmak geldi. Nasılsa HTTP GET isteği yapılabilmesi için, TCP protokolü gereği gerçek ip adresinden gelmesi ve 80. porta bağlantı açması gerekiyor. Bu fikirden yola çıkarak şunu yapabilen bir bash script yazmak aklıma geldi: Netstat çıktısı ile tcp 80. port üzerinden ( Portlar değiştirilebilir ) yapılan bağlantı sayısı belli bir sayının üzerinde ise bu ip adresini belirli bir süre yasaklayıp bunları bir listede tutan, daha sonra süresi doluncada bu yasağı kaldıran bir script yazdım. Belirli bir seviyeye kadar getirdim. Apache'nin benchmark tool'u "ab" ile atak simule ederek test ettim. Şuan Centos üzerinde kusursuz çalışıyor. Tahminim diğer Linux dağıtımlarındada kusursuz çalışır. Servis gibi çalışmasını sağladım, kendini arka planda askıda tutuyor, yani scripti çalıştırdıktan sonra bağlantınızı kesseniz bile çalışmaya devam ediyor ve 15 saniye gibi bir aralıkla netstat çıktısına bakıp, örneğin 100 bağlantı (Bağlantı adeti değiştirilebilir) üzerinde yapan ip adresini 1 dakika (Süre değiştirilebilir) banlayıp, daha sonra süresi dolunca listede bu girdiyi diyez ile işaretleyip bu yasağı kaldırıyor ama tekrar yaparsa bu listeye kaçıncı defa girdiyse bu sayısını bir arttırıp daha sonra tekrar yasaklıyor başındaki diyezi kaldırarak. Süresi dolunca yine aynı işlemleri yapıyor. Yasaklamayı iptables ile 80. porta olan erişimini DROP ederek yapıyor. Aynı ip adresi tekrar yakalanırsa engellenme süresi bu listeye girdiği sayı kadar çarpılıp giderek artıyor. Yani banlanma süresi sabit değil, suç işledikçe suçu oranında artıyor :) Eğer scripti kapatmak isterseniz kendisine "kapat" paremetresini vermeniz onu durdurmaya yetiyor. Ayrıca "durum" parametresi ilede basitte olsa servis çalışıyor mu, durmuş mu, yoksa öldürülmüş mü öğrenebiliyorsunuz. Çok fonksiyonlu değil ama iş görebilecek bir script. Belki işine yarayan olabilir diye ekte paylaşmak istedim. Deneyip yorum iletmek isteyen, sorun yaşayan, sorusu olan, ilerletmek konusunda irtibata geçmek isteyen olursa bir sakıncası yoktur benim için, elimden gelen yardımı yaparım. İyi çalışmalar. -- Barkink _______________________________________________ Linux-guvenlik mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-guvenlik Liste kurallari: http://liste.linux.org.tr/kurallar.php
