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


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

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

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

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

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

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

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

Дополнительные сведения о Бастионе Azure см. в статье Что такое Бастион Azure.

Внимание

Почасовая цена начинается с момента развертывания Бастиона независимо от использования исходящих данных. Дополнительные сведения см. в разделе "Цены и номера SKU". Если вы развертываете Бастион в рамках руководства или теста, рекомендуется удалить этот ресурс после завершения работы с ним.

Схема, показывющая сетевую инфраструктуру брандмауэра.

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

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

При желании эти инструкции можно выполнить с помощью портала Azure.

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

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

В этой процедуре подразумевается, что PowerShell выполняется на локальном компьютере. Необходимо установить модуль Azure PowerShell. Чтобы узнать версию, выполните команду Get-Module -ListAvailable Az. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. После проверки версии PowerShell выполните командлет Connect-AzAccount, чтобы создать подключение к Azure.

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

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

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

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

New-AzResourceGroup -Name Test-FW-RG -Location "East US"

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

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

Примечание.

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

$Bastionsub = New-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -AddressPrefix 10.0.0.0/27
$FWsub = New-AzVirtualNetworkSubnetConfig -Name AzureFirewallSubnet -AddressPrefix 10.0.1.0/26
$Worksub = New-AzVirtualNetworkSubnetConfig -Name Workload-SN -AddressPrefix 10.0.2.0/24

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

$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub

Создание общедоступного IP-адреса для узла Бастиона Azure

$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
   -Name Bastion-pip -AllocationMethod static -Sku standard

Создание узла-бастиона Azure

New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet

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

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

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

#Create the NIC
$wsn = Get-AzVirtualNetworkSubnetConfig -Name  Workload-SN -VirtualNetwork $testvnet
$NIC01 = New-AzNetworkInterface -Name Srv-Work -ResourceGroupName Test-FW-RG -Location "East us" -Subnet $wsn

#Define the virtual machine
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC01.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2019-Datacenter' -Version latest

#Create the virtual machine
New-AzVM -ResourceGroupName Test-FW-RG -Location "East US" -VM $VirtualMachine -Verbose

Создание политики брандмауэра

$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus

Настройка правила приложения для политики брандмауэра

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

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name AppRCGroup -Priority 100 -FirewallPolicyObject $fwpol
$apprule1 = New-AzFirewallPolicyApplicationRule -Name Allow-google -SourceAddress "10.0.2.0/24" -Protocol "http:80","https:443" -TargetFqdn www.google.com
$appcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name App-coll01 -Priority 100 -Rule $appRule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 100 -RuleCollection $appcoll1 -FirewallPolicyObject $fwPol

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

Настройка сетевого правила для политики брандмауэра

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

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name NetRCGroup -Priority 200 -FirewallPolicyObject $fwpol
$netrule1 = New-AzFirewallPolicyNetworkRule -name Allow-DNS -protocol UDP -sourceaddress 10.0.2.0/24 -destinationaddress 209.244.0.3,209.244.0.4 -destinationport 53
$netcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name Net-coll01 -Priority 200 -Rule $netrule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 200 -RuleCollection $netcoll1 -FirewallPolicyObject $fwPol

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

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

# Get a Public IP for the firewall
$FWpip = New-AzPublicIpAddress -Name "fw-pip" -ResourceGroupName Test-FW-RG `
  -Location "East US" -AllocationMethod Static -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall -Name Test-FW01 -ResourceGroupName Test-FW-RG -Location "East US" -VirtualNetwork $testVnet -PublicIpAddress $FWpip -FirewallPolicyId $fwpol.Id


#Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP

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

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

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

$routeTableDG = New-AzRouteTable `
  -Name Firewall-rt-table `
  -ResourceGroupName Test-FW-RG `
  -location "East US" `
  -DisableBgpRoutePropagation

#Create a route
 Add-AzRouteConfig `
  -Name "DG-Route" `
  -RouteTable $routeTableDG `
  -AddressPrefix 0.0.0.0/0 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress $AzfwPrivateIP `
 | Set-AzRouteTable

#Associate the route table to the subnet

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $testVnet `
  -Name Workload-SN `
  -AddressPrefix 10.0.2.0/24 `
  -RouteTable $routeTableDG | Set-AzVirtualNetwork

Изменение первичного и вторичного адресов DNS для сетевого интерфейса Srv-Work

В этой процедуре с целью тестирования настройте адреса основного и дополнительного DNS-серверов. Это не является общим требованием службы "Брандмауэр Azure".

$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface

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

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

  1. Подключите виртуальную машину Srv-Work через Бастион и выполните вход.

    Подключение через Бастион.

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

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

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

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

    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, которая содержит все связанные с брандмауэром ресурсы.

Remove-AzResourceGroup -Name Test-FW-RG

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