Зачем нужен сертифицированный WAF и когда его стоит использовать? Обзор и настройка файрвола веб-приложений

от автора

Привет, Хабр! Меня зовут Иван Коробов, я ведущий инженер по информационной безопасности в Selectel. В этой статье познакомимся с WAF: узнаем, что это такое и в каких случаях его применение обязательно. Также разберемся, как этот инструмент использовать с продуктами Selectel.

Используйте навигацию, чтобы выбрать интересующий раздел:

Коротко о WAF
SolidWall WAF
Пример использования
Выводы

Коротко о 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:

Установка обычно занимает не более 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 также гарантирует, что ваше решение отвечает высоким стандартам безопасности и может применяться даже в критически важных системах.

Поделитесь в комментариях, знаете ли вы, какие угрозы актуальны для вашего веб-приложения? Используете ли WAF для его защиты? Спасибо за внимание!


ссылка на оригинал статьи https://habr.com/ru/articles/862372/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *