Защита веб-приложений с помощью брандмауэра веб-приложений Azure (WAF)

Защита веб-приложений с помощью брандмауэра веб-приложений Azure (WAF)

14.01.2025

Эта техническая и образовательная статья призвана помочь аналитикам безопасности, ИТ-администраторам и системным инженерам реализовать и настроить брандмауэр веб-приложений Azure (WAF) для защиты веб-приложений от распространенных атак. В цифровой среде, где веб-приложения являются воротами для многих предприятий, они часто становятся объектами различных кибератак, таких как внедрение SQL, межсайтовый скриптинг (XSS) и другие уязвимости из списка OWASP Top 10. Azure WAF обеспечивает необходимый уровень защиты для снижения этих рисков, обеспечивая доступность, целостность и конфиденциальность данных [1].

Введение

Веб-приложения являются важнейшими компонентами ИТ-инфраструктуры практически всех организаций. Однако доступ к Интернету делает их уязвимыми для атак, которые могут поставить под угрозу данные, прервать работу служб и нанести ущерб репутации компании. Брандмауэр веб-приложений (WAF) действует как обратный прокси-сервер, проверяя трафик HTTP/HTTPS, входящий и исходящий из веб-приложения, выявляя и блокируя вредоносные запросы до того, как они достигнут сервера приложений. Azure WAF, доступный как функция Azure Application Gateway или Azure Front Door, обеспечивает централизованную и масштабируемую защиту ваших веб-приложений, размещенных в Azure или даже в гибридных средах [2].

В этом практическом руководстве будут рассмотрены фундаментальные концепции Azure WAF, режимы его работы (обнаружение и предотвращение), настройка политик WAF с помощью управляемых наборов правил (основной набор правил OWASP — CRS) и настраиваемых правил. Будут предоставлены пошаговые инструкции по развертыванию WAF с помощью шлюза приложений Azure, тестированию его эффективности против распространенных атак и проверке результатов, а также обсуждению лучших практик и советов по устранению неполадок. Цель — дать читателю возможность настраивать и управлять Azure WAF автономно, профессионально и надежно, защищая свои веб-приложения от наиболее распространенных угроз.

Почему Azure WAF так важен для защиты веб-приложений?

  • Комплексная защита: защищает от распространенных веб-атак, включая внедрение SQL-кода, межсайтовый скриптинг (XSS), включение файлов, атаки ботов и другие уязвимости из списка OWASP Top 10 [3].
  • Управляемые правила: используются наборы управляемых правил (например, OWASP CRS), которые автоматически обновляются Microsoft, обеспечивая защиту от новейших угроз без ручного вмешательства.
  • Пользовательские правила: позволяет создавать собственные правила для удовлетворения требований безопасности конкретных приложений, блокируя определенные шаблоны трафика или защищая от уязвимостей, не охватываемых управляемыми правилами.
  • Гибкие режимы работы: работает в режиме «Обнаружение» (только отслеживает и записывает атаки) или «Предотвращение» (активно блокирует атаки), что позволяет постепенно контролировать реализацию.
  • Встроенная интеграция с Azure. Полная интеграция со шлюзом приложений Azure (для внутренних приложений) и Azure Front Door (для глобальных приложений), предлагая комплексное решение для доставки приложений со встроенной безопасностью.
  • Масштабируемость и высокая доступность: воспользуйтесь преимуществами масштабируемости и высокой доступности служб доставки приложений Azure, гарантируя, что защита всегда активна и производительна.
  • Соответствие: помогает организациям соблюдать нормативные требования и стандарты безопасности, требующие защиты веб-приложений.

Предварительные условия

Для реализации Azure WAF вам потребуются следующие элементы:

  1. Активная подписка Azure: подписка Azure для создания ресурсов и управления ими.
  2. Административный доступ: учетная запись с необходимыми разрешениями для создания и управления такими ресурсами, как шлюзы приложений, входные дверцы и политики WAF (например, «Соавтор» или «Администратор сети»).
  3. Существующее веб-приложение: веб-приложение (размещенное в Azure или другом месте), которое вы хотите защитить. В этом руководстве мы будем использовать простое веб-приложение, доступ к которому будет осуществляться через шлюз приложений.
  4. Виртуальная сеть (VNet) и подсети: виртуальная сеть и подсети, настроенные для шлюза приложений и веб-приложения.

Шаг за шагом: реализация Azure WAF с помощью шлюза приложений

Давайте настроим Azure WAF для защитывеб-приложение с использованием шлюза приложений Azure.

1. Создание шлюза приложений Azure с помощью WAF

  1. Откройте браузер и перейдите на портал Azure: https://portal.azure.com.
  2. Войдите в систему под учетной записью, имеющей необходимые разрешения.
  3. В верхнем поле поиска введите «Шлюз приложений» и выберите его из результатов.
  4. Нажмите «+ Создать».

  5. Основы:

    • Подписка: выберите подписку.
    • Группа ресурсов: создайте новую группу ресурсов (например, rg-waf-appgw) или выберите существующую.
    • Имя шлюза приложений: укажите имя (например: appgw-waf-01).
    • Регион: выберите регион.
    • Уровень: выберите «Стандартный v2» (WAF доступен только на уровне v2).
    • Включить WAF: выберите «Да».
    • Имя политики WAF: дайте политике WAF имя (например, wafpolicy-appgw-01).
    • Режим WAF: начните с «Обнаружения», чтобы отслеживать и корректировать правила, а затем переходите к «Предотвращению».
  6. Нажмите «Далее: Интерфейсы».

  7. Внешние интерфейсы:

    • Тип внешнего IP-адреса: выберите «Общедоступный».
    • Публичный IP-адрес: нажмите «+Добавить новый» и дайте общедоступному IP-адресу имя (например: «pip-appgw-waf»).
  8. Нажмите «Далее: Серверные части».

  9. Бэкэнды:

    • Нажмите «+Добавить внутренний пул».
    • Имя серверного пула: дайте ему имя (например, app-backend-pool).
    • Добавить серверный пул без целевых объектов: выберите «Нет».
    • Тип назначения: выберите «IP-адрес или полное доменное имя».
    • IP-адрес/полное доменное имя. Введите IP-адрес или полное доменное имя вашего веб-приложения (например: «10.0.0.4» для виртуальной машины в виртуальной сети или полное доменное имя службы приложений).
    • Нажмите «Добавить».
  10. Нажмите «Далее: Конфигурация».

  11. Настройка:

    • Настройки маршрутизации: нажмите «+Добавить правило маршрутизации».
    • Имя правила: дайте ему имя (например: rule-http).
    • Приоритет: оставьте значение по умолчанию.
    • Слушатель:
      • Имя прослушивателя: укажите имя (например: «прослушиватель-http»).
      • Фронтальный IP-адрес: выберите созданный общедоступный IP-адрес.
      • Протокол: выберите «HTTP» (для начала вы можете добавить HTTPS позже).
      • Порт: 80.
    • Верхние цели:
      • Тип цели: выберите «Внутренний пул».
      • Верхний пул: выберите app-backend-pool.
      • Конфигурация серверной части: нажмите «+Добавить новый».
        • Имя серверной настройки: дайте ему имя (например, http-setting).
        • Верхний протокол: HTTP.
        • Верхний порт: 80 (или порт вашего веб-приложения).
        • Использовать специальный датчик: выберите «Нет» (для этого простого примера).
        • Нажмите «Добавить».
    • Нажмите «Добавить» в правиле маршрутизации.
  12. Нажмите «Далее: Теги».

  13. Нажмите «Далее: просмотреть + создать».
  14. Проверьте настройки и нажмите «Создать».

    • Объяснение: Этот процесс создает шлюз приложений со связанным WAF. WAF начнет проверять трафик в режиме «Обнаружение».

2. Настройка управляемых и пользовательских правил WAF

После развертывания вы можете настроить политику WAF.

  1. На портале Azure перейдите к шлюзу приложений (appgw-waf-01).
  2. На левой панели навигации в разделе «Настройки» выберите Брандмауэр веб-приложений.
  3. Щелкните имя вашей политики WAF («wafpolicy-appgw-01»).

  4. Режим политики. В разделе «Обзор» вы можете изменить «Режим» с «Обнаружение» на «Предотвращение», если уверены, что ваши правила не блокируют законный трафик.

  5. Управляемые правила:

    • На левой панели навигации политики WAF выберите Управляемые правила.
    • Убедитесь, что для параметра «Набор правил OWASP по умолчанию» (например, «OWASP_CRS/3.2») установлено значение «Включено».
    • Вы можете отключить определенные правила в управляемом наборе, если они вызывают ложные срабатывания, но делайте это с осторожностью и только после тщательного рассмотрения.
  6. Пользовательские правила:

    • На левой панели навигации политики WAF выберите Пользовательские правила.
    • Нажмите «+Добавить пользовательское правило».
    • Имя правила: дайте ему имя (например: «BloquearIPMalicioso»).
    • Приоритет: установите приоритет (меньшие числа имеют более высокий приоритет).
    • Типправило: Матч.
    • Состояние:
      • Тип переменной: RemoteAddress.
      • Оператор: IPMatch.
      • Значение: введите IP-адрес или диапазон CIDR, который вы хотите заблокировать (например: «192.168.1.10/32»).
    • Действие: выберите «Заблокировать».

    • Пояснение: Пользовательские правила позволяют определять логику блокировки на основе определенных критериев, таких как IP-адреса, заголовки HTTP, строки запроса и т. д.

  7. Нажмите Добавить, а затем Сохранить в политике WAF.

3. Мониторинг WAF и просмотр журналов

Мониторинг необходим для понимания эффективности WAF и корректировки политики.

  1. На портале Azure перейдите к шлюзу приложений (appgw-waf-01).
  2. На левой панели навигации в разделе «Мониторинг» выберите Журналы диагностики.
  3. Нажмите «+Добавить диагностическую конфигурацию».
  4. Имя диагностической конфигурации: дайте ей имя (например: diag-waf).
  5. Категории журналов: проверьте ApplicationGatewayAccessLog и ApplicationGatewayFirewallLog.
  6. Сведения о месте назначения: выберите «Отправить в рабочую область Log Analytics» и выберите свою рабочую область.
  7. Нажмите Сохранить.

  8. Через несколько минут перейдите в рабочую область Log Analytics.

  9. На левой панели навигации выберите Журналы.
  10. Используйте запросы KQL (Kusto Query Language) для анализа журналов WAF:
    • Чтобы увидеть все события WAF: кусто AzureDiagnostics | где ResourceProvider == "MICROSOFT.NETWORK" | где Категория == "ApplicationGatewayFirewallLog" | проект TimeGenerated, имя хоста_s, requestUri_s, сообщение, action_s, policy_s | заказать по TimeGenerated desc
    • Чтобы просмотреть заблокированные атаки (если WAF находится в режиме «Предотвращение»): кусто AzureDiagnostics | где ResourceProvider == "MICROSOFT.NETWORK" | где Категория == "ApplicationGatewayFirewallLog" | где action_s == "Заблокировано" | проект TimeGenerated, имя_хоста_s, requestUri_s, сообщение, ruleId_s | заказать по TimeGenerated desc

Проверка и тестирование

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

1. Тестирование распространенных атак (SQL-инъекция, XSS)

  1. Сценарий. Попробуйте получить доступ к своему веб-приложению через шлюз приложений (используя общедоступный IP-адрес или полное доменное имя) и смоделируйте атаку с помощью SQL-инъекции на URL-адрес или параметр формы.

    • Пример URL-адреса с попыткой внедрения SQL (не запускать в рабочей среде без авторизации): http://<seu_ip_publico_appgw>/index.php?id=1' ИЛИ '1'='1
    • Пример URL-адреса с попыткой XSS: http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
  2. Ожидаемое действие (режим обнаружения): если WAF находится в режиме «Обнаружение», запрос должен быть разрешен, но журналы WAF в Log Analytics должны записывать атаку и правило, которое ее обнаружило.

  3. Ожидаемое действие (режим предотвращения): если WAF находится в режиме «Предупреждение», запрос должен быть заблокирован, а браузер должен отобразить страницу с ошибкой WAF (обычно это ошибка HTTP 403 Forbidden).

  4. Проверка. Проверьте журналы WAF в Log Analytics, чтобы убедиться, что атаки были обнаружены (в режиме обнаружения) или заблокированы (в режиме предотвращения).

2. Тестирование пользовательских правил (блокировка IP)

  1. Сценарий. Попробуйте получить доступ к своему веб-приложению с IP-адреса, который вы настроили в специальном правиле блокировки IP-адресов.
  2. Ожидаемое действие: доступ должен быть заблокирован, а браузер должен отобразить страницу с ошибкой WAF.
  3. Проверка. Проверьте журналы WAF в Log Analytics, чтобы убедиться, что IP-адрес заблокирован специальным правилом.

Советы и рекомендации по безопасности

  • Запуск в режиме обнаружения: изначально всегда развертывайте WAF в режиме «Обнаружение». Внимательно отслеживайте журналы, чтобы выявить ложные срабатывания, и корректируйте правила перед переключением в режим «Предотвращение».
  • Настройка WAF: точная настройка имеет решающее значение. Отключите определенные правила, которые генерируют ложные срабатывания (блокируя легитимный трафик), или добавьте правила исключения для определенных параметров. Не отключайте целые наборы правил.
  • Пользовательские правила: используйте собственные правила для удовлетворения конкретных требований безопасности вашего приложения.o или для устранения вновь обнаруженных уязвимостей перед обновлением управляемых правил.
  • Обновления CRS: обновляйте свой управляемый набор правил (OWASP CRS), чтобы обеспечить защиту от новейших угроз. Azure WAF обычно обновляется автоматически, но проверьте версию.
  • Интеграция с Azure Front Door. Для глобальных веб-приложений или тех, которым требуется оптимизация производительности и расширенная маршрутизация, рассмотрите возможность развертывания WAF в Azure Front Door. Это обеспечивает защиту на границе глобальной сети Microsoft.
  • Мониторинг и оповещения. Настройте оповещения в Azure Monitor о событиях безопасности WAF, таких как заблокированные атаки или аномалии. Интегрируйте журналы WAF с вашим SIEM (например, Microsoft Sentinel) для централизованного просмотра.
  • Регулярное тестирование безопасности. Регулярно проводите тесты на проникновение и сканирование уязвимостей в своих веб-приложениях, чтобы выявлять новые уязвимости и проверять эффективность WAF.
  • Принцип минимальных привилегий: убедитесь, что только авторизованные пользователи имеют разрешения на настройку политик WAF и управление ими.

Распространенное устранение неполадок

  • WAF не блокирует ожидаемые атаки:
    • Убедитесь, что WAF находится в режиме «Предотвращение», а не в режиме «Обнаружение».
    • Убедитесь, что набор управляемых правил (OWASP CRS) включен.
    • Просмотрите журналы WAF в Log Analytics, чтобы узнать, была ли обнаружена атака и какое правило сработало. Возможно, вам придется настроить чувствительность CRS или добавить собственное правило.
    • Убедитесь, что нет правил исключения или белых списков, разрешающих вредоносный трафик.
  • WAF блокирует законный трафик (ложные срабатывания):
    • Начните с анализа журналов WAF в Log Analytics, чтобы определить, какое правило блокирует законный трафик.
    • Для выявленного правила вы можете:
      • Отключить определенное правило (последнее средство).
      • Добавьте правило исключения для конкретного параметра или заголовка, вызывающего ложное срабатывание.
      • Отрегулируйте порог оценки аномалий (при использовании CRS в режиме оценки аномалий).
    • Рассмотрите возможность временного возврата в режим «Обнаружение», чтобы скорректировать правила.
  • Производительность приложения снизилась после включения WAF:
    • WAF добавляет небольшую задержку из-за проверки трафика. Убедитесь, что шлюз приложений или передняя дверца имеют соответствующий размер.
    • Проверьте журналы производительности шлюза приложений в Azure Monitor.
  • WAF не связан с правильным приложением:
    • Убедитесь, что политика WAF связана с правильным шлюзом приложений или входной дверью.
    • Убедитесь, что трафик вашего веб-приложения действительно проходит через шлюз приложений/переднюю дверь с включенным WAF.

Заключение

Брандмауэр веб-приложений Azure (WAF) — это важная защита веб-приложений от множества кибератак. Обеспечивая уровень проверки и фильтрации трафика на границе сети, WAF действует как щит, защищающий от известных уязвимостей и угроз нулевого дня. Гибкость использования управляемых и настраиваемых наборов правил, а также встроенная интеграция со службами доставки приложений Azure делают Azure WAF надежным и масштабируемым решением для любой организации. Благодаря тщательному внедрению, точной настройке политик и постоянному мониторингу специалисты по безопасности могут гарантировать, что их веб-приложения остаются безопасными, доступными и соответствующими требованиям, укрепляя общую безопасность организации в условиях постоянно меняющегося ландшафта угроз.


Ссылки:

[1] Microsoft Learn. Что такое брандмауэр веб-приложений Azure?. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview. [2] Microsoft Learn. Брандмауэр веб-приложений (WAF) на шлюзе приложений Azure. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview. [3] Фонд OWASP. Топ-10 OWASP. Доступно по адресу: https://owasp.org/www-project-top-ten/ [4] Microsoft Learn. Создание политик брандмауэра.l Шлюз веб-приложений (WAF) для Шлюза приложений Azure. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft Learn. Правила и группы правил WAF CRS. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft Learn. Мониторинг и ведение журнала WAF. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics