WAF для Nginx: Защита от атак с помощью NAXSI, ModSecurity и Lua WAF

Системное администрирование

Веб-приложения и сайты постоянно сталкиваются с различными угрозами, такими как DDoS-атаки, SQL-инъекции, XSS (Межсайтовый скриптинг) и другие типы кибератак. Чтобы защитить веб-приложения от подобных угроз, используются различные решения безопасности, одним из которых является WAF (Web Application Firewall) — межсетевой экран для веб-приложений. Он фильтрует и контролирует HTTP-запросы, обеспечивая дополнительный уровень защиты.

Одним из популярных веб-серверов и обратных прокси-серверов является Nginx, который может интегрироваться с различными модулями WAF для защиты приложений. В этой статье мы рассмотрим, что такое WAF в контексте Nginx, какие модули доступны для этой задачи, а также разберем их установку и настройку.


Что такое WAF?

WAF (Web Application Firewall) — это решение, которое контролирует HTTP/HTTPS-трафик между веб-приложением и Интернетом, анализируя его с целью выявления и блокировки опасных запросов. WAF действует как фильтр, перехватывая потенциально вредоносные запросы до того, как они достигнут веб-приложения.

Основные функции WAF включают:

  • Защиту от SQL-инъекций;
  • Блокировку XSS-атак;
  • Фильтрацию атак на основе сигнатур и шаблонов;
  • Ограничение доступа на основе IP-адресов;
  • Защиту от ботов и DDoS-атак.

Зачем использовать WAF с Nginx?

Nginx широко используется для обработки HTTP-запросов и как обратный прокси-сервер, что делает его удобным для интеграции с WAF. Ключевые преимущества использования WAF с Nginx включают:

  1. Безопасность на уровне веб-сервера. С использованием WAF запросы фильтруются на уровне Nginx, до того как они достигают приложения.
  2. Высокая производительность. Nginx известен своей эффективностью в обработке большого количества запросов, и WAF-модули могут поддерживать эту производительность при фильтрации данных.
  3. Гибкость и настраиваемость. WAF в Nginx можно легко настроить под конкретные требования и типы угроз.

Популярные модули WAF для Nginx

Для интеграции с Nginx существует несколько WAF-решений, которые поддерживают различные уровни защиты и имеют свои особенности. Рассмотрим самые популярные из них:

1. NAXSI (Nginx Anti XSS & SQL Injection)

NAXSI — это open-source WAF (страница разработки на GitHub), разработанный специально для защиты от XSS и SQL-инъекций. Он работает по принципу белого списка и использует набор сигнатур, чтобы блокировать подозрительные запросы.

Особенности NAXSI:

  • Легковесный и производительный;
  • Защищает от распространенных угроз (XSS, SQL-инъекции);
  • Возможность создания пользовательских правил;
  • Совместимость с Nginx и легкость установки.

2. ModSecurity

ModSecurity — это один из самых популярных и универсальных WAF-решений. Изначально он был разработан для Apache, но существует версия для Nginx. ModSecurity поддерживает огромное количество сигнатур и правил, а также позволяет создавать кастомные политики безопасности.

Особенности ModSecurity:

  • Большой набор предустановленных правил (OWASP Core Rule Set);
  • Защита от широкого спектра атак, включая SQL-инъекции, XSS, Remote File Inclusion и др.;
  • Возможность глубокого анализа трафика;
  • Гибкость в настройке и возможность создания пользовательских правил.

3. OpenResty + Lua WAF

OpenResty — это платформа, основанная на Nginx и позволяющая запускать Lua-скрипты для расширения функциональности сервера. С помощью Lua можно создавать кастомные WAF-решения, такие как Lua WAF. Это предоставляет большую гибкость для написания собственных фильтров безопасности.

Особенности Lua WAF:

  • Высокая гибкость и возможность кастомизации;
  • Поддержка сложных сценариев блокировки трафика;
  • Хорошая производительность благодаря использованию OpenResty.

Установка NAXSI в Nginx

Шаг 1: Установка необходимых пакетов

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

sudo apt update 
sudo apt install nginx libnginx-mod-naxsi

Шаг 2: Настройка Nginx

После установки NAXSI его необходимо интегрировать в конфигурацию Nginx. Откройте файл конфигурации Nginx (обычно он находится по пути /etc/nginx/nginx.conf) и добавьте следующие строки:

http {
    include /etc/nginx/naxsi_core.rules;

    server {
        listen 80;
        server_name example.com;

        location / {
            # Включаем фильтрацию NAXSI
            include /etc/nginx/naxsi.rules;

            proxy_pass http://localhost:8080;
        }
    }
}

Шаг 3: Создание правил

Файл /etc/nginx/naxsi.rules содержит базовые правила для защиты. Можно добавить пользовательские правила для более строгой фильтрации.


Установка и настройка ModSecurity

Шаг 1: Установка ModSecurity

Установить ModSecurity для Nginx можно следующими командами (для Ubuntu):

sudo apt update
sudo apt install libmodsecurity3 libnginx-mod-security

Шаг 2: Настройка Nginx

После установки необходимо активировать модуль ModSecurity в конфигурации Nginx. Откройте файл конфигурации вашего сайта и добавьте следующие строки:

server {
    listen 80;
    server_name example.com;

    location / {
        # Включаем ModSecurity
        ModSecurityEnabled on;
        ModSecurityConfig /etc/nginx/modsec/modsecurity.conf;

        proxy_pass http://localhost:8080;
    }
}

Шаг 3: Правила OWASP CRS

Одним из ключевых преимуществ ModSecurity является поддержка набора правил OWASP Core Rule Set (CRS), которые обеспечивают защиту от широкого спектра атак. Для их активации загрузите и распакуйте OWASP CRS:

cd /etc/nginx/modsec
git clone https://github.com/coreruleset/coreruleset.git
mv coreruleset/rules/ /etc/nginx/modsec/

И добавьте в конфигурацию ModSecurity:

Include /etc/nginx/modsec/rules/*.conf

Lua WAF с OpenResty

Шаг 1: Установка OpenResty

OpenResty устанавливается на базе Nginx и LuaJIT. Чтобы установить OpenResty, выполните следующие шаги:

  1. Добавьте репозиторий OpenResty:
sudo apt-get update
sudo apt-get install -y openresty
  1. Установите OpenResty:
sudo apt-get update
sudo apt-get install -y openresty

Шаг 2: Настройка Lua WAF

После установки OpenResty вы можете написать свои Lua-скрипты для фильтрации трафика. Например, скрипт для блокировки по IP:

local block_ips = { "192.168.1.1", "203.0.113.0" }

local client_ip = ngx.var.remote_addr
for _, ip in ipairs(block_ips) do
    if client_ip == ip then
        ngx.exit(ngx.HTTP_FORBIDDEN)
    end
end

Этот скрипт можно разместить в конфигурации Nginx:

server {
    listen 80;
    server_name example.com;

    location / {
        access_by_lua_file /path/to/lua_waf.lua;

        proxy_pass http://localhost:8080;
    }
}

 


Заключение

Использование WAF в Nginx предоставляет мощные возможности для защиты веб-приложений от множества угроз. Среди наиболее популярных решений можно выделить NAXSI, ModSecurity и OpenResty с Lua WAF. Каждое из этих решений имеет свои преимущества и особенности, и выбор зависит от конкретных потребностей вашего проекта.

NAXSI — легковесное решение, идеально подходящее для базовой защиты от XSS и SQL-инъекций. ModSecurity — это мощный и гибкий инструмент с поддержкой большого количества правил. Lua WAF на базе OpenResty предоставляет высокую гибкость для кастомных решений.

Независимо от того, какое решение вы выберете, интеграция WAF с Nginx значительно повысит уровень безопасности вашего веб-приложения, защищая его от самых распространенных атак в сети.

Оцените статью