INTEGRITY Документация

Упрощенное развертывание WAF в зонах и приложениях

Введение

Границы периметра безопасности стали менее чёткими по сравнению с традиционной моделью «замка и рва», популярной в прошлом. В рамках фиксированного периметра было относительно просто защищать несколько приложений с помощью одного развёртывания Web Application Firewall (WAF) внутри дата-центра. Сегодня этот подход не даёт достаточной гибкости, поскольку приложения и сервисы выходят за пределы традиционного дата-центра. Есть немало веских причин настраивать сети и сервисы по гибридной схеме и переходить на SaaS-платформы, поэтому подход к WAF стоит обновить с учётом этого сценария.

Облачные решения WAF позволяют контролировать разрастание периметра благодаря гибкой модели развёртывания, охватывающей приложения и сервисы, размещённые локально, в облачных средах IaaS и PaaS, а также в гибридных средах.

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

Для кого предназначен этот документ и чему вы из него узнаете?

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

Cloudflare предлагает комплексные решения для безопасности и производительности приложений, включая гибко настраиваемый облачный Web Application Firewall (WAF).

Из этого руководства вы узнаете:

Пример сценария

Большинство клиентов Cloudflare подключают несколько Cloudflare Zones в рамках одного Account (или Enterprise Organization). Каждая Cloudflare Zone обычно соответствует домену второго уровня (например, example.com), и все ее поддомены затем обрабатываются в этой зоне Cloudflare (web1.example.com, web2.example.com и т. д.).

В этой конфигурации Cloudflare выступает в роли обратного прокси на основе DNS. Каждое полное доменное имя (FQDN) настраивается в соответствующей зоне Cloudflare и указывает на исходный сервер клиента. При этом для Cloudflare не имеет особого значения, что представляет собой этот исходный сервер и где он расположен: это может быть локальная инфраструктура, виртуальная машина в облаке или SaaS сервис стороннего поставщика.

Часто несколько FQDN указывают на одну и ту же общую веб-инфраструктуру, например через IP-адрес или другой FQDN. Также возможно, что часть FQDN указывает на выделенную инфраструктуру источника или на внешнюю конечную точку SaaS.

Во многих случаях клиентам Cloudflare приходится управлять множеством зон Cloudflare (например, example.com,example.org, myappexample.com и так далее) в рамках одной учётной записи Cloudflare, а также множество полных доменных имён (FQDN) в каждой зоне. Зачастую множество FQDN из разных зон указывают на общую веб-инфраструктуру за кулисами.

Например, у вас может быть следующий (или похожий) сценарий:

Пример сценария показан на диаграмме ниже: Диаграмма, показывающая пример сценария с несколькими доменами, поддоменами и веб-приложениями

Требования к WAF

С точки зрения настройки WAF этот сценарий порождает интересные требования:

В этом руководстве по проектированию мы рассмотрим, как работает WAF Cloudflare и какие инструменты позволяют выполнить все перечисленные выше архитектурные требования.

Cloudflare Web Application Firewall

WAF Cloudflare работает как на уровне зоны, так и на уровне аккаунта. Существуют разные Фазы WAF (http_request_firewall_custom, http_ratelimit и http_request_firewall_managed) которые соответствуют Custom Rules, Rate Limiting Rules и Managed Rules. Эти фазы существуют как на уровне аккаунта, так и на уровне зоны. Подробнее см. подробнее см. в следующей документации. Важно отметить, что наборы правил уровня Account обрабатываются раньше наборов правил уровня zone.

Пример использования: внедрение Cloudflare Managed Ruleset

В рамках этого руководства мы будем опираться на приведённый выше пример сценария и требования к WAF. У вас есть одна учётная запись Cloudflare Account (или Enterprise Organization), в которой подключены два домена второго уровня.

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

Визуализируем сценарий ниже:

Диаграмма, показывающая, как этот пример сценария можно реализовать в Cloudflare Account с несколькими зонами
Рисунок 2: пример сценария теперь в составе аккаунта Cloudflare с несколькими зонами.

Использование WAF на уровне Account для снижения затрат на настройку

Мы будем использовать Cloudflare Managed Ruleset в качестве примера, учитывая, что этот подход можно применять и к другим Cloudflare Managed Rules, Rate Limiting Rules и Custom Rules.

После этого можно применить следующий подход:

На практике, используя Managed Rulesets WAF на уровне аккаунта, можно развернуть три экземпляра нашего Managed Ruleset. У каждого экземпляра будет свой Custom Filter Expression, которое проверяет, принадлежит ли hostname HTTPS-запроса одному из FQDN в списке:

Визуализируем полную конфигурацию на диаграмме ниже:

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

Эта схема развёртывает три экземпляра Managed Ruleset, настроенных под каждую группу приложений.

Если в будущем потребуется защитить дополнительные приложения, достаточно добавить FQDN нового приложения в выражение фильтра. Как правило, большинство приложений добавляются в стандартный экземпляр набора правил, использующий рекомендованную конфигурацию Cloudflare. Другой распространённый подход: добавлять новые приложения в Log экземпляр режима, чтобы его можно было отслеживать и в конечном итоге перевести в Default режим набора правил или на более специфический вариант при необходимости.

Дополнительные аспекты

Настройка ложных срабатываний

Наборы правил (в частности, Managed Ruleset) уже точно настроены Cloudflare для минимизации ложных срабатываний. Их можно применять для большинства приложений почти без дополнительной настройки. Это означает, что в большинстве случаев клиенты работают непосредственно со стандартными конфигурациями наборов правил и настраивают их только при необходимости.

Если это ваш сценарий, приведенную выше настройку можно упростить следующим образом с помощью Исключения:

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

Использование списков

Cloudflare дает возможность создавать списки имён хостов. В этом случае выражение Filter можно изменить так, чтобы оно ссылалось на такие переменные списков.

После этого списки можно обновлять напрямую и повторно использовать в нескольких rulesets. Например, один и тот же список можно применить и в Cloudflare Managed Rules, и в OWASP Ruleset, и в Rate Limiting. Ваши фильтры будут напрямую ссылаться на списки, что означает более чистую и удобную для сопровождения конфигурацию.

При использовании списков также гораздо проще внедрить «правило перехвата всего», которое выполняется последним в порядке оценки. Например, с его помощью можно реализовать Default Cloudflare Managed Ruleset, если хост в HTTPS-запросе не включен ни в один из ваших списков. Это гарантирует, что конфигурация WAF Managed Rules по умолчанию применяется всегда, на случай если какие-то из ваших приложений случайно не были добавлены в списки.

Использование автоматизаций

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

Например, можно создать базовый файл конфигурации Terraform для определения Rulesets и Lists, а затем поддерживать и применять его по мере необходимости без внесения изменений в Cloudflare Dashboard.

Не смешивайте настройки на уровне Account и Zone

По возможности Cloudflare рекомендует поддерживать конфигурацию на уровне Account, особенно если Cloudflare Zone будет содержать несколько DNS-записей, каждая из которых требует индивидуальной настройки.

На уровне WAF зоны можно развернуть только один экземпляр каждого набора правил (Managed Rules, OWASP Rules и т. д.), поэтому обработка особых сценариев на этом уровне может быть сложнее или вовсе невозможна.

Custom Rules и Rate Limiting Rules

Описанный выше подход для Managed Rules можно применить и к Custom Rulesets и Rate Limiting, распространяя эту гибкость на все инструменты безопасности WAF, доступные вам.

Если ваша конфигурация не привязана к конкретной зоне, Cloudflare рекомендует применять её на уровне Account.

Дополнительные сведения см. в следующих материалах:

Сводка

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