Защищаемся от http-DDoS на пользовательском уровне

12 3
D
На сайте с 27.11.2006
Offline
83
2914

Доброго времени суток.

На сегодняшний момент всем известна проблема http DDoS, когда банально сервер заливают запросами от "зомби" машин и в большинстве случаев сервер умирает даже не от того что залили канал, а просто от того, что сгенерировать одновременно очень много динамического контента он просто не способен. Если же по нагрузке сервер например справился (например на сайте статика), то от огромного числа запросов могут кончиться какие-либо лимиты, например исходящий канал (обычно это даже не входящий).

Если говорить о VPS с административным уровнем, то там можно предпринять общеизвестные рецепты, такие как установка фронт-энда, настройка сетевых лимитов, анализатор логов с последующей блокировкой IP.

А что делать пользователю виртуального хостинга ? Даже при атаке с 10 IP, писать "защищающие" добавки в свой скрипт (не все умеют), Писать в поддержку хостинга, не всегда оперативно и не все будут связываться, при тарифах "1$ за всё". Блокировать в ручную в том же .htaccess - накладно, например при 50 IP.

Основная идея установить перед всеми скриптами обычную капчу, при отсутствии корректных ответов блокировать IP в .htaccess Коробочного решения в интернете не находил.

http://no-ddos.me

Идею можно развивать дальше, вплоть до отдельного процесса перехватывающего все запросы на 80 порт и анализирующий аномалии, с блокировкой IP в системном FireWall.

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

При более-менее серьёзном http-флуде до вашего скрипта даже дело не дойдёт.

Даже при "deny from all" в .htaccess или вызове специально ошибки 500, процессы apache будут постоянно запускаться и обрабатывать ваши настройки. А это даже при "средней" атаке вызовет превышение лимита входящих подключений к нему, либо не хватит ресурсов.

Это всё говорю из опыта.

Himiko добавил 18.03.2011 в 08:53

DPanel:
Блокировать в ручную в том же .htaccess - накладно, например при 50 IP.

50 ip не назовёшь даже средней атакой.

Посмотрел бы я, как ваш скрипт справится с 70-80 тыс. ip-адресов.

Himiko добавил 18.03.2011 в 08:58

Даже специализированные модули защиты от атак для Apache (а они работают уровнем выше .htaccess и тем более вашего скрипта) не дают никакого эффекта, если атака не от "школьника" с десятком Ip-адресов.

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

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
D
На сайте с 27.11.2006
Offline
83
#2
Himiko:
Посмотрел бы я, как ваш скрипт справится с 70-80 тыс. ip-адресов.

Никак. Для этого есть администратор ДЦ и сервера.

А вот Вызвать страничку у хостера - зайдите позже сайт перегружен 50-100 IP вполне способны, а разве не в этом смысл конечной цели http-DDos.

Raistlin
На сайте с 01.02.2010
Offline
247
#3

Himiko, Не совсем так. Вы просто не пробовали (я об апаче). Но в остальном все верно.

Raistlin добавил 18.03.2011 в 09:00

DPanel, Менять хостера. Такие атаки должны пресекаться на уровне сервера.

HostAce - Асы в своем деле (http://hostace.ru)
Himiko
На сайте с 28.08.2008
Offline
560
#4
Raistlin:
Himiko, Не совсем так. Вы просто не пробовали (я об апаче). Но в остальном все верно.

В том и дело, что пробовал.

При определённых обстоятельствах и nginx загибается.

Himiko добавил 18.03.2011 в 09:06

DPanel:
Никак. Для этого есть администратор ДЦ и сервера.

А вот Вызвать страничку у хостера - зайдите позже сайт перегружен 50-100 IP вполне способны, а разве не в этом смысл конечной цели http-DDos.

1. Это всё решается на уровне сервера. 70-80к адресов не смертельно, только разбираться с атакой нужно не php-скриптов или .htaccess.

2. Способны. Но 50-100 ip фильтруются даже на уровне nginx вообще без нагрузки. (фаервол конечно предпочтительнее)

zexis
На сайте с 09.08.2005
Offline
388
#5

Если ддосят и вы хотите защитится силами своего сервера, то надо брать как минимум выделенный мощный сервер или мощный VPS. Использовать NGINX. И банить ботов фаерволом iptables.

Банить в .htacces не эффективно, так как даже атака с 10-30 ботов заблокирует такой сервер. Так как апач, отдавая ошибку 500, тратит много ресурсов.

D
На сайте с 27.11.2006
Offline
83
#6
Himiko:
2. Способны.

Вот про это как раз и тема. То есть пользователь на обычном виртуальном хостинге остался без сайта. Лимиты сервера не привышены, привышены пользовательские, которые можно (нужно) снизить.

Видел много тем "меня атакуют, в логах много левых запросов", ещё всё работает, просто нагрузка/трафик повышены, это можно убрать не имея административного доступа к серверу.

Пользователь к администрированию nginx не допущен.

Raistlin
На сайте с 01.02.2010
Offline
247
#7
Himiko:
В том и дело, что пробовал.

Ну, опять же чтобы не ело память - воркер (я уже поди всех задолбал) и выключаем не нужные модули... Плюс ставим что-то вроде bandwith, evasive и т.п., убиваем кипэлайв... В общем же случае кипэлайв полезен, он ваш друг до начала DDoS. Ну как-то так... Апач почему громоздкий? За счет того, что по дефолту в него подключено столько модулей, что... Один процесс жрет минимум 10 мегабайт оперативки. Это много.

Himiko
На сайте с 28.08.2008
Offline
560
#8
DPanel:
Вот про это как раз и тема. То есть пользователь на обычном виртуальном хостинге остался без сайта. Лимиты сервера не привышены, привышены пользовательские, которые можно (нужно) снизить.

Если Apache будет форкаться постоянно для обработки запросов, то нагрузка будет.

Вы уверены, что ваш скрипт не создаст при атаке достаточной нагрузки, чтобы хостер тоже бы отключил аккаунт?

Himiko добавил 18.03.2011 в 09:51

Raistlin:
Ну, опять же чтобы не ело память - воркер (я уже поди всех задолбал) и выключаем не нужные модули... Плюс ставим что-то вроде bandwith, evasive и т.п., убиваем кипэлайв... В общем же случае кипэлайв полезен, он ваш друг до начала DDoS. Ну как-то так... Апач почему громоздкий? За счет того, что по дефолту в него подключено столько модулей, что... Один процесс жрет минимум 10 мегабайт оперативки. Это много.

Если атака мощная, то Apache просто может не успеть обработать все запросы и упрётся в лимит. Не знаю как на worker (просто не встречался при атаках), но prefork точно.

Raistlin
На сайте с 01.02.2010
Offline
247
#9

Префорк или загнется, или выжрет всю память сервера, однозначно.

Andreyka
На сайте с 19.02.2005
Offline
822
#10

Плохая идея для плохих хостингов

На каждую страницу генерить капчу - оверхед

Вот если бы написать такой модуль для nginx, чтоб работал с рекапчей, например - тогда да, это бы реально помогло

Не стоит плодить сущности без необходимости
12 3

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