Использование инструментов командной строки Windows и командлетов PowerShell для управления безопасностью в Windows Server 2012 (часть 3)

Опубликовано: 7 Апреля, 2023

  • Использование инструментов командной строки Windows и командлетов PowerShell для управления безопасностью в Windows Server 2012 (часть 2)

Введение

В части 1 этой серии статей о том, как использовать инструменты командной строки Windows и PowerShell для ускорения управления базовыми задачами, связанными с безопасностью, в Windows Server 2012 вместо использования графического интерфейса, мы подробно рассмотрели неграфические методы для настройка и управление центрами сертификации Windows (ЦС), включая командлеты Certutil и AD CS PowerShell.

Во второй части мы начали обсуждение того, как настраивать и управлять брандмауэром Windows в режиме повышенной безопасности с помощью командлетов Netsh и Powershell, рассматривая команду netsh advfirewall и как включать или отключать WFAS с помощью PowerShell. В этой статье, часть 3, мы продолжаем рассказывать о том, как выполнять дополнительные задачи по настройке и управлению для WFAS с помощью PowerShell.

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

Как и в случае с Netsh, мы можем создавать правила брандмауэра в командной строке с помощью PowerShell. Мы выполняем те же основные шаги, что и в Мастере создания правила для входящего (или исходящего) трафика в графическом интерфейсе (хотя и в другом порядке): мы даем правилу имя, определяем направление (входящее или исходящее), указываем путь к файлу программы, укажите удаленный адрес (IP-адрес или расположение в локальной подсети) и укажите действие (разрешить или заблокировать). Ниже приведен пример использования PowerShell для разрешения входящего трафика Telnet (прослушивания) в сети:

New-NetFirewallRule -DisplayName «Разрешить входящий Telnet» -Direction Inbound -Program %SystemRoot%System32	lntsvr.exe -RemoteAddress LocalSubnet -Action Allow

Вы также можете создать правило брандмауэра для блокировки или разрешения трафика к определенному объекту групповой политики Active Directory, указав хранилище политик с помощью параметра set store и указав объект групповой политики в следующем формате: gpo=<имя доменных служб><имя объекта групповой политики>.

Таким образом, командлет PowerShell для блокировки исходящего трафика Telnet к объекту групповой политики Supernova в поддомене Andromeda в домене Messier.com будет выглядеть следующим образом:

New-NetFirewallRule -DisplayName «Block Outbound Telnet» -Direction Outbound -Program %SystemRoot%System32	lntsvr.exe –Protocol TCP –LocalPort 23 -Action Block –PolicyStore andromeda.messier.comsupernova

Важная заметка:
Если в имени объекта групповой политики есть пробелы, его необходимо заключить в кавычки. На самом деле, это верно и для других имен, таких как имена правил или имена групп, как вы можете заметить в примерах, приведенных в этой статье.

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

Если вы хотите использовать PowerShell для внесения изменений в одно из правил брандмауэра, которое уже настроено в WFAS, вы можете изменить различные свойства правила. Вы могли бы сделать это и с Netsh, но вам нужно было знать имя правила. Если вы этого не сделали, это была проблема.

Большим преимуществом использования PowerShell для этого является то, что если вы не знаете имя правила, вы можете использовать известные вам свойства правила, чтобы выполнить запрос и узнать его имя. Вы можете использовать объекты фильтра с командлетом Get-NetFirewallRule для запросов на основе портов, адресов, безопасности, интерфейсов или служб. Вы также можете использовать подстановочный знак в запросе (*).

Чтобы изменить правило, вы указываете новую/измененную информацию вместе с именем правила. Например, если вы хотите изменить созданное ранее правило, чтобы указать удаленный IP-адрес компьютера, трафик которого контролируется правилом, вы должны использовать командлет Set-NetFirewallRule, как показано в следующем примере:

Set-NetFirewallRule — DisplayName «Разрешить входящий Telnet» — RemoteAddress 192.168.0.112

Вы даже можете вносить изменения в несколько правил одновременно, если они являются частью группы. Вы просто добавляете имя группы в команду Set-NetFirewallRule. В приведенном ниже примере мы меняем правило для всех членов группы с именем «Telnet Group».

New-NetFirewallRule -DisplayName «Разрешить входящий Telnet» -Direction Inbound -Program %SystemRoot%System32	lntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group «Telnet Group»

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

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

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

New-NetFirewallRule -DisplayName «Разрешить аутентифицированный Telnet» -Входящее направление -Program %SystemRoot%System32	lntsvr.exe -Authentication Required -Action Allow

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

$mkerbauthrop = New-NetIPsecAuthProposal -Machine –Kerberos
$mntlmauthrop = New-NetIPsecAuthProposal-Machine-NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName «Машинная аутентификация» – Предложение $mkerbauthprop,$mntlmauthprop
$ukerbauthrop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal-User-NTLM
$anonyauthprop = New-NetIPsecAuthProposal-Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName «Аутентификация пользователя» -Proposal
New-NetIPSecRule -DisplayName «Аутентифицировать компьютер и пользователя» -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name –Phase2AuthSet $P2Auth.Name

Благодаря его гибкости вы можете использовать PowerShell для упрощения создания сложных политик IPsec. Вы можете создавать правила IPsec, добавлять собственные методы проверки подлинности, указывать правила транспорта IKEv2, копировать правила IPsec из одной политики в другую и использовать IPsec для создания политики изоляции домена.

Подробные инструкции и примеры выполнения этих (и других) задач с помощью PowerShell см. в статье TechNet под названием Брандмауэр Windows с администрированием повышенной безопасности с помощью Windows PowerShell.

Использование PowerShell для удаленного управления WFAS

WinRM (удаленное управление Windows) было представлено как часть набора функций управления оборудованием Windows в Windows Server 2003 R2. Версия 2 WinRM, которая была включена в Windows Server 2008 R2 и Windows 7, добавила ряд новых функций и возможностей, подробно описанных здесь.

В Windows Server 2012 удаленное управление с помощью WinRM включено по умолчанию. Командлеты PowerShell CimSession используют WinRM и поддерживают удаленное управление. Параметр CimSession позволяет вносить изменения в WFAS (например, изменения в правилах брандмауэра) через PowerShell на удаленном компьютере.

Это особенно полезно, если у вас установлена Windows Server 2012 в режиме ядра сервера, который является наиболее безопасным и является методом установки, рекомендованным Microsoft. Поскольку графического интерфейса нет, крайне важно иметь возможность удаленно управлять WFAS (и выполнять другие административные задачи) через PowerShell.

Вот как вы используете параметр CimSession: Допустим, у нас есть компьютер с именем Alpha1, и мы хотим просмотреть правила брандмауэра, настроенные на его WFAS. С PowerShell это так же просто, как установить удаленный сеанс с помощью CimSession.

Допустим, вы хотите просмотреть все правила брандмауэра, настроенные на компьютере с именем Alpha1. Вот как это можно сделать с помощью PowerShell:

Get-NetFirewallRule –CimSession Alpha1

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

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

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

Теперь давайте сделаем что-нибудь посложнее. Мы удалим правило брандмауэра BlockFirefox из WFAS на Alpha1. Вот как это сделать:

$RemoteSession = New-CimSession –ComputerName Alpha1
Remove-NetFirewallRule –DisplayName «BlockFirefox» –CimSession $RemoteSession -Confirm

Резюме

Мы продолжаем серию статей об управлении безопасностью в Windows Server 2012 с помощью утилит командной строки и PowerShell. Вы помните, что в части 1 мы представили обзор того, как использовать Certutil.exe и командлеты PowerShell для установки роли служб сертификации и управления ею. Затем во второй части мы рассмотрели брандмауэр Windows в режиме повышенной безопасности и обсудили, как можно использовать команду netsh advfirewall для его настройки и управления им. Здесь, в части 3, мы рассмотрели наиболее распространенные аспекты использования командлетов PowerShell для настройки и управления WFAS.

Я надеюсь, что эта серия была полезной для вас. Если у вас есть идеи о других задачах и конфигурациях, связанных с безопасностью, связанных с Windows Server 2012, которые вы хотели бы знать, как выполнить с помощью Windows PowerShell, дайте мне знать, и я могу расширить объем этой серии, чтобы включить их. Пишите мне на [email protected] или [email protected].

  • Использование инструментов командной строки Windows и командлетов PowerShell для управления безопасностью в Windows Server 2012 (часть 2)