Порт во время шторма: создание списков ACL портов для Hyper-V для повышения безопасности
Сети виртуальных машин Hyper-V имеют репутацию несколько упрощенных. В конце концов, такие объекты, как виртуальные коммутаторы, можно создавать всего несколькими щелчками мыши и требовать минимального обслуживания. Тем не менее, в виртуальной сети Hyper-V есть нечто большее, чем кажется на первый взгляд. Если вы используете Windows Server 2012 R2 или более позднюю версию и System Center Virtual Machine Manager (VMM), вы можете повысить безопасность своей виртуальной сети, создав ряд ACL портов. Эти ACL портов можно использовать для ограничения обмена данными между виртуальными сетями. Например, вы можете использовать ACL портов, чтобы запретить виртуальной машине взаимодействовать с другой виртуальной машиной.
ACL портов предназначены для работы на уровне 2 сетевого стека. Для тех, кому нужно немного освежить в памяти, модель OSI определяет семь уровней. Эти слои включают в себя:
- Прикладной уровень (уровень 7)
- Уровень представления (уровень 6)
- Сеансовый уровень (уровень 5)
- Транспортный уровень (уровень 4)
- Сетевой уровень (уровень 3)
- Канальный уровень (уровень 2)
- Физический уровень (уровень 1)
Итак, как отмечалось ранее, списки ACL портов работают на уровне 2, который является уровнем канала передачи данных и использует правила для управления доступом к различным объектам VMM. Эти списки ACL можно применять к виртуальным подсетям, сетевым адаптерам, сетям виртуальных машин и даже к самому серверу VMM, если эти объекты не управляются сетевым контроллером. Если используется управление сетевым контроллером, то к виртуальным подсетям и адаптерам можно применять списки ACL портов.
К сожалению, ACL портов можно управлять только через оболочку управления Virtual Machine Manager. Они не отображаются через консоль управления. Несмотря на это, команды, используемые для создания и настройки ACL портов, относительно просты.
Создание ACL порта
Когда вы создаете порт ACL, он изначально ничего не делает. Вы должны добавить правила в ACL портов, прежде чем он сможет ограничивать обмен данными в вашей виртуальной сети. Таким образом, когда вы создаете ACL порта, вы просто создаете именованный объект. Неудивительно, что это легко сделать.
Создание ACL порта выполняется с помощью командлета New-SCPortACL. Единственный параметр, который требуется при создании ACL порта, — это имя. Вот пример команды, используемой для создания нового ACL порта.
New-SCPortACL -Name <ACL name>
Между прочим, если вы хотите просмотреть существующие в вашей системе списки ACL портов, вы можете сделать это с помощью командлета Get-SCPortACL. Вы можете увидеть пример обеих команд на скриншоте ниже.
Создание правил
После того, как вы создали новый ACL порта, вы можете начать добавлять правила в ACL. Прежде чем я покажу вам, как это сделать, мне нужно уделить немного времени и обсудить задействованные иерархические структуры. Как я уже объяснял, ACL порта — это просто именованный объект. Этот объект может хранить набор правил. Как вы уже видели, ACL порта может не иметь связанных с ним правил, но ACL порта обычно включает по крайней мере одно правило.
Если с ACL порта связано более одного правила, то правила применяются на основе приоритета. Когда вы создаете правило, вы обычно связываете числовой приоритет с правилом, и этот приоритет используется для определения того, какие правила имеют приоритет в случае конфликта правил.
Когда вы создали список ACL порта и набор правил, этот список ACL порта назначается одному или нескольким объектам VMM. Стоит отметить, что с сетевым объектом может быть связан только один порт ACL.
Итак, с учетом сказанного, давайте посмотрим, как создать правило. Правила Port ACL работают по существу так же, как правило брандмауэра. Таким образом, когда вы создаете правило ACL для портов, вам нужно будет включить определенные сведения. Обычно вам потребуется указать ACL порта, с которым должно быть связано правило, номер порта, к которому должно применяться правило, должно ли правило применяться к входящему или исходящему трафику, протокол, к которому должно применяться правило (TCP/UDP). ) и должно ли правило блокировать или разрешать доступ к порту. Для создания нового правила используется командлет New-SCPortACLRule.
В целях демонстрации давайте предположим, что мы хотим добавить правило в пример ACL порта, который я только что создал, и что это новое правило должно блокировать входящий трафик через TCP-порт 80. Другими словами, правило блокирует входящий HTTP-трафик.. Вот как будут выглядеть необходимые команды:
$ACL=Get-SCPortACL -Name Example New-SCPortACLRule -PortACL $ACL -Name <имя правила> -Action Deny -Type Inbound -Protocol TCP -LocalPortRange 80 -Priority 101
На снимке экрана ниже я сопоставил ACL порта с переменной $MyACL. На снимке экрана показана команда, которую я использовал для создания нового правила.
Присоединение ACL порта
Процедура, используемая для присоединения ACL порта к объекту, сильно различается в зависимости от типа объекта, к которому вы прикрепляете ACL порта. Многие из командлетов Set VMM поддерживают параметр PortACL, который позволяет вам указать ACL порта, который вы хотите использовать. Несколько примеров таких командлетов включают Set-SCVMMServer, Set-SCVMNetwork и Set0SCVMSubnet. Некоторые новые командлеты VMM, такие как New-ScVmSubnet, также поддерживают этот параметр. Вы можете найти полную документацию здесь.
ACL портов для большей безопасности
Хотя ни в одном правиле не говорится, что вы должны использовать ACL портов, это может помочь вам лучше защитить ваши виртуальные сети. Таким образом, вы можете ограничить объекты, чтобы они могли взаимодействовать только с виртуальными машинами и другими объектами, которые вы специально авторизовали. Если вы хотите узнать больше, Microsoft предоставляет здесь хорошее демонстрационное видео.