Управление брандмауэром Windows с помощью командной строки

В этой статье приведены примеры управления брандмауэром Windows с помощью PowerShell и netsh.exe, которые можно использовать для автоматизации управления брандмауэром Windows.

Настройка глобальных значений по умолчанию профиля

Глобальные значения по умолчанию задают поведение устройства для каждого профиля. Брандмауэр Windows поддерживает доменные, частные и общедоступные профили.

Брандмауэр Windows удаляет трафик, который не соответствует разрешенному незапрошенному трафику, или трафик, отправляемый в ответ на запрос устройства. Если вы обнаружите, что создаваемые правила не применяются, может потребоваться включить брандмауэр Windows. Вот как включить брандмауэр Windows на локальном устройстве:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Управление поведением брандмауэра Windows

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

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen True -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

Отключение брандмауэра Windows

Корпорация Майкрософт рекомендует не отключать брандмауэр Windows, так как вы теряете другие преимущества, предоставляемые службой, такие как возможность использования правил безопасности подключений по протоколу IPsec, защита сети от атак с использованием отпечатков пальцев сети, усиление защиты службы Windows и фильтры времени загрузки. Отключение брандмауэра Windows также может вызвать проблемы, в том числе:

  • Меню "Пуск" может перестать работать
  • Современные приложения могут не устанавливаться или обновляться
  • Сбой активации Windows через телефон
  • Несовместимость приложений или ОС, зависящее от брандмауэра Windows

Корпорация Майкрософт рекомендует отключить брандмауэр Windows только при установке брандмауэра, отличного от майкрософт, и вернуть брандмауэр Windows к значениям по умолчанию, когда программное обеспечение, отличное от корпорации Майкрософт, отключено или удалено. Если требуется отключить брандмауэр Windows, не отключайте его, останавливая службу брандмауэра Windows (в оснастке "Службы " отображаемое имя — Брандмауэр Windows, а имя службы — MpsSvc). Остановка службы брандмауэра Windows не поддерживается корпорацией Майкрософт. Программное обеспечение брандмауэра сторонних разработчиков может программно отключить только те части брандмауэра Windows, которые необходимо отключить для обеспечения совместимости. Для этой цели не следует самостоятельно отключать брандмауэр. Чтобы отключить брандмауэр Windows, следует отключить профили брандмауэра Windows и оставить службу запущенной. Используйте следующую процедуру, чтобы отключить брандмауэр или отключить групповая политика настройки конфигурации компьютера|Административные шаблоны|Сеть|Сетевая Connections|Брандмауэр Windows|Prolfile домена|Брандмауэр Windows: защита всех сетевых подключений. Дополнительные сведения см. в руководстве по развертыванию брандмауэра Windows. В следующем примере брандмауэр Windows отключается для всех профилей.

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

Развертывание основных правил брандмауэра

В этом разделе приведены примеры скриптлетов для создания, изменения и удаления правил брандмауэра.

Создание правил брандмауэра

Добавление правила брандмауэра в Windows PowerShell выглядит так же, как в Netsh, но параметры и значения задаются по-разному. Ниже приведен пример того, как разрешить приложению Telnet прослушивать сеть. Это правило брандмауэра ограничивается локальной подсетью, используя ключевое слово вместо IP-адреса. Как и в Netsh, правило создается на локальном устройстве и сразу же вступает в силу.

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow

В следующем скриптлете показано, как добавить базовое правило брандмауэра, которое блокирует исходящий трафик из определенного приложения и локального порта в объект групповая политика (GPO) в Active Directory. В Windows PowerShell хранилище политик указывается в качестве параметра в командлете New-NetFirewall. В Netsh необходимо сначала указать объект групповой политики, который должны изменить команды в сеансе Netsh. Вводимые команды выполняются для содержимого объекта групповой политики, и выполнение остается в силе до завершения сеанса Netsh или до выполнения другой команды set store. Здесь domain.contoso.com — это имя доменные службы Active Directory (AD DS), а gpo_name — имя объекта групповой политики, который требуется изменить. Кавычки обязательны, если в имени объекта групповой политики есть пробелы.

New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -LocalPort 23 -Action Block -PolicyStore domain.contoso.com\gpo_name

Кэширование объекта групповой политики

Чтобы снизить нагрузку на занятых контроллерах домена, Windows PowerShell позволяет загрузить объект групповой политики в локальный сеанс, внести все изменения в этом сеансе, а затем сохранить его снова. Следующая команда выполняет те же действия, что и в предыдущем примере (путем добавления правила Telnet в объект групповой политики), но для этого мы применяем кэширование объектов групповой политики в PowerShell. Изменение объекта групповой политики путем загрузки его в локальный сеанс и использования параметра -GPOSession не поддерживается в Netsh.

$gpo = Open-NetGPO -PolicyStore domain.contoso.com\gpo_name
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\telnet.exe -Protocol TCP -LocalPort 23 -Action Block -GPOSession $gpo
Save-NetGPO -GPOSession $gpo

Эта команда не выполняет пакетную обработку отдельных изменений, а загружает и сохраняет весь объект групповой политики одновременно. Таким образом, если другие изменения вносятся другими администраторами или в другом окне Windows PowerShell, сохранение объекта групповой политики перезаписывает эти изменения.

Изменение существующего правила брандмауэра

При создании правила Netsh и Windows PowerShell позволяют изменять свойства и влияние правила, но правило сохраняет свой уникальный идентификатор (в Windows PowerShell этот идентификатор указывается с помощью параметра -Name). Например, можно создать правило Allow Web 80 , которое включает TCP-порт 80 для входящего незапрошенного трафика. Вы можете изменить правило в соответствии с другим удаленным IP-адресом веб-сервера, трафик которого будет разрешен, указав доступное для чтения локализованное имя правила.

Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2

Netsh требует указать имя правила для его изменения, и у нас нет альтернативного способа получения правила брандмауэра. В Windows PowerShell можно запросить правило, используя его известные свойства. При запуске Get-NetFirewallRuleможно заметить, что такие распространенные условия, как адреса и порты, не отображаются. Эти условия представлены в отдельных объектах, называемых фильтрами. Как показано ранее, все условия можно задать в New-NetFirewallRule и Set-NetFirewallRule. Если вы хотите запросить правила брандмауэра на основе этих полей (порты, адреса, безопасность, интерфейсы, службы), необходимо получить сами объекты фильтра. Вы можете изменить удаленную конечную точку правила Allow Web 80 (как это было сделано ранее) с помощью объектов фильтра. Используя Windows PowerShell, вы выполняете запрос по порту с помощью фильтра портов, а затем при условии, что существуют другие правила, влияющие на локальный порт, выполняется сборка с дополнительными запросами, пока не будет извлечено нужное правило. В следующем примере предполагается, что запрос возвращает одно правило брандмауэра, которое затем Set-NetFirewallRule передается в командлет с использованием возможности Windows PowerShell конвейера входных данных.

Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction -eq "Inbound" -and $_.Action -eq "Allow"} | Set-NetFirewallRule -RemoteAddress 192.168.0.2

Вы также можете запросить правила с помощью подстановочного знака. В следующем примере возвращается массив правил брандмауэра, связанных с определенной программой. Элементы массива можно изменить в последующих Set-NetFirewallRule командлетах.

Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule

Несколько правил в группе могут быть одновременно изменены, если имя связанной группы указано в команде Set. Правила брандмауэра можно добавить в указанные группы управления, чтобы управлять несколькими правилами, которые имеют одинаковые влияния. В следующем примере мы добавим правила брандмауэра Telnet для входящих и исходящих подключений в группу Telnet Management. В Windows PowerShell членство в группах указывается при первом создании правил, поэтому мы повторно создадим предыдущие примеры правил. Добавление правил в настраиваемую группу правил в Netsh невозможно.

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"

Если группа не указана во время создания правила, правило можно добавить в группу правил с помощью нотации точек в Windows PowerShell. Нельзя указать группу с помощью, Set-NetFirewallRule так как команда позволяет выполнять запросы по группе правил.

$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule

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

Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True

Существует также отдельный Enable-NetFirewallRule командлет для включения правил по группам или другим свойствам правила.

Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose

Удаление правила брандмауэра

Объекты правил можно отключить, чтобы они больше не были активными. В Windows PowerShell командлет Disable-NetFirewallRule оставит правило в системе, но поместит его в отключенное состояние, чтобы правило больше не применялось и влияло на трафик. Отключенное правило брандмауэра можно повторно включить с помощью Enable-NetFirewallRule. Этот командлет отличается от Remove-NetFirewallRule, который окончательно удаляет определение правила с устройства. Следующий командлет удаляет указанное существующее правило брандмауэра из локального хранилища политик.

Remove-NetFirewallRule -DisplayName "Allow Web 80"

Как и в случае с другими командлетами, можно также запросить удаление правил. Здесь все правила блокировки брандмауэра удаляются с устройства.

Remove-NetFirewallRule -Action Block

Может быть безопаснее запросить правила с помощью команды Get и сохранить их в переменной, соблюдать правила, на которые нужно повлиять, а затем передать их в команду Удалить , как это было для команд Set . В следующем примере показано, как просмотреть все правила блокировки брандмауэра, а затем удалить первые четыре правила.

$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule

Удаленное управление

Удаленное управление с помощью WinRM включено по умолчанию. Командлеты, поддерживающие параметр CimSession , используют WinRM и могут управляться удаленно по умолчанию. В следующем примере возвращаются все правила брандмауэра постоянного хранилища на устройстве с именем RemoteDevice.

Get-NetFirewallRule -CimSession RemoteDevice

Мы можем вносить любые изменения или просматривать правила на удаленных устройствах с помощью параметра -CimSession . Здесь мы удаляем определенное правило брандмауэра с удаленного устройства.

$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm

Развертывание основных параметров правил IPsec

Политика безопасности протокола ИНТЕРНЕТА (IPsec) состоит из правил, определяющих поведение IPsec. IPsec поддерживает одноранговую проверку подлинности на уровне сети, проверку подлинности источника данных, целостность данных, конфиденциальность данных (шифрование) и защиту от воспроизведения. Windows PowerShell могут создавать мощные и сложные политики IPsec, например в Netsh и консоли брандмауэра Windows. Тем не менее, поскольку Windows PowerShell основан на объекте, а не на основе строкового токена, конфигурация в Windows PowerShell обеспечивает больший контроль и гибкость. В Netsh наборы проверки подлинности и шифрования были указаны в виде списка токенов, разделенных запятыми, в определенном формате. В Windows PowerShell вместо использования параметров по умолчанию вы сначала создаете нужные объекты предложений проверки подлинности или шифрования и объединяете их в списки в предпочтительном порядке. Затем вы создадите одно или несколько правил IPsec, ссылающихся на эти наборы. Преимущество этой модели заключается в том, что программный доступ к информации в правилах гораздо проще. Уточняющие примеры см. в следующих разделах. объектная модель для создания одного правила ipsec.

Создание правил IPsec

Следующий командлет создает базовое правило режима транспорта IPsec в объекте групповая политика. Правило IPsec легко создать; Все, что требуется, — это отображаемое имя, а остальные свойства используют значения по умолчанию. Входящий трафик проходит проверку подлинности и проверяется целостность с помощью быстрого режима по умолчанию и параметров режима main. Эти параметры по умолчанию можно найти в консоли в разделе Настройка по умолчанию IPsec.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -PolicyStore domain.contoso.com\gpo_name

Добавление пользовательских методов проверки подлинности в правило IPsec

Если вы хотите создать пользовательский набор предложений быстрого режима, который включает в себя как AH, так и ESP в объекте правила IPsec, вы создаете связанные объекты отдельно и связываете их связи. Дополнительные сведения о методах проверки подлинности см. в разделе Выбор протокола IPsec. Затем при создании правил IPsec можно использовать только что созданные настраиваемые политики быстрого режима. Объект набора шифрования связан с объектом правила IPsec. объект crypto set. В этом примере мы создадим ранее правило IPsec, указав настраиваемый набор криптографии быстрого режима. Окончательное правило IPsec требует, чтобы исходящий трафик прошел проверку подлинности с помощью указанного метода шифрования.

$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP -AHHash SHA1 -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "ah:sha1+esp:sha1-des3" -Proposal $AHandESPQM -PolicyStore domain.contoso.com\gpo_name
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name -PolicyStore domain.contoso.com\gpo_name

Правила транспорта IPsec IKEv2

Корпоративной сети может потребоваться обеспечить безопасность связи с другим агентством. Но вы обнаружите, что агентство работает под управлением операционных систем, отличных от Windows, и требует использования стандарта Internet Key Exchange версии 2 (IKEv2). Вы можете применить возможности IKEv2 в Windows Server 2012, указав IKEv2 в качестве ключевого модуля в правиле IPsec. Эта спецификация возможностей может быть выполнена только с помощью проверки подлинности на основе сертификата компьютера и не может использоваться с проверкой подлинности на этапе 2.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 -RemoteAddress $nonWindowsGateway

Дополнительные сведения о IKEv2, включая сценарии, см. в разделе Защита сквозного IPsec Connections с помощью IKEv2.

Копирование правила IPsec из одной политики в другую

Правила брандмауэра и IPsec с одинаковыми свойствами правил можно дублировать, чтобы упростить их повторное создание в разных хранилищах политик. Чтобы скопировать ранее созданное правило из одного хранилища политик в другое, связанные объекты также должны быть скопированы отдельно. Нет необходимости копировать связанные фильтры брандмауэра. Вы можете запрашивать правила для копирования так же, как и другие командлеты. Копирование отдельных правил — это задача, которая невозможна через интерфейс Netsh. Вот как это можно сделать с помощью Windows PowerShell.

$Rule = Get-NetIPsecRule -DisplayName "Require Inbound Authentication"
$Rule | Copy-NetIPsecRule -NewPolicyStore domain.costoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet -NewPolicyStore domain.costoso.com\new_gpo_name

Обработка ошибок Windows PowerShell

Для обработки ошибок в скриптах Windows PowerShell можно использовать параметр -ErrorAction. Этот параметр особенно полезен в командлетах Remove . Если вы хотите удалить определенное правило, вы заметите, что оно завершается ошибкой, если оно не найдено. При удалении правил, если правило еще не существует, допустимо игнорировать эту ошибку. В этом случае можно выполнить следующие действия, чтобы подавить все ошибки "правило не найдено" во время операции удаления.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue

Использование подстановочных знаков также может подавлять ошибки, но потенциально они могут соответствовать правилам, которые вы не собирались удалять. Эти подстановочные знаки могут быть полезным ярлыком, но их следует использовать только в том случае, если вы знаете, что нет никаких дополнительных правил, которые будут случайно удалены. Таким образом, следующий командлет также удалит правило, подавляя любые ошибки "не найдено".

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"

При использовании подстановочных знаков, если вы хотите дважды проверка наборе правил, которые соответствуют, можно использовать параметр -WhatIf.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf

Если вы хотите удалить только некоторые из соответствующих правил, можно использовать параметр -Confirm , чтобы получить запрос на подтверждение по правилу.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm

Вы также можете просто выполнить всю операцию, отображая имена каждого правила при выполнении операции.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose

Монитор

Следующие команды Windows PowerShell полезны в цикле обновления на этапе развертывания. Чтобы разрешить просматривать все правила IPsec в определенном хранилище, можно использовать следующие команды. В Netsh эта команда не отображает правила, где profile=domain,public или profile=domain,private. В нем отображаются только правила с одним доменом входа, включенным в правило. В следующих примерах команд будут показаны правила IPsec во всех профилях.

Show-NetIPsecRule -PolicyStore ActiveStore

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

Get-NetIPsecMainModeSA

Поиск исходного объекта групповой политики правила

Чтобы просмотреть свойства определенного правила или группы правил, необходимо запросить правило. Когда запрос возвращает поля, указанные как NotConfigured, можно определить, из какого хранилища политики исходит правило. Для объектов, поступающих из объекта групповой политики (параметр -PolicyStoreSourceType указан как GroupPolicy в команде Show ), если передается параметр -TracePolicyStore , имя объекта групповой политики будет найдено и возвращается в поле PolicyStoreSource .

Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore

Важно отметить, что выявленные источники не содержат доменного имени.

Развертывание базовой политики изоляции домена

IPsec можно использовать для изоляции членов домена от членов, не относящихся к домену. Изоляция домена использует проверку подлинности IPsec, чтобы устройства, присоединенные к домену, устанавливали удостоверения взаимодействующих устройств для повышения безопасности организации. Для защиты трафика с помощью объекта правила IPsec можно использовать одну или несколько функций IPsec. Чтобы реализовать изоляцию домена в сети, устройства в домене получают правила IPsec, которые блокируют незапрошенный входящий сетевой трафик, который не защищен IPsec. Здесь мы создадим правило IPsec, которое требует проверки подлинности членами домена. С помощью этой проверки подлинности можно изолировать присоединенные к домену устройства от устройств, которые не присоединены к домену. В следующих примерах проверка подлинности Kerberos требуется для входящего трафика и запрашивается для исходящего трафика.

$kerbprop = New-NetIPsecAuthProposal -Machine -Kerberos
$Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop -PolicyStore domain.contoso.com\domain_isolation
New-NetIPsecRule -DisplayName "Basic Domain Isolation Policy" -Profile Domain -Phase1AuthSet $Phase1AuthSet.Name -InboundSecurity Require -OutboundSecurity Request -PolicyStore domain.contoso.com\domain_isolation

Настройка режима туннеля IPsec

Следующая команда создает туннель IPsec, который направляет трафик из частной сети (192.168.0.0/16) через интерфейс на локальном устройстве (1.1.1.1), подключенном к общедоступной сети, на втором устройстве через его общедоступный интерфейс (2.2.2.2) в другую частную сеть (192.157.0.0/16). Весь трафик через туннель проверяется на целостность с помощью ESP/SHA1 и шифруется с помощью ESP/DES3.

$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "esp:sha1-des3" -Proposal $QMProposal
New-NetIPSecRule -DisplayName "Tunnel from HQ to Dallas Branch" -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name

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

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

Создание правила безопасного брандмауэра (разрешить, если безопасно)

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

New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow

Следующая команда создает правило IPsec, которое требует первой проверки подлинности (компьютер), а затем пытается выполнить необязательную вторую проверку подлинности (пользователя). Создание этого правила защищает и разрешает трафик через требования к правилу брандмауэра для программы messenger.

$mkerbauthprop = New-NetIPsecAuthProposal -Machine -Kerberos
$mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName "Machine Auth" -Proposal $mkerbauthprop,$mntlmauthprop
$ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM
$anonyauthprop = New-NetIPsecAuthProposal -Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName "User Auth" -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop
New-NetIPSecRule -DisplayName "Authenticate Both Computer and User" -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name -Phase2AuthSet $P2Auth.Name

Изоляция сервера путем шифрования и членства в группах

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

Создание правила брандмауэра, которое требует членства в группе и шифрования

Чтобы развернуть изоляцию сервера, мы создадим правило брандмауэра, которое ограничивает трафик авторизованными пользователями или устройствами в правиле IPsec, которое обеспечивает проверку подлинности. Следующее правило брандмауэра разрешает трафик Telnet из учетных записей пользователей, которые являются членами настраиваемой группы с именем "Авторизованный для доступа к серверу". Этот доступ можно дополнительно ограничить в зависимости от устройства, пользователя или того и другого, указав параметры ограничения. Строка языка определения дескриптора безопасности (SDDL) создается путем расширения идентификатора безопасности пользователя или группы . Дополнительные сведения о поиске идентификатора безопасности группы см. в статье Поиск идентификатора безопасности для учетной записи группы. Ограничение доступа к группе позволяет администраторам расширить поддержку строгой проверки подлинности с помощью брандмауэра Windows и (или) политик IPsec. В следующем примере показано, как создать строку SDDL, представляющую группы безопасности.

$user = new-object System.Security.Principal.NTAccount ("corp.contoso.com\Administrators")
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"

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

$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"

Дополнительные сведения о создании групп безопасности или определении строки SDDL см. в статье Работа с идентификаторами БЕЗОПАСНОСТИ. Telnet — это приложение, которое не обеспечивает шифрование. Это приложение может отправлять данные, такие как имена и пароли, по сети. Эти данные могут быть перехвачены злоумышленниками. Если администратор хочет разрешить использование Telnet, но защитить трафик, можно создать правило брандмауэра, которое требует шифрования IPsec. Это правило брандмауэра необходимо, чтобы администратор был уверен, что при использовании этого приложения весь трафик, отправляемый или полученный этим портом, шифруется. Если протоколу IPsec не удается авторизовать подключение, трафик из этого приложения не разрешается. В этом примере мы разрешаем только прошедший проверку подлинности и зашифрованный входящий трафик Telnet из указанной безопасной группы пользователей путем создания следующего правила брандмауэра.

New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\Server_Isolation

Принудительное применение безопасности конечной точки

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

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

Создание правил брандмауэра, разрешающих защищенный IPsec сетевой трафик (обход с проверкой подлинности)

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

New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation