Развертывание и настройка Брандмауэра Azure с помощью Azure CLI

Управление доступом исходящих сетевых подключений является важной частью общего плана безопасности сети. Например, вы можете ограничить доступ к веб-сайтам или исходящим IP-адресам и портам, которые могут быть доступными.

Вы можете управлять доступом к исходящей сети из подсети Azure только с помощью Брандмауэра Azure. Брандмауэр Azure позволяет настроить:

  • Правила приложений, определяющие полные доменные имена (FQDN), к которым можно получить доступ из подсети. Полное доменное имя может также содержать экземпляры SQL.
  • Правила сети, определяющие адрес источника, протокол, порт назначения и адрес назначения.

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

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

  • AzureFirewallSubnet — в этой подсети находится брандмауэр.
  • Workload-SN — в этой подсети находится сервер рабочей нагрузки. Трафик этой подсети проходит через брандмауэр.
  • Jump-SN — в этой подсети находится сервер перехода. Сервер перехода имеет общедоступный IP-адрес, к которому можно подключиться с помощью удаленного рабочего стола. Затем вы можете подключиться к серверу рабочей нагрузки (используя другой удаленный рабочий стол).

Схема сетевой инфраструктуры.

Вы узнаете, как выполнять следующие задачи:

  • настройка тестовой сетевой среды;
  • развертывание брандмауэра;
  • Создание маршрута по умолчанию
  • настройка правила приложения для предоставления доступа к www.google.com
  • настройка сетевых правил для предоставления доступа к внешним DNS-серверам;
  • тестирование брандмауэра.

Вы можете также выполнить эту процедуру, используя портал Azure или Azure PowerShell.

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

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

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

  • Для этой статьи требуется версия 2.55.0 или более поздняя версия Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

Настройка сети

Сначала создайте группу ресурсов, необходимых для развертывания брандмауэра. Затем создайте виртуальную сеть, подсети и тестовые серверы.

Создание или изменение группы ресурсов

Группа ресурсов содержит все ресурсы, необходимые для этого развертывания.

az group create --name Test-FW-RG --location eastus

Создание виртуальной сети

Эта виртуальная сеть содержит три подсети.

Примечание.

Размер подсети AzureFirewallSubnet равен /26. Дополнительные сведения о размере подсети см. в статье с часто задаваемыми вопросами о Брандмауэре Azure.

az network vnet create \
  --name Test-FW-VN \
  --resource-group Test-FW-RG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name AzureFirewallSubnet \
  --subnet-prefix 10.0.1.0/26
az network vnet subnet create \
  --name Workload-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.2.0/24
az network vnet subnet create \
  --name Jump-SN \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/24

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

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

Создайте виртуальную машину Srv-Jump.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Jump \
    --location eastus \
    --image win2016datacenter \
    --vnet-name Test-FW-VN \
    --subnet Jump-SN \
    --admin-username azureadmin
az vm open-port --port 3389 --resource-group Test-FW-RG --name Srv-Jump

Создайте сетевой адаптер для Srv-Work с конкретными IP-адресами DNS-сервера и без общедоступного IP-адреса для тестирования.

az network nic create \
    -g Test-FW-RG \
    -n Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --public-ip-address "" \
   --dns-servers 209.244.0.3 209.244.0.4

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

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image win2016datacenter \
    --nics Srv-Work-NIC \
    --admin-username azureadmin

Примечание.

Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.

IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:

  • Общедоступный IP-адрес назначается виртуальной машине.
  • Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
  • Ресурс шлюза NAT Azure назначается подсети виртуальной машины.

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

Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.

Развертывание брандмауэра

Теперь разверните брандмауэр в виртуальной сети.

az network firewall create \
    --name Test-FW01 \
    --resource-group Test-FW-RG \
    --location eastus
az network public-ip create \
    --name fw-pip \
    --resource-group Test-FW-RG \
    --location eastus \
    --allocation-method static \
    --sku standard
az network firewall ip-config create \
    --firewall-name Test-FW01 \
    --name FW-config \
    --public-ip-address fw-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN
az network firewall update \
    --name Test-FW01 \
    --resource-group Test-FW-RG 
az network public-ip show \
    --name fw-pip \
    --resource-group Test-FW-RG
fwprivaddr="$(az network firewall ip-config list -g Test-FW-RG -f Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

Запишите частный IP-адрес. Вы будете использовать его позже при создании маршрута по умолчанию.

Создание маршрута по умолчанию

Создание таблицы маршрутов с отключенным распространением маршрутов BGP

az network route-table create \
    --name Firewall-rt-table \
    --resource-group Test-FW-RG \
    --location eastus \
    --disable-bgp-route-propagation true

Создайте маршрут.

az network route-table route create \
  --resource-group Test-FW-RG \
  --name DG-Route \
  --route-table-name Firewall-rt-table \
  --address-prefix 0.0.0.0/0 \
  --next-hop-type VirtualAppliance \
  --next-hop-ip-address $fwprivaddr

Свяжите таблицу маршрутов с подсетью.

az network vnet subnet update \
    -n Workload-SN \
    -g Test-FW-RG \
    --vnet-name Test-FW-VN \
    --address-prefixes 10.0.2.0/24 \
    --route-table Firewall-rt-table

Настройка правила приложения

Правило приложения разрешает исходящий доступ к www.google.com.

az network firewall application-rule create \
   --collection-name App-Coll01 \
   --firewall-name Test-FW01 \
   --name Allow-Google \
   --protocols Http=80 Https=443 \
   --resource-group Test-FW-RG \
   --target-fqdns www.google.com \
   --source-addresses 10.0.2.0/24 \
   --priority 200 \
   --action Allow

Брандмауэр Azure содержит встроенную коллекцию правил для целевых полных доменных имен инфраструктуры, которые разрешены по умолчанию. Эти доменные имена предназначены для платформы и не могут использоваться для других целей. См. дополнительные сведения об FQDN инфраструктуры.

Настройка правила сети

Это сетевое правило разрешает исходящий доступ к двум IP-адресам через порт 53 (DNS).

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses 209.244.0.3 209.244.0.4 \
   --destination-ports 53 \
   --firewall-name Test-FW01 \
   --name Allow-DNS \
   --protocols UDP \
   --resource-group Test-FW-RG \
   --priority 200 \
   --source-addresses 10.0.2.0/24 \
   --action Allow

тестирование брандмауэра.

Теперь проверьте брандмауэр, чтобы убедиться, что он работает должным образом.

  1. Запишите частный IP-адрес для виртуальной машины Srv-Work.

    az vm list-ip-addresses \
    -g Test-FW-RG \
    -n Srv-Work
    
  2. Подключите удаленный рабочий стол к виртуальной машине Srv-Jump и выполните вход. Откройте из нее подключение удаленного рабочего стола по частному IP-адресу Srv-Work и выполните вход.

  3. На виртуальной машине Srv-Work откройте окно PowerShell и выполните следующие команды:

    nslookup www.google.com
    nslookup www.microsoft.com
    

    Обе команды должны вернуть ответы, подтверждающие успешное прохождение DNS-запросов через брандмауэр.

  4. Выполните следующие команды:

    Invoke-WebRequest -Uri https://www.google.com
    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    Запросы www.google.com должны выполняться успешно, а запросы www.microsoft.com — завершаться ошибкой. Это подтвердит, что правила брандмауэра работают правильно.

Итак, теперь вы убедились в том, что правила брандмауэра работают:

  • Вы можете разрешать имена DNS с помощью настроенного внешнего DNS-сервера.
  • Вы можете перейти только к одному разрешенному имени FQDN.

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

Вы можете сохранить ресурсы брандмауэра для следующего руководства или удалить группу ресурсов Test-FW-RG вместе со всеми ресурсами брандмауэра, если они больше не нужны.

az group delete \
  -n Test-FW-RG

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