Руководство. Создание шлюза приложений с брандмауэром веб-приложения с помощью портала Azure

В учебнике показано, как с помощью портала Azure создать шлюз приложений с брандмауэром веб-приложения (WAF). Для защиты приложения WAF использует правила OWASP. Эти правила включают защиту от атак, например от внедрения кода SQL, межсайтовых скриптов и захватов сеанса. Создав шлюз приложений, протестируйте его, чтобы убедиться в том, что он работает правильно. Шлюз приложений Azure позволяет направлять веб-трафик приложения к определенным ресурсам. Для этого портам назначаются прослушиватели, создаются определенные правила и в серверный пул добавляются соответствующие ресурсы. Для простоты в этом руководстве используется простая настройка с общедоступным интерфейсным IP-адресом, базовым прослушивателем для размещения одного сайта на этом шлюзе приложений, двух виртуальных машин Linux, используемых для внутреннего пула, и основного правила маршрутизации запросов.

В этом руководстве описано следующее:

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

Схема примера брандмауэра веб-приложения.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Необходимые компоненты

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Вход в Azure

Войдите на портал Azure.

Создание Шлюза приложений

  1. Выберите Создать ресурс в верхнем левом меню портала Azure. Откроется окно создания ресурса .

  2. Выберите "Сеть" и выберите Шлюз приложений в списке популярных служб Azure.

Вкладка "Основные сведения"

  1. На вкладке Основные сведения введите значения для следующих параметров шлюза приложений.

    • Группа ресурсов: выберите myResourceGroupAG для группы ресурсов. Выберите Создать для создания группы ресурсов, если она еще не существует.

    • Имя шлюза приложений: введите myAppGateway для имени шлюза приложений.

    • Уровень: выберите WAF версии 2.

    • Политика WAF: выберите Создать, введите имя новой политики и нажмите кнопку ОК. При этом создается базовая политика WAF с управляемым набором правил (CRS).

      Снимок экрана:

  2. В Azure для обмена между создаваемыми ресурсами необходима виртуальная сеть. Вы можете создать новую виртуальную сеть или использовать существующую. В этом примере создается виртуальная сеть одновременно, когда вы создаете шлюз приложений. Экземпляры Шлюза приложений создаются в отдельных подсетях. В этом примере вы создаете две подсети: одну для шлюза приложений, а затем добавляете другую для внутренних серверов.

    В разделе Настройка виртуальной сети создайте виртуальную сеть, выбрав команду Создать. В открываемом окне "Создание виртуальной сети" введите следующие значения, чтобы создать виртуальную сеть и подсеть:

    • Имя. Введите myVNet для имени виртуальной сети.

    • Адресное пространство : примите диапазон адресов 10.0.0.0/16 .

    • Имя подсети (Шлюз приложений подсети): область подсетей отображает подсеть с именем Default. Измените имя этой подсети на myAGSubnet и оставьте диапазон адресов IPv4 по умолчанию 10.0.0.0/24.
      Подсеть шлюза приложений может содержать только шлюзы приложений. Другие ресурсы запрещены.

      Выберите ОК, чтобы закрыть окно Создание виртуальной сети и сохранить настройки виртуальной сети.

      Снимок экрана: создание шлюза приложений: создание виртуальной сети.

  3. На вкладке "Основные сведения" примите значения по умолчанию для других параметров, а затем нажмите кнопку Next: Frontends.

Вкладка "Интерфейсные серверы"

  1. На вкладке Интерфейсные серверы убедитесь, что для параметра Тип IP-адреса интерфейсных серверов установлено значение Общедоступный.
    Вы можете настроить внешний IP-адрес как общедоступный или как в случае использования. В этом примере вы выбираете общедоступный IP-адрес внешнего интерфейса.

    Примечание.

    Для SKU Шлюз приложений версии 2 общедоступные и внешние IP-адреса поддерживаются сегодня. В настоящее время не поддерживается только частная интерфейсная IP-конфигурация.

  2. Выберите команду Добавить новый для параметра Общедоступный IP-адрес и введите myAGPublicIPAddress в качестве имени общедоступного IP-адреса. Затем нажмите кнопку ОК.

    Снимок экрана: создание шлюза приложений: интерфейсы.

  3. По завершении выберите Далее: серверные компоненты.

Вкладка "Серверные компоненты"

Серверный пул используется для перенаправления запросов на внутренние серверы, на которых обслуживается запрос. Серверные пулы могут состоять из сетевых адаптеров, масштабируемых наборов виртуальных машин, общедоступных IP-адресов, внутренних IP-адресов, полных доменных имен (FQDN) и мультитенантных серверных серверов, таких как служба приложение Azure. В этом примере вы создадите пустой внутренний пул с шлюзом приложений, а затем добавьте целевые объекты серверной части в внутренний пул.

  1. На вкладке Серверные компоненты выберите элемент Добавление серверного пула.

  2. В открывшемся окне Добавить внутренний пул введите следующие значения для создания пустого внутреннего пула.

    • Имя: введите myBackendPool для имени внутреннего пула.
    • Добавьте внутренний пул без целевых объектов: выберите "Да ", чтобы создать внутренний пул без целевых объектов. После создания шлюза приложения вы добавите серверные целевые объекты.
  3. В окне Добавление внутреннего пула выберите Добавить, чтобы сохранить конфигурацию внутреннего пула и вернуться на вкладку Серверные компоненты.

    Снимок экрана: создание шлюза приложений: серверные части.

  4. На вкладке "Серверные части" нажмите кнопку "Далее: конфигурация".

Вкладка конфигурации

На вкладке "Конфигурация" вы подключаете интерфейсный и внутренний пул, созданный с помощью правила маршрутизации.

  1. Выберите элемент Добавление правила маршрутизации в столбце Правила маршрутизации.

  2. В открывшемся окне Добавление правила маршрутизации введите myRoutingRule в поле Имя правила.

  3. В поле Приоритет ведите нужный номер.

  4. Для правила маршрутизации требуется прослушиватель. На вкладке Прослушиватель в окне Добавление правила маршрутизации введите следующие значения для прослушивателя.

    • Имя прослушивателя: введите myListener для имени прослушивателя.

    • Интерфейсный IP-протокол: выберите общедоступный IPv4 , чтобы выбрать общедоступный IP-адрес, созданный для внешнего интерфейса.

      Примите значения по умолчанию для других параметров на вкладке Прослушиватель, а затем выберите вкладку Серверные целевые объекты, чтобы настроить остальную часть правила маршрутизации.

    Снимок экрана:

  5. На вкладке Серверные целевые объекты выберите значение myBackendPool для параметра Серверный целевой объект.

  6. В области Параметры серверной части щелкните Добавить, чтобы создать новый параметр серверной части. Этот параметр определяет поведение для правила маршрутизации. В открывшемся окне Добавление параметра серверной части введите myBackendSetting в поле Имя параметра серверной части. Сохраните значения по умолчанию для других параметров в этом окне, а затем щелкните Добавить, чтобы вернуться к окну Добавление правила маршрутизации.

    Снимок экрана:

  7. В окне Добавление правила маршрутизации выберите Добавить, чтобы сохранить правило маршрутизации и вернуться на вкладку Конфигурация.

    Снимок экрана:

  8. Выберите Далее: теги и щелкните Далее: просмотр и создание.

Вкладка "Просмотр и создание"

Просмотрите параметры на вкладке Просмотр и создание, а затем выберите Создать, чтобы создать виртуальную сеть, общедоступный IP-адрес и шлюз приложения. Для создания шлюза приложений Azure может потребоваться несколько минут.

Дождитесь успешного завершения развертывания перед переходом к следующему разделу.

Добавление подсети внутреннего сервера

  1. Откройте виртуальную сеть myVNet.
  2. В разделе Параметры выберите Подсети.
  3. Выберите +Подсеть.
  4. В поле "Имя" введите myBackendSubnet.
  5. Для начального адреса введите 10.0.1.0.
  6. Нажмите кнопку "Добавить ", чтобы добавить подсеть.

Добавление серверных целевых объектов

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

Для этого сделайте следующее:

  1. Создайте две новые виртуальные машины Linux, myVM и myVM2, которые будут использоваться в качестве серверных серверов.
  2. Установите NGINX на виртуальных машинах, чтобы убедиться, что шлюз приложений был успешно создан.
  3. Добавить внутренние серверы к внутренним пулам.

Создание виртуальной машины

  1. На портале Azure выберите Создать ресурс. Откроется окно создания ресурса .

  2. В разделе "Виртуальная машина" выберите "Создать".

  3. На вкладке Основы введите для следующих параметров виртуальной машины такие значения:

    • Группа ресурсов: выберите myResourceGroupAG для имени группы ресурсов.
    • Имя виртуальной машины: введите myVM для имени виртуальной машины.
    • Изображение: Ubuntu Server 20.04 LTS — 2-го поколения.
    • Тип проверки подлинности: пароль
    • Имя пользователя: введите имя имени администратора.
    • Пароль. Введите пароль администратора.
    • В поле Общедоступные входящие порты выберите значение Нет.
  4. Примите другие значения по умолчанию и нажмите кнопку Далее: Диски.

  5. Примите вкладку "Диски" по умолчанию и нажмите кнопку "Далее: Сеть".

  6. На вкладке Сети убедитесь, что для параметра Виртуальная сеть выбрано значение myVNet, а для параметра Подсеть — значение myBackendSubnet.

  7. В поле Общедоступный IP-адрес выберите значение Нет.

  8. Примите другие значения по умолчанию и нажмите кнопку "Далее: управление".

  9. Нажмите кнопку "Далее": мониторинг, установите диагностика загрузки для отключения. Примите другие значения по умолчанию и выберите Review + create (Просмотр и создание).

  10. На вкладке Review + create (Просмотр и создание) проверьте параметры, устраните ошибки проверки, а затем выберите Создать.

  11. Прежде чем продолжить, дождитесь завершения создания виртуальной машины.

Установка NGINX для тестирования

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

  1. Откройте Bash Cloud Shell. Для этого выберите значок Cloud Shell в верхней панели навигации портал Azure и выберите Bash в раскрывающемся списке.

    Снимок экрана: Bash Cloud Shell.

  2. Убедитесь, что сеанс bash настроен для вашей подписки:

    az account set --subscription "<your subscription name>"

  3. Выполните следующую команду, чтобы установить NGINX на виртуальной машине:

     az vm extension set \
     --publisher Microsoft.Azure.Extensions \
     --version 2.0 \
     --name CustomScript \
     --resource-group myResourceGroupAG \
     --vm-name myVM \
     --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
    
  4. Создайте вторую виртуальную машину и установите NGINX, выполнив указанные ранее действия. Используйте myVM2 для имени виртуальной машины и для --vm-name параметра командлета.

Добавление серверов во внутренние пулы

  1. Выберите Все ресурсы, а затем — myAppGateway.

  2. Выберите Серверные пулы в меню слева.

  3. Выберите myBackendPool.

  4. В разделе Тип цели выберите Виртуальная машина из раскрывающегося списка.

  5. В разделе Целевой объект выберите связанный сетевой интерфейс для myVM в раскрывающемся списке.

  6. Повторите эти действия для myVM2.

    Добавление внутренних серверов

  7. Выберите Сохранить.

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

Тестирование шлюза приложений

Хотя NGINX не требуется для создания шлюза приложений, вы установили его, чтобы убедиться, что Azure успешно создал шлюз приложений. Используйте веб-службу для тестирования шлюза приложений:

  1. Найдите общедоступный IP-адрес для шлюза приложений на странице Обзор. Снимок экрана: Шлюз приложений общедоступный IP-адрес на странице обзора.

    Вы также можете выбрать Все ресурсы, ввести myAGPublicIPAddress в поле поиска, а затем выбрать его в результатах поиска. Общедоступный IP-адрес отобразится в Azure на странице Обзор.

  2. Скопируйте общедоступный IP-адрес и вставьте его в адресную строку браузера.

  3. Проверьте ответ. Допустимый ответ подтверждает, что шлюз приложений создан и может успешно подключиться к серверу.

    Снимок экрана: тестирование шлюза приложений.

Очистка ресурсов

Если вам уже не нужны ресурсы, созданные с помощью шлюза приложений, удалите группу ресурсов. Удалив ее, вы также удалите шлюз приложений и все связанные с ним ресурсы.

Чтобы удалить группу ресурсов:

  1. На портале Azure в меню слева выберите Группы ресурсов.
  2. На странице Группы ресурсов выполните поиск группы myResourceGroupAG в списке и выберите ее.
  3. На странице группы ресурсов выберите Удалить группу ресурсов.
  4. Введите myResourceGroupAG в поле Введите имя группы ресурсов, а затем выберите Удалить.

Следующие шаги

Web application firewall for Azure Application Gateway (Брандмауэр веб-приложений для шлюза приложений Azure)