Назад | Перейти на главную страницу

Как предотвратить HTTP-DDoS-атаку "GET slash" из внешнего интерфейса

Вчера наши веб-серверы под управлением Apache2.2 получили DDoS-атаки от ботнета, что привело к девять (9) часов простоя. Злоумышленник просто создавал слишком много соединений GET /, в результате чего наши серверы достигали загрузки процессора 100 и, наконец, отклоняли дальнейшие соединения. Перед этим веб-сервером находится машина pfsense с haproxy, которая балансирует нагрузку на соединения с веб-сервером.

Мы попытались заблокировать IPS от pfsense, но соединения все еще продолжались. И только после того, как DDoS остановился, мы поняли, что соединения все еще продолжаются, потому что они уже были установлены. Создавая правила, мы не указали, что они должны применяться и к установленным соединениям. Мы все еще не знаем, сработает ли это, поскольку вложение было завершено.

Мы реализовали modsecure для apache, но мы поняли, что он не работает должным образом из-за X-Forwarded-For. Modsecure правильно идентифицировал IPS, но когда доходил до блокировки, он отклонял IP-адрес балансировщика нагрузки (необходимо установить mod_remoteip). К тому времени, когда мы использовали mod_evase на веб-серверах, атака была завершена.

Я сделал домашнюю работу по мерам противодействия DDoS, но у меня все еще есть вопросы, на которые я не смог ответить сам.

1) Можете ли вы заблокировать запросы GET / от pfsense / frontend на уровне Layer4, чтобы соединения не доходили до backend?

Я видел, что есть возможность ограничить скорость подключений IP, но поможет ли это, когда злоумышленник создает одно соединение (keep-alive), а затем отправляет все запросы GET через это соединение?

2) Что лучше блокировать такие атаки на веб-интерфейсе (скажем, firewall - loadbalancer) или на сервере?

Вы не сможете увидеть "GET /" со слоя 4. Это доступно только на уровне 7.

Лучше всего блокировать атаки как можно дальше от серверной части. Чем раньше вы сможете смягчить его, тем лучше. Вы хотите, чтобы он потреблял как можно меньше ресурсов. Если вы можете заблокировать его на балансировщике нагрузки, отлично! В брандмауэре даже лучше! Лучше всего не допускать его попадания в вашу сеть.

Ботнеты могут очень легко перегрузить ваши интернет-ссылки. Если кто-то действительно намерен вас сбить, вам понадобится внешнее смягчение.