Борьба с DDos

12 3
babiy
На сайте с 06.06.2009
Offline
56
3642

Здравствуйте всем, в очередной раз столкнулся с ддосом на один из серверов своих, атакуют http флудом (атака слабая) но не приятно всё равно, большую часть ботов побанил при помощи выборки netstat

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr

и по выборке самых настойчивых в дроп iptables

Но я уверен что это дело можно автоматизировать, вот прошу совета а точнее помощи набрасать баш скриптик что бы он перебирал вывод этой команды и при превышении какой то нормы коннектов с одного апи дропал его?

Globatel.ru (http://globatel.ru) - надежные услуги на базе собственного ДЦ. Хостинг (http://globatel.ru/hosting/), VDS на базе KVM (http://globatel.ru/vps/), Dedicated (http://globatel.ru/dedicated/) ICQ 6485890, т. 8 (495) 706-49-49
Nanotik
На сайте с 20.11.2010
Offline
27
#1
babiy:
Здравствуйте всем, в очередной раз столкнулся с ддосом на один из серверов своих, атакуют http флудом (атака слабая) но не приятно всё равно, большую часть ботов побанил при помощи выборки netstat

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr


и по выборке самых настойчивых в дроп iptables

Но я уверен что это дело можно автоматизировать, вот прошу совета а точнее помощи набрасать баш скриптик что бы он перебирал вывод этой команды и при превышении какой то нормы коннектов с одного апи дропал его?

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset

вместо цифры 20 - указать желаемое ограничение коннектов с одного ip.

babiy
На сайте с 06.06.2009
Offline
56
#2

это я знаю, просто мне кажется что банить их будет надёжнее

Nanotik
На сайте с 20.11.2010
Offline
27
#3
babiy:
это я знаю, просто мне кажется что банить их будет надёжнее

#!/bin/sh

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -n | awk '{if ($1>10) print $2}' | while read line; do

iptables -A INPUT -s $line -j DROP

done;

/etc/init.d/iptables save

в скрипт, скрипт в крон на поминутное исполнение. В условии - вместо 10 - нужное число.

[Удален]
#4

ddos_deflate вам в помощь, банит при привышении числа соединений. Парсит netstat

ware
На сайте с 12.09.2010
Offline
407
#5

Nanotik, это похож на код от deflate, или я ошибаюсь?

А сам deflate имеет неприятность - банит IP самого сервера...

Nanotik
На сайте с 20.11.2010
Offline
27
#6
ware:
Nanotik, это похож на код от deflate, или я ошибаюсь?
А сам deflate имеет неприятность - банит IP самого сервера...

я не знаю, на что оно похоже, набросал навскидку :)

а вообще да, из вывода команды netstat надо выгрепывать ip сервера, т.е. итоговый вариант будет в виде:

#!/bin/sh

netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -n | awk '{if ($1>10) print $2}' | grep -v SERVER_IP | while read line; do

iptables -A INPUT -s $line -j DROP

done;

/etc/init.d/iptables save

ware
На сайте с 12.09.2010
Offline
407
#7

babiy, поставь barf.pl

ware добавил 09.10.2011 в 21:07

Вот про BARF

https://mail.robodesk.biz/index.php?/Knowledgebase/Article/View/457

Вот про deflate

http://deflate.medialayer.com/

Nanotik
На сайте с 20.11.2010
Offline
27
#8
ware:
babiy
Вот про deflate
http://deflate.medialayer.com/

во как, ушлые люди под это дело даже сайт замутили :)

Zaqwr
На сайте с 08.08.2007
Offline
111
#9

когда придёт на сервер 20к ботов и будут неспешно тыкать в index.php эти скрипты бесполезны, в том числе и deflate

Администрирование, Linux, Cisco, Juniper
babiy
На сайте с 06.06.2009
Offline
56
#10

Поставил deflate , правда пришлось чуть доработать скриптик сам, так как в базовом состоянии он забил на запись в inore.ip.list и забанил всё таки апи сервера)

теперь маленький вопросик к опытным товарищам, с какого количества конектов стоит банит апи адреса, я поставил 40 но проверив на своих других серверах выборку netstat даже на одном высокопосещаемом я не нашёл там цифры превышающей 20 конектов, и ещё вопросик где можно найти апи адреса поисковых ботов яши и гугля?

babiy добавил 09.10.2011 в 23:35

Zaqwr:
когда придёт на сервер 20к ботов и будут неспешно тыкать в index.php эти скрипты бесполезны, в том числе и deflate

это понятно, но мы пока спасаемся от мелкого ddosa

babiy добавил 09.10.2011 в 23:42

Поделюсь про доработку deflate

и так в /usr/local/ddos/ddos.conf после строки

IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"

добавляем строку

IGNOREDS_LIST="/usr/local/ddos/ignoreds.list"

соответственно создаём этот файлик и в него вносим то что банить нельзя!

теперь в самом скрипте /usr/local/ddos/ddos.sh после секции

IGNORE_BAN=`grep -c $CURR_LINE_IP $IGNORE_IP_LIST`

if [ $IGNORE_BAN -ge 1 ]; then
continue
fi

добавим ещё одну секцию


IGNOREDS_BAN=`grep -c $CURR_LINE_IP $IGNOREDS_LIST`
if [ $IGNOREDS_BAN -ge 1 ]; then
continue
fi

в результате белый список начинает работать нормально.

babiy добавил 09.10.2011 в 23:52

ещё к минусам этого скрипта можно отнести забивание в таблицу фильтрации таких вот записей

DROP       all  --  0.0.10.73            0.0.0.0/0

DROP all -- 0.0.6.110 0.0.0.0/0
DROP all -- 0.0.6.146 0.0.0.0/0

как я понимаю это подитог в выводе netstat который этот скриптик за одно со всем выводом вносит в бан, ну как это побороть я пока не знаю)

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий