
Привет, Хабр! На связи Иван, руководитель отдела сопровождения сервисов ИБ в Selectel.
Защита веб-приложений с каждым годом всё актуальнее. Растет число взломов крупных компаний и утечек чувствительных данных. Нужно ли говорить о том, как важно заботиться о безопасности веб-приложений, помнить о возможных атаках и их последствиях?
Неуклонно ужесточаются требования законодательства в сфере защиты персональных данных и данных, обрабатываемых в государственных информационных системах. Растущие угрозы и новые правила заставляют ответственнее подходить к выбору компонентов защиты инфраструктуры.
Я уже рассказывал о сертифицированном WAF и OpenAppSec — решении с открытым исходным кодом. Недавно российский вендор UserGate сообщил о старте продаж нового продукта — UserGate WAF. Сегодня мы рассмотрим его заявленные особенности, установим в облаке Selectel и спрячем за него защищаемое приложение. Поехали!
Используйте навигацию, если не хотите читать текст целиком:
Несколько слов о UserGate WAF
Сначала будем отталкиваться от информации, предоставленной вендором.
UserGate WAF — это полностью оригинальное решение на основе собственного движка анализа веб-трафика, разработанное специалистами компании без привлечения компонентов с открытым исходным кодом. UserGate WAF имеет сертификат ФСТЭК № 3905, что позволяет использовать его при аттестациях по приказу № 17 ФСТЭК. Кроме того, он внесен в реестр Минцифры под номером 28542.
Решение защищает как веб-приложения, так и API. Анализ трафика на уровне L7 обеспечивают 11 тыс встроенных правил и вариаций, которые оказываются крайне полезными на практике. Также можно создавать и кастомные правила, учитывающие логику пользовательских приложений. Язык описания политик — UserGate Policy Language (UPL).
Под капотом у UserGate WAF собственная операционная система UGOS и модули анализа трафика. Начиная с версии 7.4, UserGate WAF появилось много новых возможностей:
поддержка кластеризации;
модуль защиты Malicious User-Agent (антибот);
работа с заголовками: X-Forwarded-For, X-real-IP, X-request-ID;
обновленный интерфейс.
По аналогии с NGFW, UserGate WAF поддерживает кластеры конфигурации и отказоустойчивости. Если нужно распределение нагрузки в сторону защищаемых приложений, можно использовать встроенный балансировщик с алгоритмом Round Robin.
UserGate WAF отдает логи об атаках в форматах JSON и CEF. Такая возможность полезна для интеграции с SIEM-решениями — она позволяет централизованно следить за состоянием защиты веб-приложения.
Если вы уже работали с UserGate NGFW в виртуальном исполнении UserGate VE, то процесс установки и настройки вам знаком. Порог входа окажется существенно ниже, и начать работать с WAF получится намного быстрее. Основные компоненты — сеть, зоны, Firewall, пользователи, мониторинг и интерфейс — не вызовут сложностей.
Мы привыкли, что в большинстве случаев решения с открытым исходным кодом выигрывают от коллективного вклада мирового сообщества, огромной базы знаний и тысяч готовых правил, доступных публично. Однако заявление производителя об отсутствии в основе WAF-движка open source-компонентов является важным конкурентным отличием и дает несколько преимуществ:
более тесную и производительную интеграцию WAF с другими подсистемами собственной ОС UGOS;
независимость от графика обновлений и уязвимостей в сторонних компонентах — например, как это произошло с прекращением поддержки ModSecurity;
единую точку ответственности в лице вендора.
С другой стороны, это обязывает UserGate быстро реагировать на новые векторы атак и своевременное обновление сигнатур.

Security Center
Рассказываем о лучших практиках и средствах ИБ, требованиях и изменениях в законодательстве.
Анализ схем размещения WAF в продуктах Selectel
Теперь спланируем развертывание UG WAF в публичном облаке Selectel. Рассмотрим два случая: когда аттестация не требуется и когда без нее не обойтись.
Сценарий 1. Аттестация системы не требуется
В таком случае нужно только защитить веб-приложение.

На схеме видно, что доступ к защищаемому приложению открыт только через UG WAF, а пограничным межсетевым экраном может выступать и облачный файрвол:

UserGate WAF поставляется только в виртуальном исполнении, поэтому веб-приложение может находиться и на выделенных серверах. Сетевую связность между ними и WAF в таком сценарии нужно настроить через глобальный роутер Selectel. Подробнее о его использовании можно почитать в документации или обзорной статье.

Таким образом, UG WAF может стать единой точкой входа для доступа к защищаемым приложениям.
Важно отметить, что на момент подготовки статьи в тестируемой нами официальной стабильной версии 7.3 нативный функционал кластеризации еще отсутствует. По этой причине для обеспечения отказоустойчивости воспользуемся внешним облачным балансировщиком.
Полноценная поддержка кластеризации в режимах Active-Active и Active-Passive была добавлена в версии 7.4, выпущенной в июне 2025 года. При развертывании на базе актуальных версий продукта следует в первую очередь рассматривать именно нативный механизм обеспечения отказоустойчивости.
Итак, поскольку мы используем облачный балансировщик Selectel, то схема получается следующей:

Сценарий 2. Требуется аттестация системы
В этом случаем отлично подойдет следующий набор продуктов Selectel и UserGate:
аттестованный регион публичного облака,
NGFW UserGate VE,
UserGate WAF.

Ключевое преимущество предлагаемого набора — в том, что все его компоненты имеют достаточный функционал и документы для прохождения аттестации по УЗ‑1 и К1 согласно требованиям ФСТЭК.
Масштабировать систему можно, добавляя новые ноды обработки трафика, облачный балансировщик между UserGate NGFW и WAF, а также ресурсы на каждую ноду.
Разворачивание WAF в продуктах Selectel
Теперь развернем UserGate WAF в облаке Selectel и таким способом защитим уязвимое приложение. Для этого реализуем базовую схему:

1. Сначала создадим проект в публичном облаке. Перейдем в раздел Облачная платформа → Проект → Создать проект. Укажем имя проекта и нажмем Создать.

2. Теперь загрузим образ виртуального диска UG WAF в хранилище образов:

3. Наша схема предусматривает изолированную подсеть для связи между UG WAF и виртуальной машиной с веб-приложением. Сконфигурируем ее, а также выделим публичный IP-адрес для WAF. Для этого перейдем в раздел Сеть и создадим новую приватную сеть:

4. Затем в разделе Публичные IP‑адреса сформируем новый адрес:

5. Теперь развернем ВМ с UserGate WAF. В качестве источника укажем загруженный ранее образ диска:

6. Отлично. Теперь развернем виртуальную машину для веб-приложения:

7. Сейчас необходимо инициализировать UserGate WAF и настроить доступ к нему только с доверенных адресов. Задаем параметры аплинка UG WAF в консоли:
UGOS WAF 7.3.0.113300R
Admin@chealeelarin> configure
Admin@chealeelarin# set network interface adapter port0 enabled on ip-addresses [ 192.168.0.246/24 ] zone __default__
8. Следующим шагом создаем шлюз по умолчанию:
UGOS WAF 7.3.0.113300R
Admin@chealeelarin> configure
Admin@chealeelarin# create network gateway interface port0 ip 192.168.0.1 default on enabled on virtual-router default weight 1
9. Теперь можно попасть в веб-консоль UserGate WAF, обратившись по адресу:
https://<плавающий ip>:8001
10. В разделе UserGate WAF → Настройка → Системные DNS-серверы укажем адреса DNS-серверов:

11. Активируем лицензию и настраиваем внешнюю зону Untrusted. Для решения этой задачи добавим доверенный IP в ACL для доступа к веб-консоли и SSH:

12. Reverse-прокси понадобится дальше, когда будем заводить приложение за UserGate WAF. Сейчас назначим корректные зоны интерфейсам:

Заведение уязвимого приложения за UserGate WAF
У нас собрана целевая схема — осталось только спрятать приложение за WAF.
В этой статье мы сознательно опускаем настройку HTTPS, чтобы сосредоточиться на базовой логике работы WAF. Наш стенд — временный, и для него шифрование некритично.
Однако в реальной задаче вам потребуется выполнить SSL-терминирование на стороне WAF. Для этого загрузите ваш SSL-сертификат и закрытый ключ в интерфейс UserGate и примените его в настройках создаваемого правила reverse-прокси.
Теперь настроим reverse-прокси на UserGate WAF. Трафик из интернета должен идти к защищаемому приложению через него:


Попробуем обратиться к веб‑приложению извне:

Если выключить правило reverse-прокси, доступ к приложению пропадет. Страница ошибки reverse-прокси от UserGate по умолчанию выглядит так:

В журналах WAF видим эти обращения:

Записи содержат не только данные об источнике и назначении, но и целевой URL, User-Agent, код ответа сервера. Весь лог можно выгрузить в CSV для анализа.
После активации лицензии UG WAF скачаются и установятся библиотеки правил WAF:


Правила добавятся в раздел:

Библиотека UserGate WAF насчитывает более 8,6 тыс правил. Изначально действие для них не задано — его можно указать самостоятельно.
По умолчанию все предустановленные сигнатуры выключены и разбиты на слои — группы правил. UG WAF позволяет создавать собственные слои и включать в них кастомные директивы.
Для тестирования включим все слои, кроме Detection Evasion, который пытается поймать попытки обфускации вредоносной нагрузки за счет добавления различных мусорных символов. Выявление обфусцированных нагрузок — непростая задача, и такие правила получаются довольно агрессивными с точки зрения детекта. По этой причине их следует использовать с осторожностью, чтобы не порождать ошибки при обработке нормального трафика.

Теперь в созданном ранее правиле reverse‑прокси добавим профиль WAF для анализа трафика:

Отлично, схема собрана. Теперь мы можем управлять WAF с доверенных адресов и анализировать проходящий через него трафик.
Анализ результатов защиты приложения
1. Просканируем защищаемое приложение утилитой nikto:
nikto -h http://31.186.103.205:8080 -output report.html
2. Посмотрим на логи UserGate WAF:

UserGate WAF позволяет просматривать трафик в режиме реального времени. Логи можно фильтровать — например, по HTTP-методу. Так можно просмотреть GET- и POST-запросы:


3. Теперь попробуем вручную выполнить SQL-инъекцию для обхода авторизации от имени администратора и посмотрим на ответ сервера:

Как видим, авторизация не прошла — WAF заблокировал запрос.
Тестирование обхода WAF
По традиции, как и в прошлых статьях о WAF, запустим тест с помощью утилиты waf-bypass.
1. Установим утилиту на стороннюю виртуальную машину:
git clone https://github.com/nemesida-waf/waf\_bypass.git /opt/waf-bypass/
python3 -m pip install -r /opt/waf-bypass/requirements.txt
2. Запустим сканирование, выполнив команду:
python3 /opt/waf-bypass/main.py --host='target_ip:port'
3. При выключенном правиле WAF на UG WAF:

При включенном правиле WAF на UG WAF:

Доля пропущенных атак (BYPASSED) заметно сократилась — это хороший результат. Дальнейшее уменьшение этого показателя требует более тонкой настройки правил, как и в любом другом WAF.
Данный результат подчеркивает необходимость в тщательной, поэтапной и гранулярной настройке профиля защиты, с обязательным предварительным испытанием на тестовой среде.
Выводы
UserGate WAF — зрелое решение, которое позволяет быстро развернуть защиту веб-приложений, особенно в средах, где уже используются другие продукты вендора, благодаря знакомому интерфейсу и общей логике управления. Наличие сертификата ФСТЭК делает его привлекательным для организаций с повышенными регуляторными требованиями.
Большое количество готовых правил позволяет максимально быстро начать применение WAF для защиты веб-приложений Включив конкретные наборы правил, можно обезопасить ресурс с определенным перечнем технологий от известных типов угроз.
К тому же вендор предлагает полный комплекс услуг по развертыванию, интеграции и миграции для заказчиков, у которых в штате небольшое количество ИТ‑специалистов или нет выделенных экспертов по ИБ. Так решается проблема сложности кастомизации правил.
Таким образом, UserGate WAF можно рекомендовать командам, как обладающим необходимой компетенцией, так и нет, но готовым приобрести поддержку решения силами вендора.
Продукт отлично подойдет тем, кто уже работал с другими системами UserGate. Процессы развертывания и конфигурации схожи с NGFW. Гибкая настройка политик для разных сервисов позволит одной инсталляцией обезопасить сразу несколько из них.