Файрвол веб-приложений WAF: сертификация, настройка, пример использования
Знакомимся с WAF, сертифицированным в соответствии с требованиями ФСТЭК, и случаями его обязательного применения. Также разберемся, как такой инструмент можно использовать на практике.
Привет! В прошлый раз мы рассмотрели, что представляет из себя WAF, а также изучили, как с ним работать на примере решения Open-Appsec. В рамках этой статьи познакомимся с WAF, сертифицированным в соответствии с требованиями ФСТЭК, и узнаем, в каких случаях его применение обязательно. Также разберемся, как такой инструмент можно использовать с продуктами Selectel.
Коротко о WAF
Сначала вспомним, что такое WAF и зачем он нужен.
WAF (Web Application Firewall) — это инструмент защиты веб-приложений от самых разных атак. Он анализирует HTTP-трафик и блокирует потенциально опасные запросы и ответы, тем самым предотвращая вредоносное воздействие на защищаемое приложение.
Почему WAF необходим
В современном мире веб-приложения становятся главной целью злоумышленников, а атаки вроде SQL-инъекций и XSS остаются одними из самых популярных. Без надлежащей защиты даже небольшое приложение с уязвимостью может привести к большим финансовым и репутационным потерям.
Существует особые случаи, когда требуется использовать не обычный файрвол для приложений, а сертифицированный. Разберем, что стоит за сертификацией, кто именно и как ее производит, а также рассмотрим примеры, когда без такой дополнительной меры защиты не обойтись.
В РФ есть специальная служба — ФСТЭК (Федеральная служба по техническому и экспортному контролю). В ее полномочия входит проверка средств защиты информации на соответствие российским нормативам по информационной безопасности. Такая проверка и является процессом сертификации.
Наличие сертификата ФСТЭК критически важно для компаний, которые обязаны соблюдать законы и другие нормативные акты, регламентирующие правила работы в сфере информационной безопасности — например приказ ФСТЭК № 17, который описывает требования к работе со сведениями в информационных системах.
Для таких компаний наличие сертифицированного WAF обязательно — иначе не пройти проверку на соответствие или получить штраф за нарушение требований законодательства.Также WAF (не обязательно с сертификатом ФСТЭК) требуется для выполнения требований ФЗ‑152 и приказа ФСТЭК № 21, которые устанавливают порядок обращения с персональными данными.
Подробнее про защиту ПДн можно прочитать в наших статьях «Что такое общедоступные персональные данные и что к ним относится», а также «ИСПДн и уровни защищенности персональных данных».
Процесс получения сертификата непростой, проводится специальный аудит на удовлетворение требований законодательства. Например, SolidWall WAF сертифицируется на соответствие:
- четвертому уровню доверия (УД) — как изложено в Требованиях по безопасности информации, утвержденных приказом ФСТЭК России от 2 июня 2020 года, № 76;
- профилю защиты межсетевого экрана, тип «Г» четвертого класса, описанному в методическом документе «Профили защиты межсетевых экранов» от 16 декабря 2016 года.
Все средства защиты информации, получившие сертификат ФСТЭК, добавляются в специальный государственный реестр. К примеру, 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:
Установка обычно занимает не более 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-запроса и ответа, что дает возможность подготавливать правила для 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. Рассмотрим кратко, каким может быть алгоритм инсталляции в облаке.
1. На облачном (или виртуальном сертифицированном) МСЭ настраивается фильтрация входящего трафика.
2. Трафик пробрасывается на облачный балансировщик нагрузки (БН), который в данном случае указан в варианте с резервированием.
3. WAF разворачивается на нескольких ВМ (нод анализа трафика). TLS-сертификат публикуется на WAF.
4. Очищенный трафик отправляется на балансировщик нагрузки, который распределяет его по нескольким инсталляциям приложений. В качестве второго БН может быть как облачный БН, так и отдельные инсталляции, например HAProxy.
5. Легитимный трафик направляется к приложению по HTTP.
Выводы
В современном мире, где веб-приложения становятся ключевой частью бизнеса и инфраструктуры, защита от киберугроз — это необходимость, а не опция. Файрвол веб‑приложений играет важнейшую роль в обеспечении безопасности, предотвращая атаки, которые могут приводить к утечке данных, финансовым и репутационным потерям.
Использование сертифицированных WAF, таких как SolidWall WAF, позволяет не только эффективно защищать приложения от распространенных уязвимостей, но и соответствовать требованиям законодательства — например, приказы ФСТЭК № 17 и № 21. Сертифицированный WAF также гарантирует, что ваше решение отвечает высоким стандартам безопасности и может применяться даже в критически важных системах.
Спасибо за внимание!