Назад | Перейти на главную страницу

Ограничить доступ к виртуальной машине Azure и VPN для клиентов

Мы хотим использовать Microsoft Azure и хотим предоставлять нашим клиентам виртуальные машины, имея при этом серверную часть для мониторинга и Active Directory. Наша сеть будет примерно такой:

сеть: 10.0.0.0/23

подсети: 10.0.0.0/24 (бэкэнд с мониторингом, ...)

10.0.1.0/29 customer1-network (server1 на 10.0.1.4 для клиента 1)
10.0.1.8/29 gateway1 (для клиента1)

10.0.1.16/29 customer2-network (server2 на 10.0.1.12 для клиента 2)
10.0.1.24/29 gateway2 (для клиента2)

Клиент1 соединяет свой маршрутизатор со шлюзом1, чтобы они могли получить доступ к серверу1 - и ТОЛЬКО к серверу1. Им не разрешено напрямую подключаться к server2, gateway2 или backend-сети. Их server1 - это виртуальная машина с окнами, и ему нужно подключиться к серверной сети, но не к server2 или gateway2. У клиента нет доступа к удаленному рабочему столу, только к портам 443 и 5499 на server1.

Итак, вопросы:

  1. Могу ли я привязать шлюз1 к сети customer1?
  2. Есть ли способ ограничить доступ между клиентами?
  3. Есть ли способ использовать NAT вместо объявления внутренних сетей?
    Например: Клиент1 подключается через VPN к шлюзу 1 и получает только интернет-адрес (1.2.3.4), а не внутреннюю сеть 10.0.1.0/29. Таким образом, к server1 можно подключиться через VPN на 1.2.3.4:443 и 1.2.3.4:5499.

Единственное, что я нашел, это этот сайт: https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-udr-how-to/
Но ничего, связанного с ограничением доступа / VPN :(

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

Что такое группа безопасности сети (NSG)

https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-nsg/

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

# Create NSG for Subnet1
New-AzureNetworkSecurityGroup -Name "myNSG1" -Location "East US"

# Deny entire Vnet
Get-AzureNetworkSecurityGroup -Name "myNSG1" | Set-AzureNetworkSecurityRule -Name "DENY VNET" -Type Inbound -Priority 1000 -Action Deny -SourceAddressPrefix 'VIRTUAL_NETWORK' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol *

# Allow Backend Vnet
Get-AzureNetworkSecurityGroup -Name "myNSG1" | Set-AzureNetworkSecurityRule -Name "ALLOW BACKEND" -Type Inbound -Priority 999 -Action Allow -SourceAddressPrefix '10.0.0.0/24' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol *

# Allow VMs in the same VNet to communicate
Get-AzureNetworkSecurityGroup -Name "myNSG1" | Set-AzureNetworkSecurityRule -Name "ALLOW SELF" -Type Inbound -Priority 998 -Action Allow -SourceAddressPrefix '10.0.1.0/29' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol *

# Allow Gateway
Get-AzureNetworkSecurityGroup -Name "myNSG1" | Set-AzureNetworkSecurityRule -Name "ALLOW GW" -Type Inbound -Priority 997 -Action Allow -SourceAddressPrefix '10.0.1.8/29' -SourcePortRange '*' -DestinationAddressPrefix 'VIRTUAL_NETWORK' -DestinationPortRange '*' -Protocol *

Это всего лишь основная идея для входящий соединения. Я не тестировал эти правила и не завершал настройку на основе вашего сценария, но должен дать вам представление, с чего начать.

Вам также необходимо применить его к подсети или набору виртуальных машин. Для подсетей:

Get-AzureNetworkSecurityGroup -Name "myNSG1" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'myVnet' -SubnetName 'myVnetSubnet1'