Поделиться через


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

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

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

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

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

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

  • AzureFirewallSubnet — в этой подсети находится брандмауэр.
  • Workload-SN — в этой подсети находится сервер рабочей нагрузки. Трафик этой подсети проходит через брандмауэр.
  • AzureBastionSubnet — служба Azure Bastion находится в этой подсети, обеспечивая безопасный доступ к серверу приложений.

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

В этой статье вы узнаете, как:

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

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

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

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

  • Для этой статьи требуется версия 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 AzureBastionSubnet \
  --resource-group Test-FW-RG \
  --vnet-name Test-FW-VN   \
  --address-prefix 10.0.3.0/26

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

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

az network nic create \
    --resource-group Test-FW-RG \
    --name Srv-Work-NIC \
   --vnet-name Test-FW-VN \
   --subnet Workload-SN \
   --dns-servers <replace with External DNS ip #1> <replace with External DNS ip #2>

Теперь создайте виртуальную машину с рабочей нагрузкой. Следующая команда создает виртуальную машину Ubuntu Server 22.04 LTS с проверкой подлинности ключа SSH и устанавливает Nginx. Когда появится запрос, сохраните созданный закрытый ключ в файл .pem, чтобы использовать его при подключении через Azure Bastion.

az vm create \
    --resource-group Test-FW-RG \
    --name Srv-Work \
    --location eastus \
    --image Ubuntu2204 \
    --nics Srv-Work-NIC \
    --admin-username azureuser \
    --generate-ssh-keys \
    --custom-data cloud-init.txt

cloud-init.txt Создайте файл со следующим содержимым для установки Nginx:

#cloud-config
package_upgrade: true
packages:
  - nginx
runcmd:
  - echo '<h1>'$(hostname)'</h1>' | sudo tee /var/www/html/index.html

Примечание.

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

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

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

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

Дополнительные сведения об исходящих подключениях в 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 --resource-group Test-FW-RG --firewall-name Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"

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

Развертывание Бастиона Azure

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

az network public-ip create \
    --resource-group Test-FW-RG \
    --name bastion-pip \
    --sku Standard \
    --location eastus
az network bastion create \
    --name Test-Bastion \
    --public-ip-address bastion-pip \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN \
    --location eastus \
    --sku Basic

Примечание.

Развертывание Бастиона Azure может занять около 10 минут.

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

Создание таблицы маршрутов с отключенным распространением маршрутов 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 \
    --name Workload-SN \
    --resource-group Test-FW-RG \
    --vnet-name Test-FW-VN \
    --address-prefixes 10.0.2.0/24 \
    --route-table Firewall-rt-table

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

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

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

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

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

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

az network firewall network-rule create \
   --collection-name Net-Coll01 \
   --destination-addresses <replace with DNS ip #1> <replace with DNS ip #2> \
   --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 \
    --resource-group Test-FW-RG \
    --name Srv-Work
    
  2. На портале Azure перейдите к виртуальной машине Srv-Work и выберите Подключиться>Подключиться через Bastion.

  3. Укажите имя пользователя azureuser и отправьте файл закрытого ключа .pem , созданный при создании виртуальной машины. Выберите "Подключиться" , чтобы открыть сеанс SSH.

  4. В сеансе SSH выполните следующие команды, чтобы проверить разрешение DNS:

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

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

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

    curl https://www.microsoft.com
    curl https://www.google.com
    

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

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

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

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

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

az group delete \
  --name Test-FW-RG

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