Защита от ddos атак (2 часть)

Делаем разрешенный список IP-адресов

Доступ к конкретному сайту или приложению сайта открыт только для определенного, заранее известного, количества IP-адресов. Можно прописать это количество (диапазон), с помощью таких директив как «allow» и(или) «deny».


Например, можно сделать предоставление доступа только адресатам в локальной сети:


Соответственно, понятно, что все IP-адреса, не соответствующие условию определенного «диапазонна», будут все заблокированы для доступа к сайту.

Предотвращения скачков трафика методом кэширования

Довольно действенный способ защиты от ddos атак. Можно произвести настройку «NGINX» и (или) «NGINXPlus» так, чтобы они производили поглощение неожиданных скачков трафика в то время когда проходит атака на сайт, через кэширование и прописывание их параметров, системы будут делать игнорирование обратных запросов. Данную манипуляцию можно произвести несколькими вариантами:

Параметр отвечающий за обновление в «proxy_cache_use_stale» делает сообщение «NGINX» о том, что когда необходимо провести обновление старых объектов в «КЭШе», то нужно отправлять только 1 запрос и оставлять открытым доступ к этим объектам для юзеров, до тех пор, пока обновление не получено с внутренних серверов.

«Key defined by the proxy_cache_key» как правило состоит из различных вариаций (default key, «$scheme$proxy_host$request_uri» и имеет 3 вариации). Коль значения включают «$query_string», то хакерская атака, которая посылает изредка строки запросов и может привести к переизбытку кэширования. И опять же, не рекомендуется включение этих вариантов в ключи, если нет острой прямой потребности.

Защита от ddos атак путем блокировки поисковых запросов

Как настроить NGINX или же NGINXPlus для блокировки определенных запросов:

Запросы к конкретному URL, которое вероятнее под угрозой.
Также, запросы, где сами заголовки «User-Agent» имеют величину, не подходящую к обычному пользовательскому трафику.
Те запросы, у которых все заголовки «Refere» которые расценены Вами, как связанные с хакерской атакой.
И просто те запросы, в которых все оставшиеся заголовки окажутся под подозрением.

К примеру, Вы предположили, что хакерская атака взяла прицел на URL «/foo.php», можно произвести блокировку всех запросов к своей странице:

Прояснив, что некоторые запросы ddos-атаки интернет пиратов имеют значения «foo» или же «bar» в заголовках «User Agent», смело блокируйте их тоже:


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

Производим ограничение соединений на внутренних серверах

«NGINX» и «NGINXPlus» могут параллельно управляться с намного большим количеством соединений, чем сами внутренние серверы. При помощи «NGINXPlus» можно урезать число соединений к каждому внутреннему серверу.
К примеру, если Вы пожелаете сделать ограничение числа подключений к 2 серверам (внутренним ) группы, которая обслуживает Ваш сайт, цифрой 200(двести):

Сам параметр «max_conns» определяет для сервера (каждого) максимальное число подключений, которые открыты «NGINXPlus». Директива «queue» производит ограничение числа запросов которые находятся в общей очереди, если все остальные серверы данной группы превысили свой максимальный лимит. В той же строке прописано секунды по нахождению запросов в очереди – 30сек.

«Range-Based»-атака

Есть способы хакерских атак, при которых заголовок функции «Range» отправляется с огромным значением, это может переполнить буфер. Для того чтобы узнать, как с помощью «NGINX» или «NGINXPlus» справляться с таким типом атак советуем подождать новые статьи на эту тему.
DDoS-атаки как правило ведут к очень критическому увеличению уровня загрузки. Почитать об этом, можно будет в будущих публикациях.

Как обнаружить ddos атаку

Ранее мы проводили обсуждение, как можно применить программы «NGINX» и «NGINXPlus», чтобы смягчить последствия от ddos атак. А возможно ли с помощью данных программ обнаружить непосредственно атаки? Такой модуль как «NGINX Plus Status» предоставляет нам детализированные (метрические) показатели по трафику, распределенного по внутренним серверам. Данный модуль позволяет произвести распознавание ненормального состояния трафика. «NGINXPlus» имеет функцию управления страницы сайта при помощи панели, на которой отображается графики состояния текущей работы системы.
Подводя итоги следует отметить, что «NGINX» и «NGINXPlus» смогут оказать Вам существенную помощь купировании DDoS атаки. А «NGINXPlus» обладает еще и дополнительными свойствами защиты от атак хакера.

Первая часть — Как бороться с DDoS-атакам или защита от ddos