Son zamanlarda aldığım yoğun flood saldırılarına karşı kendi geliştirdiğim scripti sizlerle paylaşmak istedim. Benim çok işimi gördü.
Not : Bu sadece FreeBSD'de çalışır. Linux için biraz modifikasyona ihtiyacı var.
Öncelikle bir kontrol scripti yapıyoruz. Bu script'i her dakika çalışacak şekilde crontab'a ekliyoruz. Yaptığı iş basit ama flooder'lar için çok etkili bir çözüm.
TCP bağlantıları kontrol ediyor ve sunucu üzerinde FR_MIN_CONN değerinin (bende 200) üzerinde bağlantı kurmuş bir ip varsa route ile onu local olarak algılatıyor ve uzaktan gelen tüm bağlantıyı koparmış oluyor.
Koda dikkat ederseniz banlist.txt dosyasına da bu ip'leri not alıyor. Ara sıra bu listeyi temizlemek isterseniz;
işinizi görecektir. (/root/empty.txt boş bir dosya olmalı.) Ben şahsen her hafta bir kere bu programı crontab'dan çalıştırıyorum.
Bir de proxy destekli minik ama güçlü flooder programları var. Bunlardan korunmanın yolu ise bilinen güncel proxy listelerine ulaşıp bunları üşenmeden banlamanız (FreeBSD için: /sbin/route -q add proxy.ipsi 127.0.0.1). Şu sıralar bu işlemi elle yapıyorum ancak önümüzdeki günlerde bunu da otomatikleştiren bir şeyler yapmaya çalışacağım.
BOTNET konusunda herkesin bildiği gibi maalesef elden gelen pek bir şey yok.
Bir gün birilerinin işine mutlaka yarar diye yazdım.
Saldırısız, temiz günler dilerim.
Not : Bu sadece FreeBSD'de çalışır. Linux için biraz modifikasyona ihtiyacı var.
Öncelikle bir kontrol scripti yapıyoruz. Bu script'i her dakika çalışacak şekilde crontab'a ekliyoruz. Yaptığı iş basit ama flooder'lar için çok etkili bir çözüm.
TCP bağlantıları kontrol ediyor ve sunucu üzerinde FR_MIN_CONN değerinin (bende 200) üzerinde bağlantı kurmuş bir ip varsa route ile onu local olarak algılatıyor ve uzaktan gelen tüm bağlantıyı koparmış oluyor.
Kod:
#!/bin/sh
FR_MIN_CONN=200
TMP_PREFIX='/tmp/frrr'
TMP_FILE=`mktemp $TMP_PREFIX.XXXXXXXX`
/usr/bin/netstat -ntu -f inet| awk '{if(NR>2 && NF=6) print $5}' | cut -d. -f1-4 | grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$' | sort | uniq -c | sort -nr > $TMP_FILE
while read line; do
CURR_LINE_CONN=$(echo $line | cut -d" " -f1)
CURR_LINE_IP=$(echo $line | cut -d" " -f2)
if [ $CURR_LINE_CONN -lt $FR_MIN_CONN ]; then
break
fi
/sbin/route -q add $CURR_LINE_IP 127.0.0.1
/bin/echo $CURR_LINE_IP >> /root/banlist.txt
/bin/echo "Subject: $CURR_LINE_IP ipden $CURR_LINE_CONN baglanti kesildi." | /usr/sbin/sendmail -F [email protected] -t [email protected]
done < $TMP_FILE
/bin/rm -f $TMP_PREFIX.*
Koda dikkat ederseniz banlist.txt dosyasına da bu ip'leri not alıyor. Ara sıra bu listeyi temizlemek isterseniz;
Kod:
#!/bin/sh
TMP_PREFIX='/tmp/fcrrr'
TMP_FILE=`mktemp $TMP_PREFIX.XXXXXXXX`
/bin/cat /root/banlist.txt > $TMP_FILE
while read line; do
CURR_LINE_IP=$(echo $line)
/sbin/route delete $CURR_LINE_IP
done < $TMP_FILE
/bin/rm -f $TMP_PREFIX.*
/bin/cp empty.txt banlist.txt
işinizi görecektir. (/root/empty.txt boş bir dosya olmalı.) Ben şahsen her hafta bir kere bu programı crontab'dan çalıştırıyorum.
Bir de proxy destekli minik ama güçlü flooder programları var. Bunlardan korunmanın yolu ise bilinen güncel proxy listelerine ulaşıp bunları üşenmeden banlamanız (FreeBSD için: /sbin/route -q add proxy.ipsi 127.0.0.1). Şu sıralar bu işlemi elle yapıyorum ancak önümüzdeki günlerde bunu da otomatikleştiren bir şeyler yapmaya çalışacağım.
BOTNET konusunda herkesin bildiği gibi maalesef elden gelen pek bir şey yok.
Bir gün birilerinin işine mutlaka yarar diye yazdım.
Saldırısız, temiz günler dilerim.