1cloud.ru corporate blog
IT Infrastructure
Server Administration
System administration
Hosting
January 2016 14

Кейс NGINX: Как противостоять DDoS-атакам

Original author: Rick Nelson
Translation
Основная цель нашей работы состоит в том, чтобы сделать IaaS простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Поэтому мы проводим постоянную оптимизацию всех систем и рассказываем о том, что нам удалось сделать, в нашем блоге на Хабре.

Пара примеров:


Сегодня мы решили взглянуть на западный опыт и кратко проанализировать тему балансировки нагрузки. Нас привлекла заметка на тему работы с DDoS-атаками.


/ Фото Dennis van Zuijlekom / CC

Если начинать с терминологии, то DDoS можно определить как атаку на ИТ-систему с целью довести её до состояния, в котором будет невозможно обслуживать запросы с должным уровнем качества. Здесь работает количественное воздействие, которое производят специальными ботами, использующими ту или иную уязвимость для DDoS-атаки.

Слабая подготовленность системы к обработка большого числа запросов или распараллеливанию соединений и балансировке нагрузки может стать такой уязвимостью. В случае начала простейшей DDoS-атаки трафик на вашу систему пойдет с определенных адресов, которые будут генерировать аномальное число запросов и соединений. Помимо интенсивности трафика атаку можно вычислить о по нестандартным заголовкам User-Agent'а.

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

Дополнительная возможность — разрыв соединений, которые практически не используются, но остаются открытыми на протяжении существенного отрезка времени. Таким образом вы сможете обезопасить систему от Slowloris-атаки.

Более жесткой мерой будет внесение IP в черный список с помощью директивы deny. После этого NGINX уже не будет обрабатывать запросы с этого адреса. Альтернатива — задать диапазон разрешенных IP.


/ Фото Joe The Goat Farmer / CC

Для предотвращения скачков трафика вы можете воспользоваться возможностью кеширования. NGINX сможет обновлять устаревшие объекты по мере необходимости и тем самым сглаживать пики нагрузки на вашу систему.

Дополнительно вы можете настроить фильтры по URL (для случая, когда атаке подвергается определенная часть вашего ресурса) и заголовкам User-Agent (если вы хотели бы отсечь аномальный трафик, который не похож на обычное поведение пользователей). Еще есть возможность ограничения числа соединений на уровне внутренней маршрутизации между серверами.

Внутренний инструментарий NGINX позволяет анализировать различные метрики входящего трафика. Мониторинг доступен в том числе и с помощью API.
+14
24.9k 365
Comments 5
Top of the day