Введение

DDoS (Distributed Denial of Service) атаки представляют собой одну из самых распространенных угроз для веб-серверов. Эти атаки направлены на перегрузку ресурсов сервера, что делает его недоступным для легитимных пользователей. В этой статье мы рассмотрим подходы к защите веб-серверов Nginx от DDoS атак с использованием Lua-скриптов и JavaScript на основе проекта Nginx-Lua-Anti-DDoS

О проекте Nginx-Lua-Anti-DDoS

Проект Nginx-Lua-Anti-DDoS разработан для того, чтобы предоставить дополнительный уровень защиты веб-серверов на базе Nginx от DDoS атак, используя возможности Lua и Nginx. Основные принципы работы проекта включают:

  • Анализ поведения: Отслеживание активности пользователей для выявления подозрительных паттернов, характерных для автоматизированных запросов.
  • Кэширование и блокировка IP: Временное блокирование IP-адресов, которые генерируют слишком много запросов.
  • Интеграция с JavaScript: Использование JavaScript для реализации дополнительных проверок на клиентской стороне.

Установка

Для поддержка Lua необходимо установить пакет nginx-extras

apt install nginx-extras

Клонируем репозиторий

git clone https://github.com/C0nw0nk/Nginx-Lua-Anti-DDoS

Копируем сам скрипт в директорию Nginx

cp -a Nginx-Lua-Anti-DDoS/lua/ /etc/nginx/

Производим подключение к веб-сайту

    server {
    ...
    access_by_lua_file /etc/nginx/lua/anti_ddos_challenge.lua;
    }

При необходимости производим донастроку скрипта

Скрипт потдерживает

  • Белый список IP-адресов
  • Белый список диапазонов IP-подсетей
  • Черный список IP-адресов
  • Черный список диапазонов IP-подсетей
  • Белый список агентов пользователя
  • Черный список пользовательских агентов