Предлагаю решение, защищающее от DDOS.

zexis
На сайте с 09.08.2005
Offline
388
6197

Месяц назад столкнулся с проблемой DDOS сервера, который я поддерживаю.

За месяц пришлось освоить очень много нового.

Написал программу на языке С для блокировки DDOS ботов.

Если кто то столкнулся с проблемой DDOS, то могу установить вам на сервер свою программу.

Мой сервер от DDOS моя программа защищает.

Я заинтересован в тестировании программы на разных типах DDOS атак, поэтому установлю программу бесплатно и буду вести мониторинг ее работы.

Краткое описание принципа работы программы.

Программа написана на языке С и компилируется под системой Linux.

У меня программа запускается раз в минуту (через cron) для поиска DDOS ботов.

10 000 записей из логфайла программа проверяет примерно за секунду на сервере с процессором Pentium 3 Гц.

Программа имеет 2 режима работы.

1 режим.

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

У меня стоит лимит 350 одновременных коннектов на один IP адрес.

ДДос бот открывал около 500 - 1000 конектов на один IP

Список открытых сокетов берется из команды netstat –n

2 режим.

Анализируется последние записи лог файла вебсервера.

В лог файле находятся ip адреса или подсети,

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

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

3) С которых не было пауз в запросах определенной длины, за заданный промежуток времени. Так ловятся боты, которые не делают пауз в своей работе.

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

IP адреса или сети, которые алгоритмом программы были идентифицированы как DDOS боты, заносятся в фаервол iptables

Связаться со мной можно по IСQ 16дeвять9-3-8шecть79 или в личных сообщениях на форуме.

Рад буду услышать критику, вопросы и рекомендации по используемому мной способу защиты.

M
На сайте с 16.09.2009
Offline
278
#1

zexis, не обижайтесь, но вы сделали велосипед. с квадратными колесами :)

советую вам обратить внимание на nginx, модули:

http://sysoev.ru/nginx/docs/http/ngx_http_limit_zone_module.html

http://sysoev.ru/nginx/docs/http/ngx_http_limit_req_module.html

+ отдельно настроенные под разные location (статика, динамика, тяжелая динамика)

+ whitelist для некоторых IP/подсетей (зависит от специфики сайта, скажем, WAP-сайт).

заинтересует - обращайтесь.

Абонементное сопровождение серверов (Debian) Отправить личное сообщение (), написать письмо ().
zexis
На сайте с 09.08.2005
Offline
388
#2

myhand, cпасибо за комментарий.

Да согласен.

Это мое упущение, что я до сих пор не освоил nginx.

Уверен, в нем много возможностей для борьбы с ддос

Надо будет его обязательно поставить и изучить.

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

N
На сайте с 06.05.2007
Offline
419
#3

myhand, тем не менее, нет ничего гибче своей программы, которую можно быстро дописать при новом типе атаки.

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

Кнопка вызова админа ()
O
На сайте с 13.08.2008
Offline
26
#4

Круто, чо.

Правда, такая же программа на шелле занимает три строки.

Outsourcenow.ru: оттюним ваш веб-сервер. 100 млн. запросов в сутки - наш размерчик!
Andreyka
На сайте с 19.02.2005
Offline
822
#5

Все это решается на уровня файрвола без всякого юзерленда.

Не стоит плодить сущности без необходимости
M
На сайте с 16.09.2009
Offline
278
#6

netwind, nginx и есть "своя программа". для адаптации под атаки нужны определенные усилия.

zexis, если есть время и "дурацкая черта" - аналог nginx-модуля limit_req

для апача был бы интересен, думаю, многим ;)

а если нужна конструктивная критика - покажите код. как правильно заметил

Outsourcenow, подобный алгоритм на shell пишется "наколенке" в три строчки.

myhand добавил 02.12.2009 в 19:43

Andreyka:
Все это решается на уровня файрвола без всякого юзерленда.

с вами уже это обсуждали не так давно:

/ru/forum/410019

присутствующие здесь Outsourcenow и netwind

кстати тоже окрестили эту идею чушью :)

N
На сайте с 06.05.2007
Offline
419
#7

myhand, некоторым примитивные условия модуля nginx кажутся недостаточно гибкими .

Что ж так мало то охотников править nginx?

Потому, что он "чужой". Да еще и на C. Да еще и в непопулярной модели конечного автомата написан.

Himiko
На сайте с 28.08.2008
Offline
560
#8

Я такой скрипт тоже делал, только у меня в виде "демона", поэтому написан не на шеле. У меня программа в реальном времени отлавливает подключения. Работает и на линуксе и на FreeBSD. Просто достаточно перекомпилировать, а программа при запуске определит систему и будет пользоваться либо iptables, либо ipfw.

Но эти алгоритмы отлова не достаточно эффективны, хотелось бы реализовать программно основные алгоритмы "железных" фаерволов. Т.е. точнее определять паразитный трафик. Возможно использовать программу в паре с nginx, чтобы принимались меры по защите атакуемого сайта автоматически.

Мыслей много, но что-то я перестал этим заниматься уже давно.

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
M
На сайте с 16.09.2009
Offline
278
#9
netwind:
myhand, некоторым примитивные условия модуля nginx кажутся недостаточно гибкими .

там _много_ модулей. проверка cookies, рефереров, там кеширование и еще куча разных плюшек.

нет, это не "готовый" рецепт. но доведение его до рабочего состояния для каждого конкретного

сайта - задача на порядок менее безнадежная, чем написание "своего" решения.

netwind:

Что ж так мало то охотников править nginx?
Потому, что он "чужой". Да еще и на C. Да еще и в непопулярной модели конечного автомата написан.

апи нестабильный. может в этом дело. а охотники есть, на недавнем хайлоаде

был доклад достаточно большой на эту тему.

N
На сайте с 06.05.2007
Offline
419
#10
myhand:
но доведение его до рабочего состояния для каждого конкретного
сайта - задача на порядок менее безнадежная, чем написание "своего" решения.

Если кто-то уже постарался до вас и снабдил nginx функционалом.

А в общем случае для программиста игра по чужим правилам всегда сложнее. Вы просто не программист, наверное.

Himiko, железных фаерволов не бывает. Там внутри процессор(-ы) pc-класса. "Встраиваемые" не справляются.

Но бывают еще карты для быстрого анализа данных на ПЛИС. Возможно есть и отбрасыватели трафика на тех же ПЛИС, но процессор то тот же и алгоритмы вполне воспроизводимые должны быть.

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