Введение
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-подсетей
- Белый список агентов пользователя
- Черный список пользовательских агентов