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

Linux - Средства противодействия стрессу

У меня есть VPS под управлением Ngix и в настоящее время размещено несколько веб-сайтов. Как вы знаете, у VPS мало ресурсов, и меры безопасности должны выполняться клиентом.

Я только что заметил, что существует множество стрессовых инструментов, которые могут вызвать сбой веб-сервера или сервер полностью использует ресурсы, что может привести к зависанию. У меня есть LoadUI на моем компьютере с Windows. Есть даже похожие онлайн-сервисы, такие как LoadImpact.com.

Ему даже не нужно запускать 10 или тысячи инструментов одновременно. Даже ребенок может ввести имя домена в этих инструментах и ​​запустить тест с множеством одновременных подключений и полностью использовать пропускную способность сервера, аппаратные ресурсы и т. Д. ..

Я хочу знать, как мне предотвратить эти наводнения? Это что-то должно обрабатываться Iptables? Или Nginx?

То, что вы уже используете nginx, является хорошим началом - серверы на основе событий намного более устойчивы к атакам типа sloloris.

Тем не менее, рекомендуется предотвращать атаки DOS как можно дальше от вашего приложения. Следующий шаг - iptables.

Вам нужно подумать о том, как вы классифицируете атаки и отличите их от реального трафика - скорость, с которой создаются новые соединения, является очень хорошим показателем - и вы можете настроить iptables для ограничения новых соединений для каждого IP-адреса:

iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent \
         --update --seconds 30 --hitcount 80  -j DROP

(отбрасывает новые запросы на подключение, когда частота превышает 80 каждые 30 секунд)

Вы можете ограничить количество одновременных подключений на IP-адрес:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit \
      --connlimit-above 20 -j REJECT --reject-with tcp-reset

Также неплохо ограничить пропускную способность, в зависимости от вашего профиля трафика, например, до 10% от доступной пропускной способности - это сделано с использованием tc а не iptables.

Затем для проходящих соединений в HTTP-запросе могут быть характеристики, которые будут определять атаку (реферер, запрашиваемый URL-адрес, пользовательский агент, язык принятия ...), неважно, какие конкретные значения вы выберете. для них прямо сейчас - вам просто нужно убедиться, что у вас есть оборудование, где вы можете быстро изменить параметры при первых признаках атаки. Хотя вы можете обработать запрос на веб-сервере, лучшим решением будет заблокировать доступ с удаленного IP-адреса с помощью iptables - fail2ban - это инструмент для подключения данных журнала к конфигурации iptables.

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

2 вещи, которые я бы порекомендовал изучить, это ограничение скорости iptables и fail2ban. Fail2ban предоставит вам приличную автоматическую блокировку IP-адресов, которые слишком часто попадают на ваш сервер, и позволит вам настроить, как долго вы хотите, чтобы они были заблокированы. Ограничение скорости Iptables позволит вам ограничивать все типы трафика, поступающего на ваш сервер. Я нашел приличную статью об этом Вот. Однако, если вы выполните базовый поиск в Google, вы увидите намного больше.

Изменить: хотя у меня нет личного опыта работы с nginx, я вижу, что у него есть HttpLimitReqModule что вы тоже должны изучить.