LINUX.ORG.RU

DDoS атака SYN флудом со спуффингом


3

5

Добрый день, сижу в всем известном OVH, арендую там сервер а Anti-DDos Pro, которым обещают 100% защищать от атак. Мало того, что фильтра их не видят обычный лоик, для чего пришлось писать скрипты и грамотно настроить NGINX, чтобы не ложили HTTP флудом, так еще и пролетает син флуд со спуфом, как нож по маслу.

Никаких атак ОВХ не замечает, все пропускает под 0. Сервер грузится до 100%, полностью все начинает висеть. Перепробовал все мануалы, что есть в интернете.. Настраивал син куки, iptables, ничего не помогает.

В один момент даже закрыл абсолютно все порты и подключения из вне к серверу, все равно ддос продолжался. Команда: netstat -apn | grep SYN | wc -l Выдавала стабильно число от 150 до 250. Так это еще человек досил только с 1го компьютера. По идее, если он пробивал закрытые порты, значит канал у него серьезнее? Хотя у меня машина с каналом 1гбит.

Что в таком случае делать? ОВХ поддержка молчит. Некоторые люди из-за этого и ушли с ОВХ. Но на сколько я знаю, нет такой проблемы, которую нельзя было бы решить?

Так это еще человек досил только с 1го компьютера

Так DDoS или DoS?
Адреса подделыватся разные или один всегда?

zolden ★★★★★
()

OVH
которым обещают 100% защищать от атак

Пчелы против меда? Процентов 30-40 ботов для всяких там Джумл, Друпалов, Heartbleed-ов лезет с серверов OVH.

Mr_Alone ★★★★★
()

1) tcpdump
2) забирай себе на комп
3) посмотри в wireshark
4) поставь drop на input в iptables для айпишников, с которых атака или для всех айпишников по string или hexstring.
5) выпей чая

andrew667 ★★★★★
()
Ответ на: комментарий от Machine88

Не, я просто пытаюсь пока понять картину в деталях.
Что такое «пробивать закрытый порт»?
250 на вид не очень большое значение, откуда уверенность, что дело в этом?

zolden ★★★★★
()
Ответ на: комментарий от andrew667

Как именно сделать правильно tcpdump, и забрать к себе на комп?

Я делал так: tcpdump -i eth0 -w ddos.log

И потом вот такое получал на выходе http://i.shotnes.com/a/29/1v4a2yo4.dn0_53b06cd91288b.png

wireshark - впервые слышу, сейчас буду гуглить.

можно пожалуйста команду по поводу tcpdump'a либо ту, которая может палить ипы атакующих?

Machine88
() автор топика
Ответ на: комментарий от Machine88

Как именно сделать правильно tcpdump?

в разных дистрибутивах у пакеты собраны с разными флагами по умолчанию. Для centos 6 вот кусочек

/usr/sbin/tcpdump -i eth0 -U -s 0 -C 5 -Z root -w /root/dump.pcap
Пишется кусочками по 5 мегабайт весь трафик. Для debian немного по-другому.

и забрать к себе на комп

ftp, ssh (в mc) или для винды winscp, можно по netcat, можно по nfs, samba и т.д.

можно пожалуйста команду по поводу tcpdump'a либо ту, которая может палить ипы атакующих?

Осваивай сниффер. В wireshark тебе смотреть будет удобнее (там есть сортировка, статистика). Айпишники увидишь - все дампы трафика надо сниффером открывать, а не блокнотом.

andrew667 ★★★★★
()
Ответ на: комментарий от andrew667

Сделал дамп pcap во время атаки только что. Сейчас буду пытаться посмотреть его. Через tcpdump -r не понятно ничего просто(

Machine88
() автор топика
Ответ на: комментарий от andrew667

Просмотрел частично. В итоге очень - очень много айпи адресов. Тобишь это не DoS, а DDoS. И 1 ип заблокировать не получится.

http://i.shotnes.com/a/29/cmzxjydp.j4c_53b07a2435bc4.png http://i.shotnes.com/a/29/ma0xwqaz.mmw_53b07a36d3c1e.png

Что посоветуете?

Machine88
() автор топика
Ответ на: комментарий от Machine88

Попробуй собрать статистику по максимуму и попробовать понять совсем ли адреса случайные или есть закономерности по геоположению или подсетям - если они явно отличаются от положения/сетей нормальных клиентов то можно блочить их кучей.
До сих пор непонятно что за атака, 250 SYN даже калькулятор потянет. Объясни внятно что сейчас становится bottleneck'ом - канал, процессор, количество сокетов, память?

zolden ★★★★★
()
Ответ на: комментарий от zolden

s 0 (кстати можно писать их слитно) тут скорее вреден, для анализа хватит заголовков

Я советовал бан по содержимому (match string/hexstring), поэтому полный трафик необходим, а не вреден.

andrew667 ★★★★★
()
Ответ на: комментарий от Machine88

Я делал так: tcpdump -i eth0 -w ddos.log

tcpdump, по-умолчанию, может обрезать пакеты. Там ключик какой-то есть, который меняет размер.

wireshark - впервые слышу, сейчас буду гуглить.

В качестве коллектора особого смысла нет (там консольный аналог tcpdump называется tshark). А вот в качесве гуя для просмотра - весьма удобно. Но он понимает прекрасно и файлики от tcpdump.

AS ★★★★★
()
Ответ на: комментарий от andrew667

Так, а как это реализовать можно? Чтобы автоматически банило?

У меня играют очень много людей на этом же порту, на который идет атака. От каждого по 1-2 коннекта. Так же и во время ддоса, каждый новый ип делает 1-2 коннекта.

По GEOip банить смысла нет, т.к. этот человек вставляет в соурслист IP'ы россии и украины. Эти страны мне банить нельзя, т.к. тогда игроки не смогут войти на сервер.

Выше человек спрашивал, что именно происходит.. Отвечаю, ядра грузятся на 99%, сервер просто начинает висеть, т.к. син убивает его. Правила iptables все пробовал, не помогают. Скорее из-за них еще больше начинает лагать.

Сила атаки всего 100мбит. А канал у меня гигабитный. Даже не знаю как сервер так быстро падает, может с синкукисами что-то не так? Хотя их я тоже настраивал. Но на хабре и многих форумах говорят, что от syn спуфа tcp_syncookies не помогут.

Machine88
() автор топика
Ответ на: комментарий от zolden

Все ядра загружены на 100%.

А по поводу ипов - абсолютно рандомные, можно даже просто ввести в соурслист.

Machine88
() автор топика
Ответ на: комментарий от zolden

Образец дампа(во время атаки): http://rghost.ru/private/56653828/667c58c3d64cc479ed84c93a6fc91a8f

Правила iptables: http://pastebin.com/TE2VbQ9M synctl.conf: http://pastebin.com/kCv3paTh

Обычное время, игра игроков: http://i.shotnes.com/a/30/xftocybu.zyd_53b084e64441f.png Время атаки: http://i.shotnes.com/a/30/343bx2j2.rua_53b084c6e5502.png

Вот вроде бы все.

Machine88
() автор топика
Ответ на: комментарий от Machine88

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

zolden ★★★★★
()
Ответ на: комментарий от zolden

А есть у вас для связи skype или icq?

Я готов даже в случае какой-то, возможно и успешной помощи подкинуть 1000-2000 рублей на пиво. Ибо здесь будем разбираться еще около недели :(

Machine88
() автор топика

один наш небольшой сайт интернет магазин ддосили конкуренты, хостимся на digitalocean, за обычную сумму, т.е. ничего дополнительно за защиту от ддос или трафик не платим, был ддос 1ггб в пике синфлуда (начиналось со школьного ддоса, который после настройки iptables и всяких простых эвристик за пол часа обрезался с гигабита до пары мегабит, потом после всех фильтров стал 1ггб синфлуда – вот тут несладко было), мало того что нас не отключили, так и спокойно дали пережить жизнь в ддосе до того как спрятались под qrator. Т.е. у нас трафик часа полтора был 1ггб, на впске за 20 долларов, с нас ни копейки не взяли, и претензий не предъявили и при этом сайт открывался без проблем (с очень маленькой, еле заметной задержкой, лол!). Так что мой совет – прямые руки или друзья с прямыми руками, от обычного ддоса защититься не так сложно

wwwsevolod
()
Ответ на: комментарий от Machine88

Я не специалист по борьбе со DDoS, у меня более общая специализация, и хотя анализ трафика по дампам в неё входит, но чудес не надо ожидать.

zolden ★★★★★
()
Ответ на: комментарий от wwwsevolod

Прочтите пост выше.. По поводу ICQ или Skype.

Machine88
() автор топика
Ответ на: комментарий от Machine88

В дампе который ты выложил никакого SYN-флуда нет. Правило, дропающее INVALID пакеты у тебя уже есть, но чтобы оно работало по идущему на твой сервер ACK-флуду нужно выставить:

sysctl net.ipv4.netfilter.ip_conntrack_tcp_loose=0

или

sysctl net.netfilter.nf_conntrack_tcp_loose=0
edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

Выставил, сегодня человек будет бить еще... Проверю, спасибо. А есть еще какие-нибудь советы, что можно сделать? И желательно объяснить, как это сделать ))

Machine88
() автор топика
Ответ на: комментарий от Machine88

Образец дампа(во время атаки): http://rghost.ru/private/56653828/667c58c3d64cc479ed84c93a6fc91a8f

Это не DDoS атака SYN флудом. Посмотри на графики, которые я построил в wireshark. Из аномалий у тебя четко виден TCP DUP ACK/TCP Retransmission. Графики использования канала считай симметричны - по 100 мегабит на прием и на отдачу. Ты дамп полный выливал, или пакеты подрезаны по размеру? Надо определить общий признак для левый пакетов с src_ip=any и dst_ip=5.39.67.70, и по нему написать правила.
P.S. Возможно тебя даже не атакуют, а косячно сделана или настроена сетка.

andrew667 ★★★★★
()
Последнее исправление: andrew667 (всего исправлений: 1)
Ответ на: комментарий от andrew667

Дамп я дал вам просто во время атаки. Он 5 мб весит, вы же сами дали мне команду, которая по 5мб их режет.

Нет, атакуют - это 100%, т.к. в определенное время пишет человек и говорит, я начинаю ддосить. Потом отпускает. У него заказывают атаку на меня за 5к рублей в час.

Правила написать - звучит круто, но вряд ли я сам смогу это сделать.. Сейчас буду читать про ACK TCP Retransmission.. Может что-то накопаю..

Machine88
() автор топика
Ответ на: комментарий от Machine88

Дамп я дал вам просто во время атаки. Он 5 мб весит, вы же сами дали мне команду, которая по 5мб их режет.

У тебя он валит на порт 7777. Достаточно ограничить число пакетов в единицу времени для айпишника. Какой дистрибутив?

andrew667 ★★★★★
()
Ответ на: комментарий от Machine88

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

Главное, чтобы он сюда не пришел.

qzxcvbnm
()
Ответ на: комментарий от Machine88

В принципе хватит на INPUT поставить перед всеми правилами

$IPT -A INPUT -p tcp -m tcp --dport 7777 -m string --hex-string "|1e611ec1f602ceea66ea8010|" --algo kmp --to 65535 -j DROP
Можно сделать динамический бан, но за коврижки.

andrew667 ★★★★★
()
Последнее исправление: andrew667 (всего исправлений: 2)
Ответ на: комментарий от andrew667

1. Мне кто-то давно из линуксоидов рассказывал, что если так правилом дропнуть 2000 айпишников, то они просто засоряются, т.к. первые 2000 строк будут идти дропы. И будет рбаотать система медленее. Правда ли это? Или правило не отобразится на скорости работы сервера?

2. Как вы вычислили хекс-стринг, он может поменяться? Как мне самостоятельно его вычислить, если он изменится?

Поподробнее пожалуйста, извините, что действую на нервы, в линуксе совсем недавно(около полугода).

Machine88
() автор топика
Ответ на: комментарий от andrew667

Из-за -A INPUT правило добавилось в конец iptables. Может быть -I юзнуть, и добавить его в самое начало? Чтобы оно сразу проходилось, без цепочки?

А то сейчас вот так: http://i.shotnes.com/a/30/ed4o5sjx.kqb_53b1c70038e4a.png

Machine88
() автор топика
Ответ на: комментарий от Machine88

Мне кто-то давно из линуксоидов рассказывал, что если так правилом дропнуть 2000 айпишников, то они просто засоряются

Там речь была про другое, нужное для динамического списка (100 айпишников).

И будет рбаотать система медленее. Правда ли это?

Будет тратиться ресурс на обработку пакетов. Но когда у тебя правил мало, а не тысячи, то система работает по большому счету без потери производительности. А сами службы будут работать лучше, так как им не надо обрабатывать фейковый трафик, что более накладно, чем уничтожить пакет. Так что дропай и не парься.

2. Как вы вычислили хекс-стринг, он может поменяться?Как мне самостоятельно его вычислить, если он изменится?

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

andrew667 ★★★★★
()
Ответ на: комментарий от Machine88

Из-за -A INPUT правило добавилось в конец iptables

Правила всегда добавляются в конец. Пиши в скрипте, который выложил в http://pastebin.com/TE2VbQ9M перед «# l2top» и запусти его. Отвалишься от сервера и на него надо будет снова зайти.

andrew667 ★★★★★
()
Ответ на: комментарий от andrew667

andrew, спасибо вам большое. сейчас основной вывод сделал для себя - это изучать сниффер. будем смотреть, что будет в скором времени. скоро снова обещает бить.

скажите еще пожалуйста, а можно ваш контакт Skype или ICQ?

Machine88
() автор топика
Ответ на: комментарий от Machine88

Советую тебе сначала ограничиться настройкой «loose» режима — этого будет достаточно для того чтобы дропать тот ACK-флуд, которым тебя поливают.

Нагружать сервер, который уже и так занят обслуживанием игроков, поиском последовательности байт в каждом приходящем пакете во время DDoS'а это мягко говоря глупо.

edigaryev ★★★★★
()
Ответ на: комментарий от andrew667

В принципе хватит на INPUT поставить перед всеми правилами

$ tshark -r dump_ATAKA_NOVAYA.pcap66 tcp contains "1e:61:1e:c1:f6:02:ce:ea:66:ea:80:10" | wc -l
10

Это успех.

edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

В смысле? Сервер падает быстро, или что?

Machine88
() автор топика
Ответ на: комментарий от Machine88

поправь

$IPT -A INPUT -p tcp -m tcp --dport 7777 -m string --hex-string "|020405a00103030801010402|" --algo kmp --to 65535 -j DROP

andrew667 ★★★★★
()
Ответ на: комментарий от andrew667

Только что человек снова бил, ну что скажу. Траф был вот таким:

http://i.shotnes.com/a/01/0i1f2cmw.izq_53b1d0502dbb6.png тобишь только игроки.

Но потом он увидел, что траф ко мне не доходит. И спустя 30 сек, что-то изменил.

Сервер стал нагружаться на 70-80%, но не так как раньше на 100.

Вот новый дамп новой атаки. http://rghost.ru/private/56665456/450daa8f971d7a078d3a9cc1117097ca

Все что я изменил за это время - это вот: net.ipv4.netfilter.ip_conntrack_tcp_loose=0 net.netfilter.nf_conntrack_tcp_loose=0

И добавил правило, выглядят вот так: http://i.shotnes.com/a/01/n0pf2tja.ptk_53b1d0c3b9715.png

Machine88
() автор топика
Ответ на: комментарий от edigaryev

Это я сделал, вначале от этого полегчало, но говорю же, он потом что-то изменил, и стало бомбить сильнее.

Скоро будет новая атака, сделаю новый tcpdump

Machine88
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.