Развертывание и настройка Брандмауэра 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
$SecurePassword = ConvertTo-SecureString "<choose a password>" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("<choose a user name>", $SecurePassword);
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate -Credential $Credential
$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
Примечание.
Azure предоставляет IP-адрес исходящего доступа по умолчанию для виртуальных машин, которые либо не назначены общедоступным IP-адресом, либо находятся в серверном пуле внутренней подсистемы балансировки нагрузки Azure. Механизм IP-адреса исходящего трафика по умолчанию предоставляет исходящий IP-адрес, который нельзя настроить.
IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:
- Общедоступный IP-адрес назначается виртуальной машине.
- Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
- Ресурс шлюза NAT Azure назначается подсети виртуальной машины.
Виртуальные машины, созданные с помощью масштабируемых наборов виртуальных машин в гибком режиме оркестрации, не имеют исходящего доступа по умолчанию.
Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.
Развертывание брандмауэра
Теперь разверните брандмауэр в виртуальной сети.
# 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
#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
Настройка правила приложения
Правило приложения разрешает исходящий доступ к www.google.com.
$AppRule1 = New-AzFirewallApplicationRule -Name Allow-Google -SourceAddress 10.0.2.0/24 `
-Protocol http, https -TargetFqdn www.google.com
$AppRuleCollection = New-AzFirewallApplicationRuleCollection -Name App-Coll01 `
-Priority 200 -ActionType Allow -Rule $AppRule1
$Azfw.ApplicationRuleCollections.Add($AppRuleCollection)
Set-AzFirewall -AzureFirewall $Azfw
Брандмауэр Azure содержит встроенную коллекцию правил для целевых полных доменных имен инфраструктуры, которые разрешены по умолчанию. Эти доменные имена предназначены для платформы и не могут использоваться для других целей. См. дополнительные сведения об FQDN инфраструктуры.
Настройка правила сети
Это сетевое правило разрешает исходящий доступ к двум IP-адресам через порт 53 (DNS).
$NetRule1 = New-AzFirewallNetworkRule -Name "Allow-DNS" -Protocol UDP -SourceAddress 10.0.2.0/24 `
-DestinationAddress 209.244.0.3,209.244.0.4 -DestinationPort 53
$NetRuleCollection = New-AzFirewallNetworkRuleCollection -Name RCNet01 -Priority 200 `
-Rule $NetRule1 -ActionType "Allow"
$Azfw.NetworkRuleCollections.Add($NetRuleCollection)
Set-AzFirewall -AzureFirewall $Azfw
Изменение первичного и вторичного адресов DNS для сетевого интерфейса Srv-Work
В этой процедуре с целью тестирования настройте адреса основного и дополнительного DNS-серверов. Это не является общим требованием службы "Брандмауэр Azure".
$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface
тестирование брандмауэра.
Теперь проверьте брандмауэр, чтобы убедиться, что он работает должным образом.
Подключите виртуальную машину Srv-Work через Бастион и выполните вход.
На виртуальной машине Srv-Work откройте окно PowerShell и выполните следующие команды:
nslookup www.google.com nslookup www.microsoft.com
Обе команды должны вернуть ответы, подтверждающие успешное прохождение DNS-запросов через брандмауэр.
Выполните следующие команды:
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