Защита веб-приложений с помощью брандмауэра веб-приложений 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 вам потребуются следующие элементы:
- Активная подписка Azure: подписка Azure для создания ресурсов и управления ими.
- Административный доступ: учетная запись с необходимыми разрешениями для создания и управления такими ресурсами, как шлюзы приложений, входные дверцы и политики WAF (например, «Соавтор» или «Администратор сети»).
- Существующее веб-приложение: веб-приложение (размещенное в Azure или другом месте), которое вы хотите защитить. В этом руководстве мы будем использовать простое веб-приложение, доступ к которому будет осуществляться через шлюз приложений.
- Виртуальная сеть (VNet) и подсети: виртуальная сеть и подсети, настроенные для шлюза приложений и веб-приложения.
Шаг за шагом: реализация Azure WAF с помощью шлюза приложений
Давайте настроим Azure WAF для защитывеб-приложение с использованием шлюза приложений Azure.
1. Создание шлюза приложений Azure с помощью WAF
- Откройте браузер и перейдите на портал Azure: https://portal.azure.com.
- Войдите в систему под учетной записью, имеющей необходимые разрешения.
- В верхнем поле поиска введите «Шлюз приложений» и выберите его из результатов.
-
Нажмите «+ Создать».
-
Основы:
- Подписка: выберите подписку.
- Группа ресурсов: создайте новую группу ресурсов (например,
rg-waf-appgw) или выберите существующую. - Имя шлюза приложений: укажите имя (например:
appgw-waf-01). - Регион: выберите регион.
- Уровень: выберите «Стандартный v2» (WAF доступен только на уровне v2).
- Включить WAF: выберите «Да».
- Имя политики WAF: дайте политике WAF имя (например,
wafpolicy-appgw-01). - Режим WAF: начните с «Обнаружения», чтобы отслеживать и корректировать правила, а затем переходите к «Предотвращению».
-
Нажмите «Далее: Интерфейсы».
-
Внешние интерфейсы:
- Тип внешнего IP-адреса: выберите «Общедоступный».
- Публичный IP-адрес: нажмите «+Добавить новый» и дайте общедоступному IP-адресу имя (например: «pip-appgw-waf»).
-
Нажмите «Далее: Серверные части».
-
Бэкэнды:
- Нажмите «+Добавить внутренний пул».
- Имя серверного пула: дайте ему имя (например,
app-backend-pool). - Добавить серверный пул без целевых объектов: выберите «Нет».
- Тип назначения: выберите «IP-адрес или полное доменное имя».
- IP-адрес/полное доменное имя. Введите IP-адрес или полное доменное имя вашего веб-приложения (например: «10.0.0.4» для виртуальной машины в виртуальной сети или полное доменное имя службы приложений).
- Нажмите «Добавить».
-
Нажмите «Далее: Конфигурация».
-
Настройка:
- Настройки маршрутизации: нажмите «+Добавить правило маршрутизации».
- Имя правила: дайте ему имя (например:
rule-http). - Приоритет: оставьте значение по умолчанию.
- Слушатель:
- Имя прослушивателя: укажите имя (например: «прослушиватель-http»).
- Фронтальный IP-адрес: выберите созданный общедоступный IP-адрес.
- Протокол: выберите «HTTP» (для начала вы можете добавить HTTPS позже).
- Порт:
80.
- Верхние цели:
- Тип цели: выберите «Внутренний пул».
- Верхний пул: выберите
app-backend-pool. - Конфигурация серверной части: нажмите «+Добавить новый».
- Имя серверной настройки: дайте ему имя (например,
http-setting). - Верхний протокол:
HTTP. - Верхний порт:
80(или порт вашего веб-приложения). - Использовать специальный датчик: выберите «Нет» (для этого простого примера).
- Нажмите «Добавить».
- Имя серверной настройки: дайте ему имя (например,
- Нажмите «Добавить» в правиле маршрутизации.
-
Нажмите «Далее: Теги».
- Нажмите «Далее: просмотреть + создать».
-
Проверьте настройки и нажмите «Создать».
- Объяснение: Этот процесс создает шлюз приложений со связанным WAF. WAF начнет проверять трафик в режиме «Обнаружение».
2. Настройка управляемых и пользовательских правил WAF
После развертывания вы можете настроить политику WAF.
- На портале Azure перейдите к шлюзу приложений (appgw-waf-01).
- На левой панели навигации в разделе «Настройки» выберите Брандмауэр веб-приложений.
-
Щелкните имя вашей политики WAF («wafpolicy-appgw-01»).
-
Режим политики. В разделе «Обзор» вы можете изменить «Режим» с «Обнаружение» на «Предотвращение», если уверены, что ваши правила не блокируют законный трафик.
-
Управляемые правила:
- На левой панели навигации политики WAF выберите Управляемые правила.
- Убедитесь, что для параметра «Набор правил OWASP по умолчанию» (например, «OWASP_CRS/3.2») установлено значение «Включено».
- Вы можете отключить определенные правила в управляемом наборе, если они вызывают ложные срабатывания, но делайте это с осторожностью и только после тщательного рассмотрения.
-
Пользовательские правила:
- На левой панели навигации политики WAF выберите Пользовательские правила.
- Нажмите «+Добавить пользовательское правило».
- Имя правила: дайте ему имя (например: «BloquearIPMalicioso»).
- Приоритет: установите приоритет (меньшие числа имеют более высокий приоритет).
- Типправило:
Матч. - Состояние:
- Тип переменной:
RemoteAddress. - Оператор:
IPMatch. - Значение: введите IP-адрес или диапазон CIDR, который вы хотите заблокировать (например: «192.168.1.10/32»).
- Тип переменной:
-
Действие: выберите «Заблокировать».
-
Пояснение: Пользовательские правила позволяют определять логику блокировки на основе определенных критериев, таких как IP-адреса, заголовки HTTP, строки запроса и т. д.
-
Нажмите Добавить, а затем Сохранить в политике WAF.
3. Мониторинг WAF и просмотр журналов
Мониторинг необходим для понимания эффективности WAF и корректировки политики.
- На портале Azure перейдите к шлюзу приложений (appgw-waf-01).
- На левой панели навигации в разделе «Мониторинг» выберите Журналы диагностики.
- Нажмите «+Добавить диагностическую конфигурацию».
- Имя диагностической конфигурации: дайте ей имя (например:
diag-waf). - Категории журналов: проверьте
ApplicationGatewayAccessLogиApplicationGatewayFirewallLog. - Сведения о месте назначения: выберите «Отправить в рабочую область Log Analytics» и выберите свою рабочую область.
-
Нажмите Сохранить.
-
Через несколько минут перейдите в рабочую область Log Analytics.
- На левой панели навигации выберите Журналы.
- Используйте запросы 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:
Проверка и тестирование
Тестирование WAF имеет решающее значение для обеспечения того, чтобы он блокировал ожидаемые атаки и не блокировал законный трафик (ложные срабатывания).
1. Тестирование распространенных атак (SQL-инъекция, XSS)
-
Сценарий. Попробуйте получить доступ к своему веб-приложению через шлюз приложений (используя общедоступный 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>
- Пример URL-адреса с попыткой внедрения SQL (не запускать в рабочей среде без авторизации):
-
Ожидаемое действие (режим обнаружения): если WAF находится в режиме «Обнаружение», запрос должен быть разрешен, но журналы WAF в Log Analytics должны записывать атаку и правило, которое ее обнаружило.
-
Ожидаемое действие (режим предотвращения): если WAF находится в режиме «Предупреждение», запрос должен быть заблокирован, а браузер должен отобразить страницу с ошибкой WAF (обычно это ошибка HTTP 403 Forbidden).
-
Проверка. Проверьте журналы WAF в Log Analytics, чтобы убедиться, что атаки были обнаружены (в режиме обнаружения) или заблокированы (в режиме предотвращения).
2. Тестирование пользовательских правил (блокировка IP)
- Сценарий. Попробуйте получить доступ к своему веб-приложению с IP-адреса, который вы настроили в специальном правиле блокировки IP-адресов.
- Ожидаемое действие: доступ должен быть заблокирован, а браузер должен отобразить страницу с ошибкой WAF.
- Проверка. Проверьте журналы 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