Защита от ddos с поддержкой Nginx
Веб-проекты часто сталкиваются с ДДоС атаками. Сегодня мы разберем один из стандартных метод обороны от HTTP-Flood.
Внедрение:
Не так давно на один из программ моего известного случилась атака, вероятнее всего, штурмовал неискушенный взломщик, в связи с тем что атака проводилась с одного ip адреса.
В процессе теста логов выявлено, что злодей старается скачать очень много раз основную страничку, а компьютер пытается обработать эти требования и не в состоянии.
Для обороны от атак такого рода мы станем применять прокси компьютер nginx ddos и обычный модуль ngx_http_limit_conn_module
Модуль ngx_http_limit_conn_module дает возможность ограничить количество объединений по данному ключу, например, количество объединений с одного Ip.
Рассматриваются не все объединения, а только те, в которых есть требования, обрабатываемые компьютером, и заголовок запроса прочитан.
Иными словами, у нас есть возможность установить ограничение на число запросов и включений с одного ip адреса. Данного хватит для обороны от слабых и средних HTTP-Flood атак.
Для установки ограничения мы станем применять директиву limit_conn
Регулировка nginx для обороны от ДДоС:
limit_conn:
limit_conn задает предельно дозволенное количество объединений с одного ip. При превышении данного числа в ответ на запрос компьютер возвратит оплошность 503 (Service Temporarily Unavailable).
После принятия ошибки 503, нападающий закончит формировать полезную-нагрузку на компьютер базы данных, к примеру MySQL, этим самым разгрузив его.
Однако прежде чем применять limit_conn для обороны от ДДоС атак с поддержкой nginx, мы можем разобраться и установить директиву limit_conn_zone
limit_conn_zone:
Синтаксис: limit_conn_zone ключ zone=наименование:объем;
Задает характеристики зоны делимой памяти, которая бережет положение для различных значений ключа. Положение например имеет нынешнее количество объединений. В роли ключа применяют документ, переменные и их композиции. Требования с пустейшим свойством ключа не рассматриваются.