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 ★★★★★ ()
Ответ на: комментарий от zolden

А как можно узнать ип, при син атаке, когда люди в это время играют на сервере? Чего-то не знаю?

Machine88 ()

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

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

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

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

Если под «пробиванием порта» имелся в виду UDP, то, видимо, есть смысл закрыть его на файрволе

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

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

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

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

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

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

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

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

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

Автоматический бан по содержимому на время для айпишника.

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 ()
Ответ на: комментарий от Machine88

Выложи образец дампа на посмотреть И на всякий случай покажи что накрутил в iptables и sysctl

zolden ★★★★★ ()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от 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 ★★★★★ ()
Ответ на: комментарий от Machine88

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

sysctl net.ipv4.netfilter.ip_conntrack_tcp_loose=0

или

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

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

Machine88 ()

он свою жежешку кстати ещё ведёт?

darkenshvein ★★★★★ ()
Ответ на: комментарий от 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 ()
Ответ на: комментарий от Machine88

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

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

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

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

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

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

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

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

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

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

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

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

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

Если написать -I INPUT правило добавится не в конец, а в начало.

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

Можно поподробнее про loose? Как это можно сделать? :) Говорю же, новичок в линуксе.

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

поправь

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

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

Это успех.

Это косячок. Поправил:

 tshark -r dump_ATAKA_NOVAYA.pcap66 tcp contains "02:04:05:a0:01:03:03:08:01:01:04:02" | wc -l
32774

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 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.