Merhaba, Tebrik ederim, ellerine saglik..
Koda kisaca bir goz attim. Bir kac tavsiyem olacak. "iptables -F" ile tablolari tamamen temizlemektense, ilerde baska iptables urunleriyle de birlikte calisabilirligini saglamak adina, kendi tablonu olusturup, sadece o tabloyu temizlemeyi dusunebilirsin. Sonrasinda filter tablosundan, kendi tablona bir yonlendirme ekleyerek engellemeleri aktif hale getirebilirsin. Ayrica sanirim sisteminde bir iptables politikasi da kurulu degil (koddan anladigim kadariyla). Belki sistemin onunde baska bir firewall vardir, ama yine de basit bir politika olusturabilirsin. Boyle scriptler gelistirmesi ve sonuclari kisa sureli faydali olsa da, gercek bir saldiri aninda sistemin kirilma noktasini da olusturabilirler. Cok fazla saldiri oldugunda script yavas calisabilir. Sistem yuku dolayisiyla. Ayrica bu yavaslik, tabloyu temizledigin ve sonrasinda tek tek ekleyene kadar gecen surede sisteminin saldiriya acik kalmasi anlamina da geliyor. Islemi biraz hizlandirmak icin, engellenecek ip listesini olusturup (iptables'in dump formatinda) sonra tum hesaplamalar bittiginde, iki adimda flush ve import ederek engelleme listesini guncelleyebilirsin. Bu sistemin acik kaldigi zamani da dusurur. Belki daha da ilerde, shell scriptten tamamen kurtulmayi dusunebilirsin. Her ne kadar masum gorunse de her bir cut, sed, awk gibi string islemleri icin kullandigin komut ayri bir process yaratip, calistirmayi gerektiriyor. Bu da performansini cok dusurur. Cok fazla farkli IP oldugu durumda sistem nasil davraniyor, denemelisin. Umarim tavsiyelerim isine yarar.. Kolay gelsin, Saygilarimla, Serkan Kenar 2011/2/3 Barkın Kılıç <[email protected]> > 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 > > -- Serkan Kenar
_______________________________________________ Linux-guvenlik mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-guvenlik Liste kurallari: http://liste.linux.org.tr/kurallar.php
