Все больше предприятий начинают помимо собственных ЦОД, использовать облачные ресурсы. Как и в случае с внутренней (on-premises) инфраструктурой, в облаке также возникает необходимость создавать различные зоны безопасности (например, доверенные зоны и DMZ).
В собственной инфраструктуре для сегментации сети как правило используются маршрутизаторы, коммутаторы 3 уровня и файерволы. Однако, в случае использования Azure, это не применимо. В Azure управлять трафиком между различными подсетями можно с помощью технологии Network Security Group (NSG). С помощью NSG администратор может ограничить доступ из одной подсети Azure в другую, а также в собственную сеть предприятия.
Группы сетевой безопасности позволяют создавать различные правила и управлять входящим и исходящим трафиком как отдельной ВМ, так и целой подсети.
В моем случае цель использования NSG – развёртывание в Azure службы ADFS. Типичная конфигурация представляет собой 2 DC, 2 сервера ADFS, один сервер ADSync в доверенной подсети и 2 сервера WAP в подсети DMZ.
Настройка групп NSG выполняется с помощью Azure PowerShell.
Сначала создадим дефолтную группу NSG. Нужно указать ее имя, местоположение и описание.
New-AzureNetworkSecurityGroup -Name "WAP-HTTPS" -Location "West Europe" -Label "Security group for DMZ"
После того, как группа NSG создана, можно отобразить привязанные к ней правила.
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" –Detailed
Пока разрешен весь трафик.
Затем нужно добавить правила для входящего трафика. В нашем примере, я опишу разрешенный входящий трафик в подсеть DMZ, в которой находятся два сервера WAP. Можно создать как разрешающие, так и запрещающие правила. Порядок применения правил определяется приоритетом.
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Allow Inbound RDP from Internal Netks" -Type Inbound -Priority 101 -Action Allow -SourceAddressPrefix 'VIRTUAL_NETWORK' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '3389' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Allow Inbound HTTPS from Internet" -Type Inbound -Priority 105 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*' -DestinationAddressPrefix "DMZ Subnet" -DestinationPortRange '443' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Allow Inbound RDP from Internet" -Type Inbound -Priority 107 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*' -DestinationAddressPrefix "DMZ Subnet" -DestinationPortRange '3389' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Deny Inbound traffic to Trusted Subnet" -Type Inbound -Priority 200 -Action Deny -SourceAddressPrefix 'VIRTUAL_NETWORK' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol '*'
После того, как заданы правила для входящего трафика, теперь можно описать правила для исходящего из DMZ трафика (открываем только 443 порт).
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Allow Outbound HTTPS from DMZ" -Type Outbound -Priority 100 -Action Allow -SourceAddressPrefix 'VIRTUAL_NETWORK' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '443' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityRule -Name "Deny Outbound traffic from DMZ" -Type Outbound -Priority 200 -Action Deny -SourceAddressPrefix 'VIRTUAL_NETWORK' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol '*'
Еще раз выведем полный список правил для нашей группы:
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" –Detailed
Ну и наконец, нужно привязать созданное правило к подсети DMZ
Get-AzureNetworkSecurityGroup -Name "WAP-HTTPS" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName "vNET" -SubnetName "DMZ Subnet"
Совет. При изменении правил в NSG, они не применяются немедленно, приходится ждать некоторое время.