DDOS OpenSource Testing

Добрый день, Друзья, Коллеги, Товарищи ( Конкуренты =) ).

Мы периодически выкладываем свои труды в OpenSource — sprut.io, firststat.ru и хотим продолжить эту славную традицию.

Месяца 3 назад озадачились вопросом DDOS-атак на 4 уровне модели ISO. В данном случае речь идет о SYN/ACK флуде. Мы посмотрели на представленные решения и, в основном, есть две технологии:

SYNCOOKIE:
Суть заключается в том, что вместо записи информации о соединении мы кодируем ее в ACK-пакете в seq + timestamp последовательности с помощью SHA1 и открываем соединение ACK-пакетом при условии валидного ответа. Этот механизм есть в ядре — syncookie добавили его туда в 1998 году и не так давно его вынесли в iptables. На стандартной 1G сетевой карте без тюнинга сетевого стека и оптимизаций сервер начнет умирать с 500000 пакетов в секунду.

SYNPROXY:
Это решение уже на сторонней железке и обычно встраивается в разрыв сети. Файрвол держит информацию о статусе каждого соединения, подменяя seq последовательность в пакетах. Это решение используется в Juniper, F5, Arbor и прочих железках. При включении/выключении рвутся установленные сессии. Из преимуществ, на одном ядре можно выжать очень много пакетов в секунду, так как можно не использовать SHA1. 14М на ядро — это не сложно.

Фактически нам нужно было решение, которое очищает трафик на 4-м уровне, прозрачно подключается, может держать до 40 гигабит флуда и, в принципе, больше ничего не умеет =). При этом у нас есть довольно большой парк серверов, подключенных 1G-линком (и не с самой современной картой), и, откровенно говоря, в 95% случаев это более чем достаточно. То есть городить решение на каждом сервере было не вариант.

Запросив цены в Juniper, F5, Arbor и прочих вендоров, немного выпал в осадок — для наших нужд минимум 40М пакетов просили 120 000$, при этом подчеркнули, что данное железо надо обязательно резервировать.

Предлагал коллегам из других компаний вместе разработать подобное решение. Где-то были зачатки, но начальство было против такой разработки. Кто-то сразу посылал.

На текущий момент мы разработали систему, которая на процессоре e3-1270v3 держит более 10М пакетов SYN/ACK флуда на сетевых картах Intel 520/710 + UDP, ICMP флуд пока линки не забьются. На адекватных процессорах все упирается в линки.

Подключается прозрачно перед сервером и по всем нашим тестам отлично работает. Плюс системы в том, что она не разрывает существующие соединения и почти не требует модификации конечной машины.

И да, я хочу выложить все это счастье OpenSource после того, как все доделаем, протестируем и приведем в божеский вид (как минимум, чтобы править конфиги, а не константы в коде =) ). Я убежден — данный продукт повысит качество предоставляемых услуг, и надеюсь не только нам.

Так как и те, кто организует DDOS (будь то хоть школьник или владелец ботнета), пытаются получить прибыль с не совсем адекватной деятельности, так и те, кто защищает от DDOS, в большинстве своем получают прибыль на страхе перед первыми.

КАК ВЫ МОЖЕТЕ НАМ ПОМОЧЬ?
Нам надо нормально протестировать продукт. У нас пока нет ни GUI, ни системы автоматического развертывания, но есть рабочий прототип и большое желание довести его до ума. Если у Вас есть проекты, которые периодически досят, и небольшой простой им не критичен (простой будет меньше, чем если хостинг его отключит) напишите мне на почту alexey@beget.ru и я расскажу, как его направить на наш прототип. Вы будете бесплатно защищаться от DDOS, а мы в свою очередь будем улучшать продукт, который принесет пользу всем. Обращу внимание — проект продолжит размещаться на старом месте.