Методика отлова http флудеров на машине с nat под unix like OS с помощью tcpdump!

12
K
На сайте с 24.03.2004
Offline
223
1491

Вынес в отдельный топик.

Zaqwr:
хранится, но доступа к ней у меня нет, я бывший сотрудник, доступ к натам есть =) просто ещё рас, ковыряться в статистике к примеру я не смогу, в реальном времени ещё бы смог помочь, так как в домовой сети всегда все друг друга знают =) и думаю можно было попытаться получить самого бота для дальнейшего "изучения"

когда флудит, то это сразу видно... могу подсказать как слегка облегчить процесс и попросить наших программеров написать небольшой скриптик помогающий разгребать tcpdump.

но лично от себя могу предложить пятиминутную зарисовку только что сделанную с особой извращенностью на обычном sh под фрей... проверял на 6.x

Ищем синфлудера:

tcpdump -i em0 -c 5000 -n dst port 80|grep "(0)"|grep ": S "|awk -F " " '{print $3,$5}'|awk -F "[.: ]" '{printf "%s.%s.%s.%s %s.%s.%s.%s\n", $1,$2,$3,$4,$6,$7,$8,$9}'|sort|uniq -c|sort -r |more

Cверху будут те кто активно посылали синпакеты на 80 порт какого-то конкретного хоста.

1342 59.10.152.86 x.x.x.x

244 62.175.82.52 x.x.x.x

Если в параметрах tcpdump изменить количество пакетов (опция -c) на более большее, то можно получить и вот так:

4972 59.10.152.86 x.x.x.x

1945 81.174.49.157 x.x.x.x

981 62.175.82.52 x.x.x.x

471 58.147.40.209 x.x.x.x

394 84.84.184.122 x.x.x.x

390 74.72.174.140 x.x.x.x

Время исполнения tcpdump у меня было меньше минуты... в моем случае 20000 пакетов засосало очень быстро. Сортировка и подсчет совпадений производится по паре src ip/dst ip, что поднимает в выводе тех кто слал много син пакетов.

Аналогично можем выяснить адрес цели:

tcpdump -i em0 -c 5000 -n dst port 80|grep "(0)"|grep ": S "|awk -F " " '{print $3,$5}'|awk -F "[.: ]" '{printf "%s.%s.%s.%s\n", $6,$7,$8,$9}'|sort|uniq -c|sort -r |more

естественно выдаваемую информацию надо перевроверять, а то может показаться что абоненты флудят хосты яндекса, гугля и т.д... первый пример выдает более корректно.

pps. за отжыг с sh и awk прошу простить... сплю...

проверенная ддос защита (http://ddos-protection.ru) -> http://ddos-protection.ru (http://ddos-protection.ru), бесплатный тест, цена от размера атаки не зависит.
A4
На сайте с 09.08.2007
Offline
55
#1

Жаль не могу добавить отзыв:(

Господа модераторы, прикрепите пожалуйста топик, он многим пригодится.

Настройка nginx и сопутствующего софта на freebsd/debian. Контакт через PM.
A
На сайте с 10.10.2007
Offline
25
#2

tcpdump |grep "(0)"|grep ": S " экономнее заменить на tcpdump 'tcp[13] & 0xff = 2'

------ это не завуалирование предложение себя в качестве эксперта. это мнение. Поведение в споре должно быть простым: (с) Стили спора (http://www.jvanetsky.ru/data/text/t7/stili_spora/?print=1) М.М.Ж.
K
На сайте с 24.03.2004
Offline
223
#3
amso:
tcpdump |grep "(0)"|grep ": S " экономнее заменить на tcpdump 'tcp[13] & 0xff = 2'

ключевой момент:

с особой извращенностью на обычном sh под фрей
Zaqwr
На сайте с 08.08.2007
Offline
111
#4

ещёб эту инфу добавить на сам сайт http://stopddos.ru/

Администрирование, Linux, Cisco, Juniper
kxk
На сайте с 30.01.2005
Offline
990
kxk
#5

Zaqwr, Присоединяюсь, многим будет полезно, kostich, спасибо :)

Ваш DEVOPS
qwartyr
На сайте с 19.10.2007
Offline
40
#6

может конечно оффтоп(сразу приношу свои извинения 🚬 ) но я предпочитаю использовать mod_evasive для apache. Достаточно эффективная и очень полезная штука.

http://www.opennet.ru/prog/info/1894.shtml.

Я думаю, Вам стоит посмотреть в эту сторону.

профессиональное администрирование серверов (http://www.unixsupport.ru) отзывы (http://www.free-lance.ru/users/qwartyr/opinions/) на free-lance.ru
P
На сайте с 08.03.2007
Offline
250
#7
qwartyr:
может конечно оффтоп(сразу приношу свои извинения 🚬 ) но я предпочитаю использовать mod_evasive для apache.

Это несколько разные методы. tcpdump ловит флудеров в большой сети без привязки к конкретному сайту - то есть на выходе из сети, mod_evasive ловит флудеров на конкретном сайте.

LineHost
На сайте с 20.01.2007
Offline
339
#8

Для Linux:

tcpdump -i eth0 -c 5000 -n dst port 80|grep "(0)"|grep ": S "|awk -F " " '{print $3,$5}'|awk -F "[.: ]" '{printf "%s.%s.%s.%s %s.%s.%s.%s\n", $1,$2,$3,$4,$6,$7,$8,$9}'|sort|uniq -c|sort -n -r |more
SERV.LT - Стабильные услуги хостинга, KVM VPS в Литве, Франции. (https://www.serv.lt/ru/vps/kvm/) Недорогие выделенные серверы (https://www.serv.lt/ru/dedicated-lt/) в Литве.
K
На сайте с 24.03.2004
Offline
223
#9
Pilat:
Это несколько разные методы. tcpdump ловит флудеров в большой сети без привязки к конкретному сайту - то есть на выходе из сети

в маленькой сети...

qwartyr
На сайте с 19.10.2007
Offline
40
#10
Pilat:
Это несколько разные методы. tcpdump ловит флудеров в большой сети без привязки к конкретному сайту - то есть на выходе из сети, mod_evasive ловит флудеров на конкретном сайте.

вы не правы, все зависит от конфигурации, можно включать модуль для отдельных виртаульных хостов, можно и глобально.

12

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