Сертифицированный WAF: что это, защита, настройка, пример

Файрвол веб-приложений WAF: сертификация, настройка, пример использования

Иван Коробов Иван Коробов Ведущий инженер по ИБ 27 ноября 2024

Знакомимся с WAF, сертифицированным в соответствии с требованиями ФСТЭК, и случаями его обязательного применения. Также разберемся, как такой инструмент можно использовать на практике.

Изображение записи

Привет! В прошлый раз мы рассмотрели, что представляет из себя WAF, а также изучили, как с ним работать на примере решения Open-Appsec. В рамках этой статьи познакомимся с WAF, сертифицированным в соответствии с требованиями ФСТЭК, и узнаем, в каких случаях его применение обязательно. Также разберемся, как такой инструмент можно использовать с продуктами Selectel.

Коротко о WAF

Сначала вспомним, что такое WAF и зачем он нужен.

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

Почему WAF необходим

В современном мире веб-приложения становятся главной целью злоумышленников, а атаки вроде SQL-инъекций и XSS остаются одними из самых популярных. Без надлежащей защиты даже небольшое приложение с уязвимостью может привести к большим финансовым и репутационным потерям.

Существует особые случаи, когда требуется использовать не обычный файрвол для приложений, а сертифицированный. Разберем, что стоит за сертификацией, кто именно и как ее производит, а также рассмотрим примеры, когда без такой дополнительной меры защиты не обойтись.

В РФ есть специальная служба — ФСТЭК (Федеральная служба по техническому и экспортному контролю). В ее полномочия входит проверка средств защиты информации на соответствие российским нормативам по информационной безопасности. Такая проверка и является процессом сертификации.

Наличие сертификата ФСТЭК критически важно для компаний, которые обязаны соблюдать законы и другие нормативные акты, регламентирующие правила работы в сфере информационной безопасности — например приказ ФСТЭК № 17, который описывает требования к работе со сведениями в информационных системах.

Для таких компаний наличие сертифицированного WAF обязательно — иначе не пройти проверку на соответствие или получить штраф за нарушение требований законодательства.Также WAF (не обязательно с сертификатом ФСТЭК) требуется для выполнения требований ФЗ‑152 и приказа ФСТЭК № 21, которые устанавливают порядок обращения с персональными данными.

Процесс получения сертификата непростой, проводится специальный аудит на удовлетворение требований законодательства. Например, SolidWall WAF сертифицируется на соответствие:

Все средства защиты информации, получившие сертификат ФСТЭК, добавляются в специальный государственный реестр. К примеру, SolidWall WAF на данный момент имеет сертификат № 4652, действующий до 13 февраля 2028 года.

Зачем нужен сертифицированный WAF

Выше мы упоминали о ряде требований к WAF, устанавливаемых приказами ФСТЭК России № 17 и № 21, которые призваны обеспечить безопасность информации, обрабатываемой в ГИС или ИСПДн. Рассмотрим их подробнее — список оцениваемых критериев не маленький.

В сфере информационной безопасности часто встречаются следующие сокращения:

  • ГИС — государственная информационная система;
  • ИСПДн — информационная система для обработки персональных данных.

Приказ ФСТЭК России № 17 от 11.02.2013 «Об утверждении Требований о защите информации, не составляющей государственную тайну, содержащейся в государственных информационных системах»:

  • УПД.3: Управление (фильтрация, маршрутизация, контроль соединений, однонаправленная передача и иные способы управления) информационными потоками между устройствами, сегментами информационной системы, а также между информационными системами.
  • ЗИС.17: Разбиение информационной системы на сегменты (сегментирование информационной системы) и обеспечение защиты периметров сегментов информационной системы.
  • ЗИС.22: Защита информационной системы от угроз, направленных на отказ в обслуживании.
  • ЗИС.23: Защита периметра информационной системы при взаимодействии с иными системами и сетями.

Приказ ФСТЭК России № 21 от 18.02.2013 «Об утверждении Состава и содержания организационных и технических мер по обеспечению безопасности персональных данных при их обработке в информационных системах персональных данных»:

  • УПД.3: Управление (фильтрация, маршрутизация, контроль соединений, однонаправленная передача и иные способы управления) информационными потоками между устройствами, сегментами информационной системы, а также между информационными системами
  • ЗИС.17: Разбиение информационной системы на сегменты (сегментирование информационной системы) и обеспечение защиты периметров сегментов информационной системы.

Как видно, наличие сертификата у файрвола приложений гарантирует, что он должным образом фильтрует и контролирует входящий и исходящий трафик, предотвращает несанкционированный доступ и атаки с целью нарушения работы информационных систем.

SolidWall WAF

SolidWall WAF — интеллектуальный межсетевой экран прикладного уровня, разработанный для защиты веб-приложений от самых разнообразных угроз. Файрвол анализирует и фильтрует трафик, тем самым предотвращая атаки и несанкционированный доступ к чувствительным данным.

Возможности решения

  • Анализ и блокировка атак, включая SQL‑инъекции, XSS, CSRF, Directory Traversal и другие.
  • Машинное обучение для автоматической настройки под конкретное приложение минимизируют ложные срабатывания и повышают эффективность защиты.
  • Инвентаризация бизнес-логики анализирует трафик для выявления бизнес-логики и компонентов приложения, что позволяет настраивать защиту более точно.

Преимущества решения

  • Соответствие требованиям безопасности, устанавливаемых ФСТЭК России, что подтверждается наличием сертификата.
  • Гибкость и масштабируемость позволяет строить распределенные отказоустойчивые конфигурации, что одновременно обеспечивает и надежность, и производительность.
  • Удобство управления благодаря веб-интерфейсу, а также поддержке командной строки и REST API для управления и настройки, что упрощает эксплуатацию и интеграцию с другими системами.

SolidWall WAF — эффективный инструмент безопасности веб-приложений, который сочетает в себе технологии анализа и защиты, удобен в использовании и соответствует российским стандартам информационной безопасности.

В системах, которые подлежат аттестации по требованиям Приказа ФСТЭК России № 17, должны применяться сертифицированные средства защиты информации. Инсталляции WAF в дата‑центрах тоже могут быть аттестованы. При этом обмен чувствительными данными между WAF и защищаемым приложением должен проходить по защищенному каналу связи с использованием средств криптографической защиты информации (СКЗИ) определенного класса.

Последнее требование может быть ослаблено, если выделенная инсталляция сертифицируемого WAF находится в составе аттестуемой системы, то есть не выходит за пределы контролируемой зоны (КЗ). В таком случае файрвол приложений полностью управляется владельцем инфраструктуры.

Из чего состоит SolidWall WAF

  • Узел управления (WAF manager) — содержит в себе компоненты управления для настройки параметров публикации и правил анализа трафика.
  • Узел анализа трафика (WAF analyzer) — непосредственно выявляет признаки вредоносных запросов и ответов.

Стоит отметить, что SolidWall WAF можно использовать в самых разных архитектурах: от all-in-one, когда оба компонента устанавливаются на один сервер, до кластерного исполнения с разделением компонентов управления и анализа трафика.

Пример использования

Для иллюстрации поднимем в аттестованном облаке Selectel SolidWall WAF в All-in-one архитектуре и рассмотрим HA-вариант его инсталляции.

Схема подключения приложения к интернету через цепочку компонентов.
Целевая схема.

Итак, в качестве Cloud Firewall можно использовать облачный файрвол или сертифицированный виртуальный межсетевой экран, если требуется аттестация. На облачном МСЭ настраивается фильтрация входящего и исходящего трафика.

WAF разворачивается на отдельной виртуальной машине. Для расшифровки HTTPS-трафика необходимо терминировать TLS-сертификат на виртуальном межсетевом экране или на WAF. В обоих случаях к приложению доходит только легитимный трафик по HTTP.

Подобную схему можно также собрать на выделенных серверах в А-ЦОД, где на периметре будет аппаратный межсетевой экран. WAF представляет собой отдельный аплайнс, на котором можно терминировать TLS-сертификат.

В этом случае схема будет следующей:

Схема работы фаервола.
Схема инсталляции на выделенных серверах.

Установка WAF

Рассмотрим процесс установки WAF.

1. Загружаем образ WAF в облако.

2. Создаем виртуальную машину (ВМ) со следующими параметрами:

  • 4 x vCPU,
  • 8 ГБ RAM,
  • 200 ГБ SSD;
  • источник загрузки — загруженный образ WAF.
Скриншот панели управления.
Создание виртуальной машины в панели управления.

Необходимо добавить два сетевых интерфейса: один на этапе создания ВМ, второй — для связности с защищаемым приложением через локальную сеть.

3. После создания ВМ дожидаемся окончания загрузки, выбираем язык (English).

4. Запускаем установку Ubuntu + WAF:

Скриншот псевдографического интерфейса с окном приветствия установщика Ubuntu.

Установка обычно занимает не более 10 минут.

5. Авторизуемся в консоли с учетной записью WAF.

6. При standalone-инсталляции выбираем Yes.

Скриншот псевдографического интерфейса с подтверждением простой установки.

7. Будут доступны три режима установки:

  • Reverse proxy
  • Passive traffic capture
  • Hybrid mode (both components)

Выбираем Reverse proxy, так как нам необходимо завести приложение за WAF:

Скриншот псевдографического интерфейса с выбором режима операции.

8. Далее необходимо указать IP‑адрес хоста с защищаемым приложением:

Скриншот псевдографического интерфейса с полем ввода хоста.

9. Также порт, на котором защищаемое приложение находится:

Скриншот псевдографического интерфейса с полем ввода номера порта.

Дожидаемся установки компонентов приложения.

10. Настало время задать пароль для учетной записи WAF, а также настроить сетевые интерфейсы в Netplan.

11. После можно получить доступ к веб-интерфейс WAF, набрав в адресной строке браузера:


    https://<white ip waf>:8443
Скриншот интерфейса программы.

Веб‑интерфейс WAF.

Обратите внимание. На данном этапе мы получили готовый к тестированию WAF. Однако для практической эксплуатации необходима его более тонкая настройка.

Интерфейс WAF

В интерфейсе управления есть несколько разделов. Кратко ознакомимся с их предназначением.

Обзор

В данном разделе для каждого приложения можно увидеть график блокировок, различные категории запросов, в том числе отфильтрованных по значению статуса.

Скриншот программы со страницей графика блокировок и категориями запросов.

События

Раздел содержит список событий в разрезе приложений.

Правила

По умолчанию доступен некоторый набор правил, подходящих для общего случая.

Скриншот приложения со страницей правил.

Для каждого приложения можно добавлять правила, создавая граф:

Скриншот приложения с изображением графа.

Источники, списки, цели

Для каждого приложения можно создавать уникальные источники данных, а также задавать общие источники, списки и цели.

Скриншот страницы с различными данными.

Приложения

Раздел, в котором осуществляется управление приложениями. Создадим для примера приложение juiceshop.test:

Скриншот страницы с настройкой тестового приложения.

Как видим, в разрезе отдельного приложения доступен ряд настроек и дашбордов.

Настройки

В настройках есть следующие разделы.

1. Управление анализаторами:

Скриншот страницы управления анализаторами.

Можно добавлять и удалять анализаторы, управлять их отдельными модулями.

2. Управление доступом

Скриншот страницы управления доступом.

В разделе управления доступом пользователям можно задать одну из трех ролей: «Администратор», «Аналитик» или «Только для чтения».

3. Подавление аномалий:

Скриншот с правилами подавления аномалий.

Здесь добавляются правила подавления аномалий, настроенные по определенным условиям выявления.

4. Настройки панели управления:

Скриншот.

Здесь доступны настройки парольной политики, почты, языка интерфейса и LDAP.

5. Журнал

Скриншот журнала.

Лог событий управления WAF.

6. Конфигурация модулей:

Скриншот.

Доступна кастомизация параметров модуля ModSecurity.

7. Отслеживание сессий:

8. Настройки аутентификации через nginx:

Скриншот программы с настройкой аутенификации.

Можно указать логин и пароль для baseauth nginx.

Отчеты

В этом разделе можно настроить, например, экспорт отчетов по использованию RPS на почту.

Скриншот раздела «Отчеты».

Помощь

Здесь находится информация о версиях компонентов WAF.

Скриншот раздела «Помощь».

На данном этапе установка завершена и необходимо выполнить настройку для защиты сервера. Однако прежде установим тестовое приложение.

Установка приложения за WAF

1. Создадим еще одну виртуальную машину в локальной сети WAF согласно исходной схеме.

2. Установим Docker:


    apt install docker.io -y

3. Скачаем и запустим контейнер с уязвимым приложением:


    docker pull bkimminich/juice-shop
docker run --rm -p 8080:3000 bkimminich/juice-shop

4. Отредактируем файл /etc/hosts/ на локальном хосте, добавив запись:


    <white ip ВМ> juiceshop.test

Приложение доступно:

Скриншот веб‑интерфейса запущенной программы.

Настройка WAF

1. Создадим правило reverse-proxy для solidwall-nginx, добавив следующий код в новый файл /etc/solidwall-nginx/sites-available/juiceshop:


    server {
    include static/server.conf;
    listen 80;
    server_name juiceshop.test;
    set $BACKEND http://192.168.0.125:8080;
    location / {
        include static/waf.conf;
    }
}

Создадим в системе ссылку на правило выше:


    ln -s /etc/solidwall-nginx/sites-available /etc/solidwall-nginx/sites-enabled/juiceshop

Перезагрузим службу solidwall-nginx:


    sudo solidwall-nginx reload

2. В веб-интерфейсе создаем новое приложение, а для его настройки указываем имя juiceshop.test:

Скриншот веб‑интерфейса.

3. Теперь если в /etc/hosts заменить IP-адрес для имени juiceshop.test на белый адрес WAF и обратиться снаружи на http://juiceshop.test, то откроется страница уязвимого приложения:

Скриншот запущенной программы.

В списке транзакций будут видны запросы, по каждой из них можно посмотреть детальную информацию:

Скриншот из программы  с данными по транзакции.

Приложение заведено за WAF. 

Внешнее сканирование уязвимостей

1. Воспользуемся nikto для сканирования тестового приложения. Выполним следующую команду на удаленном хосте:


    nikto -host http://juiceshop.test

SolidWall WAF в режиме реального времени отображает запросы, каждый из которых можно открыть и увидеть в «разобранном» виде:

Скриншот с составляющими запроса.

На основе выявленной в запросе аномалии можно сразу принять решение о подавлении подобных случаев:

Скриншот  программы с данными  по аномалиям.

Также можно увидеть решение WAF относительно пропуска запроса к защищаемому приложения и список правил, на основе которых оно было принято:

Скриншот с деталями транзакции.

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

Схема работы фаервола.

Даже на основе правил по умолчанию SolidWall WAF при сканировании обнаружил большое количество атак, распределив их по типам:

Скриншот со списком атак.

Можно посмотреть запросы, соотносящиеся с определенным типом:

Скриншот  с ответами сервера.

Также видны и ответы сервера:

Скриншот  с данными по HTTP-запросу.

Такая детализация позволяет видеть все части HTTP-запроса и ответа, что дает возможность подготавливать правила для WAF более эффективно.

Теперь переключим SolidWall WAF в активный режим, чтобы он блокировал вредоносные запросы. На сервере с приложением запишем дамп входящего трафика:


    tcpdump -pni <interface name> inbound and port 8080 -w dump.pcap

Чтобы проанализировать, какие именно запросы WAF пропустил к приложению, снова запустим nikto.

Видно, что WAF заблокировал все запросы, не относящиеся к типу GET, поскольку посчитал их вредоносными на основе предусмотренных правил.. Исключением стал один POST-запрос, который был пропущен.

Скриншот  с данными из программы.

Бо́льшая часть GET-запросов также была заблокирована:

Скриншот  с данными из программы.

По результатам сканирования пропущенными оказались следующие запросы:

Скриншот  с данными из программы.

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

Тестирование обхода WAF

Как и в статье про WAF Open-appsec, воспользуемся утилитой 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. Запускаем waf-bypass (IP для juiceshop.test предварительно добавим в /etc/hosts):


    python3 /opt/waf-bypass/main.py –host=http://’juiceshop.test’

3. Проведем тестирование в режиме активной защиты:

Снимок экрана с интерфейсом командной строки.
Тест в режиме активной защиты.

Как видим из отчета, BYPASSED равен 3,47%. Это довольно хороший результат, который можно улучшить путем тонкой настройки правил WAF. 

HA-архитектура

Как было сказано ранее, возможны также кластерные архитектуры WAF. Рассмотрим кратко, каким может быть алгоритм инсталляции в облаке.

Схема взаимодействия компонентов HA-арихтектуры.
Схема архитектуры.

1. На облачном (или виртуальном сертифицированном) МСЭ настраивается фильтрация входящего трафика. 

2. Трафик пробрасывается на облачный балансировщик нагрузки (БН), который в данном случае указан в варианте с резервированием.

3. WAF разворачивается на нескольких ВМ (нод анализа трафика). TLS-сертификат публикуется на WAF.

4. Очищенный трафик отправляется на балансировщик нагрузки, который распределяет его по нескольким инсталляциям приложений. В качестве второго БН может быть как облачный БН, так и отдельные инсталляции, например HAProxy.

5. Легитимный трафик направляется к приложению по HTTP.

Выводы

В современном мире, где веб-приложения становятся ключевой частью бизнеса и инфраструктуры, защита от киберугроз — это необходимость, а не опция. Файрвол веб‑приложений играет важнейшую роль в обеспечении безопасности, предотвращая атаки, которые могут приводить к утечке данных, финансовым и репутационным потерям.

Использование сертифицированных WAF, таких как SolidWall WAF, позволяет не только эффективно защищать приложения от распространенных уязвимостей, но и соответствовать требованиям законодательства — например, приказы ФСТЭК № 17 и № 21. Сертифицированный WAF также гарантирует, что ваше решение отвечает высоким стандартам безопасности и может применяться даже в критически важных системах.

Спасибо за внимание!