Если защититься от ДДОС почти не возможно, кроме как банить конкретные IP адреса на некоторое время, то подскажите, плз, каким образом отследить IP ддосера, если есть подозрение на ддос? Какие конкретные средства для этого можно использовать? Скрипты? Анализаторы логов?
Потому что в интернете в основном везде одна вода о том, что можно написать свой скрипт, который будет анализировать логи или смотреть текущую сетевую активноесть и бла-бла-бла прочее. Хочу конкретики!
Лучшая защита от DDOS - это распределенная сеть, но такое не всегда по карману или востребовано.
Лично пришлось столкнуться.
Расскажу как решал.
Сайт лежит на VPS у хостера. Обычный апач.
Было решено банить по IP в iptables
Отловили все запросы на открытие соединения к апачу
DDOS боты делают запрос и обрывают соединие, потому много соединений со статусом SYN_RECV, они соответственно забивают очередь и к сайту не пробиться.
netstat -ntu | grep :80 | grep SYN_RECV | grep -v [свой ип] | awk -F\ '{print $5;}' | awk -F: '{print $1;}' | uniq | sort
Хостер пошел навстречу дал 300 правил для iptables при обычных 30, хоть на этом спасибо.
Ни о каких модификациях TCP стека VPS сервера предложения не принимались - аргументсреда виртиуализации не позволяет.
Большой минус - в iptables не оказалось возможности подключить модуль iplimit - чтобы ограничить количество подключений с одного IP
--
Тогда бы правилом
-A INPUT -p tcp --dport 80 -m iplimit --iplimit-above 10 - DROP
Можно было бы снять лишнюю нагрузку
--
Но нет, пришлось думать дальше.
В срочном порядке были установлены
модули к апачу
mod_bw
mod_bwshare
mod_dosevasive
Результаты
mod_bw - регулирует нагрузку на целиковый сайт, а хочется только плохишей давить - не подошел
mod_bwshare - тоже самое, но можно делить клиентов на отдельные подсети/IP - запарились делить, атака была больше чем с 300 адресов - просто понизили отдачу от сервера
mod_dosevasive - умный, сам смотрит кто часто лезет, того обрубает - оставили
Стали думать дальше.
Додумались до nginx
Поставили. Настроили. Стали кумекать как ускорить все.
Первым делом, прокинули напрямую запросы к картинкам css, flash и пр.
Потом посетила нас мудрая мысль -
-- лог
xxx.xx.xx.xx - - [16/Jul/2008:20:48:30 +0400] "GET / HTTP/1.0"
--
как выглядит атака DDOS-бота
Он запрашивает главную страницу и отключается.
Решили ускорить отдачу входной страницы
Как?
location = / {
root /usr/local/nginx/html;
rewrite ^/$ http : // site.ws / index.html permanent;
}
Бот получает редирект, но поскольку его это не интересует, никуда не идет.
nginx получает обрыв соединения и закрывает канал,
apache отдыхает.
Можно еще попробовать отдавать статическую "главную" страницу, или легкую страницу с редиректом на входную сайта.
Так сайт может в разы больше обслужить DDOS ботов.
Сказать, что сайт не ляжет при следующей волне не могу,
сейчас ботов мало ломится, с ними справляется на ура сервер, как будет массированая атака, посмотрю, напишу как было.