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

Cevap