Использование групп безопасности сети для защиты приложения в Microsoft Azure

Опубликовано: 8 Марта, 2023

Обзор потока трафика

При создании виртуальных сетей и подсетей в Microsoft Azure конфигурация по умолчанию позволяет передавать весь трафик между подсетями внутри виртуальной сети. Когда вы создаете виртуальные машины (ВМ) и размещаете их в подсетях, виртуальные машины настраиваются с общедоступными конечными точками, обращенными к Интернету, для подключений к удаленному рабочему столу и удаленному управлению Windows (WinRM). Виртуальные машины также настроены с разрешенным исходящим доступом в Интернет.

В результате конфигурация потока трафика позволяет всем виртуальным машинам в виртуальной сети взаимодействовать друг с другом по всем протоколам и портам, входящим RDP и WinRM из Интернета и неограниченному исходящему доступу в Интернет. Рисунок 1 — это визуальное представление потока трафика по умолчанию в Microsoft Azure для типичного трехуровневого приложения.

Изображение 981
Рис. 1.
Поток сетевого трафика по умолчанию для трехуровневого приложения в Microsoft Azure

Для большинства трехуровневых корпоративных приложений такой поток трафика по умолчанию нежелателен. Типичное трехуровневое приложение, как показано на рисунке 1, состоит из следующих слоев:

  • Уровень 1 — это внешний пользовательский интерфейс (UI) для приложения.
  • Уровень 2 — это логика приложения.
  • Уровень 3 — это хранилище данных приложения (например, SQL Server на рис. 1).

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

В этой конфигурации обычно требуется следующий поток трафика:

  • Серверы уровня 1 (UI) находятся в демилитаризованной зоне и разрешают входящие подключения из Интернета только на определенные порты сервера.
  • Серверы уровня 1 в демилитаризованной зоне взаимодействуют с серверами уровня 2 (приложения) только через определенные определенные порты приложений.
  • Серверы уровня 2 обмениваются данными только с серверами уровня 3 (хранилище данных) через порты сервера базы данных.
  • Серверы уровня 3 не могут инициировать связь с серверами уровня 1 или уровня 2.
  • Ни один из серверов не может инициировать исходящие соединения с Интернетом.

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

Изображение 982
Рис. 2.
Желаемый поток трафика для типичного трехуровневого приложения

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

Основы группы безопасности сети

Microsoft недавно выпустила новую функцию под названием Network Security Groups (NSG), позволяющую контролировать трафик между виртуальными машинами и подсетями. В отличие от брандмауэра Windows, который управляется на уровне операционной системы (ОС), NSG управляется на сетевом уровне и не зависит от ОС, работающей на виртуальной машине.

Группы безопасности сети — это контейнеры, которые можно назначать подсети или виртуальной машине. В контейнере Network Security Group вы определяете правила управления доступом. Каждое правило управления доступом представляет собой кортеж из 5 элементов, содержащий следующую информацию:

  • Исходный IP-адрес
  • IP-адрес получателя
  • Порт
  • Протокол
  • Действие — разрешить или запретить

Каждое правило также имеет приоритет, назначаемый при его создании, который определяет порядок оценки правил. Приоритет определяется как целое число от 100 до 4096, при этом правила с меньшим номером имеют наивысший приоритет.

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

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

  • Разрешить все порты и протоколы в адресном пространстве виртуальной сети.
  • Разрешить исходящий доступ в Интернет по всем портам и протоколам
  • Запретить весь входящий трафик из Интернета на всех портах и протоколах
  • Позволяет балансировщику нагрузки Microsoft Azure проверять работоспособность виртуальной машины.

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

  • VIRTUAL_NETWORK — представляет адресное пространство виртуальной сети и локальной сети, доступное в рамках подписки.
  • AZURE_LOADBALANCER — представляет исходный адрес балансировщика нагрузки Microsoft Azure.
  • ИНТЕРНЕТ — представляет собой адресное пространство за пределами виртуальной сети, доступное через общедоступный Интернет.

Ограничения и лимиты группы сетевой безопасности

В рамках подписки Microsoft Azure это набор ограничений и ограничений, которые необходимо учитывать при использовании групп безопасности сети:

  • В рамках одной подписки Microsoft Azure можно определить не более 100 групп безопасности сети.
  • В каждой группе безопасности сети можно определить до 200 правил контроля доступа.
  • Подсети или виртуальной машине может быть назначена только одна группа безопасности сети.
  • Вы можете назначить одну группу безопасности сети нескольким виртуальным машинам или подсетям.

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

Кроме того, имейте в виду, что NSG можно создавать и управлять только с помощью Azure PowerShell или API-интерфейсов Azure REST. На текущем портале Microsoft Azure нет пользовательского интерфейса для управления NSG.

Область действия группы безопасности сети

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

Можно назначить NSG подсети и виртуальную машину в одной подсети. Это обеспечивает два уровня правил управления доступом и обычно используется, когда виртуальная машина имеет уникальные требования к потоку трафика, чем все другие виртуальные машины в подсети. В этом случае весь входящий трафик будет проходить через правила управления доступом к подсети, а затем правила управления доступом к виртуальной машине, прежде чем он достигнет виртуальной машины. На исходящей стороне происходит обратный процесс. Другими словами, трафик покидает виртуальную машину и проходит через определенные правила управления доступом к виртуальной машине, а затем проходит через правила управления доступом к подсети, прежде чем покинуть подсеть.

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

Создание группы безопасности сети с помощью PowerShell

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

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

New-AzureNetworkSecurityGroup — имя «MyFirstSubnetNSG» — расположение uswest
-Ярлык «Моя первая подсеть NSG в западной части США»

New-AzureNetworkSecurityGroup — Имя «MyFirstVMNSG» — Расположение uswest — Метка «Моя первая виртуальная группа безопасности сети в западной части США»

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

Создание правила группы безопасности сети с помощью PowerShell

Чтобы создать или обновить правило в NSG, необходимо получить объект NSG, а затем можно создать правило в наборе правил для входящего или исходящего трафика, используя 5 кортежей информации.

Например, чтобы создать правило, разрешающее входящий трафик через порт 443 в подсеть с приоритетом 400, можно использовать командлет :

$NSG = Get-AzureNetworkSecurityGroup -Name «MyFirstSubnetNSG»

Set-AzureNetworkSecurityRule –NetworkSecurityGroup $NSG -Name 'Inbound 443` -Type Inbound 443` -Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*' -DestinationAddressPrefix '*' -DestinationPortRange '*' -Protocol TCP

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

Назначение группы безопасности сети подсети

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

$NSG = Get-AzureNetworkSecurityGroup -Name «MyFirstSubnetNSG»

Set-AzureNetworkSecurityGroupToSubnet –NetworkSecurityGroup $NSG -VirtualNetworkName 'VNetUSWest' -SubnetName 'DMZ'

Через несколько секунд после назначения NSG подсети весь трафик фильтруется для каждой виртуальной машины в подсети. Теперь вы можете изменять или добавлять правила в NSG, не переназначая NSG подсети.

Назначение группы безопасности сети виртуальной машине

Вы можете назначить NSG виртуальной машине с помощью командлета Set-AzureNetworkSecurityGroupConfig, а затем командлета Update-AzureVM:

$VM = Get-AzureVM -ServiceName «Мой веб-сайт» -Name «FrontEndUI»

$NSG = Get-AzureNetworkSecurityGroup -Name «MyFirstVMNSG»

Set-AzureNetworkSecurityGroupConfig -NetworkSecurityGroupName «$NSG» —VM $VM

Update-AzureVM – виртуальная машина $VM

Здесь также через несколько секунд после назначения NSG виртуальной машине весь трафик к виртуальной машине фильтруется. Теперь вы можете изменять или добавлять правила в NSG, не переназначая NSG подсети.

Получение набора правил группы безопасности сети

Создав набор правил для NSG, вы можете отслеживать набор правил и связанные с ними приоритеты. Командлет позволит вам получить сведения о наборе правил:

Get-AzureNetworkSecurityGroup — Name «MyFirstSubnetNSG» — Detailed

Это предоставляет подробный список связанных входящих и исходящих правил, отсортированных по уровню приоритета.

Вывод

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