- Configuring Windows Firewall Rules with PowerShell
- How to Manage Windows Firewall Network Profiles from PowerShell?
- How to Create, Edit or Remove Windows Firewall Rules with PowerShell?
- Listing Windows Firewall Rules with PowerShell
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Курс по сетям
- Пошаговый ввод в домен Windows 10
- Основные команды cmd в Windows
- Поднимаем контроллер домена на Windows 2008 R2
- Windows Terminal: Советы и хитрости
- Установка и настройка диспетчера ресурсов файлового сервера (File Server Resource Manager) в Windows Server 2016
- Как архивировать и распаковывать файлы с помощью PowerShell
- Microsoft Edge | Как переместить вкладку в другой профиль
- Настройка фаервола в Windows через PowerShell
- Вызов модуля NetSecurity
- Вывод списка правил
- Создание нового правила
- Изменение существующего правила
- Удаление правила
- Дополнительные возможности
- Заключение
Configuring Windows Firewall Rules with PowerShell
This article gives the basics on how to manage settings and rules of built-in Windows Defender Firewall with Advanced Security using PowerShell. We’ll consider how to enable/disable the firewall for different network profiles, create or remove firewall rules and write a small PS script to get a convenient table showing the current set of active firewall rules.
You can manage Windows Firewall settings from the graphic console: Control Panel -> System and Security -> Windows Defender Firewall. However, starting with Windows 8.1 (Windows Server 2012 R2) you can use the built-in NetSecurity PowerShell module to manage firewall.
There are 85 commands available in the NetSecurity module on Windows 10. You can display the whole list:
Get-Command -Module NetSecurity
How to Manage Windows Firewall Network Profiles from PowerShell?
There are three types of network profiles in Windows Firewall:
- Domain – is applied to the computers in an Active Directory domain
- Private – home or corporate networks
- Public – public networks
Each network profile (location) may differ by the set of firewall rules used. By default, all network interfaces of a computer are protected by the firewall, and all three types of profiles are applied to them.
To enable all three network profiles: Domain, Public and Private, use this command:
Set-NetFirewallProfile -All -Enabled True
Or set the specific profile instead All:
Set-NetFirewallProfile -Profile Public -Enabled True
To disable the firewall for all three network location, use the command:
Set-NetFirewallProfile -All -Enabled False
Using the Set-NetFirewallProfile cmdlet, you can change profile options (a default action, logging, a path to and a size of a log file, notification settings, etc.).
You may know that in modern OS versions Windows Firewall is enabled for all profiles. All outbound connections are allowed and inbound ones are blocked (except allowed ones) in the profile settings.
Let’s change the default action for the Public profile to block all inbound connections.
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
You can display the current profile settings as follows:
Get-NetFirewallProfile -Name Public
If you manage your Windows Firewall settings using GPO, you can display the current resulting profile settings as follows:
Get-NetFirewallProfile -policystore activestore
Make sure that all firewall settings are applied to all network interfaces of the computer.
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
If all interfaces are protected, the command will return the following:
You can disable the specific interface profile (to display the list of interface names, use the Get-NetIPInterface):
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases «Ethernet0»
As you can see, Public profile is no longer applied to Ethernet0:
You can set network connection logging options at the profile level. By default, Windows Firewall logs are stored in %systemroot%\system32\LogFiles\Firewall, and the file size is 4MB. You can enable all connection logging and change the maximum file size:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%\system32\LogFiles\Firewall\pfirewall.log’
How to Create, Edit or Remove Windows Firewall Rules with PowerShell?
There are 9 cmdlets to manage your firewall rules:
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
Let’s consider some simple examples of how to open ports in Windows Firewall.
For example, if you want to allow inbound TCP connections to ports 80 and 443 for Domain and Private profiles, use this command:
New-NetFirewallRule -DisplayName ‘HTTP-Inbound’ -Profile @(‘Domain’, ‘Private’) -Direction Inbound -Action Allow -Protocol TCP -LocalPort @(’80’, ‘443’)
You can allow or block network access for an app. For example, you want to block outbound connections for Firefox:
New-NetFirewallRule -Program “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” -Action Block -Profile Domain, Private -DisplayName “Block Firefox browser” -Description “Block Firefox browser” -Direction Outbound
To allow inbound RDP connection on port 3389 from one IP address only:
New-NetFirewallRule -DisplayName «AllowRDP» –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
To allow ping (ICMP) for addresses from the specified IP subnet or IP range, use these commands:
$ips = @(«192.168.2.15-192.168.2.40», «192.168.100.15-192.168.100.200», ”10.1.0.0/16”)
New-NetFirewallRule -DisplayName «Allow inbound ICMPv4» -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName «Allow inbound ICMPv6» -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
In order to edit an existing firewall rule, the Set-NetFirewallRule cmdlet is used. For example, to allow inbound connections from the specified IP address for the rule created earlier:
Get-NetFirewallrule -DisplayName ‘HTTP-Inbound’ | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
If you want to add multiple IP addresses to a firewall rule, use this script:
$ips = @(«192.168.2.15», «192.168.2.17»,”192.168.100.15”)
Get-NetFirewallrule -DisplayName ‘WEB-Inbound’|Set-NetFirewallRule -RemoteAddress $ips
To display all IP addresses in a firewall rule:
Get-NetFirewallrule -DisplayName ‘Allow inbound ICMPv4’|Get-NetFirewallAddressFilter
You can enable/disable firewall rules using Disable-NetFirewallRule and Enable-NetFirewallRule cmdlets.
Disable-NetFirewallRule –DisplayName ‘WEB-Inbound’
To allow ICMP (ping), run this command:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
To remove a firewall rule, the Remove-NetFirewallRule cmdlet is used.
Listing Windows Firewall Rules with PowerShell
You can display the list of active firewall rules for your inbound traffic as follows:
If you want to display the list of outbound blocking rules:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
To display an app name in a rule:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %
As you can see, the Get-NetFirewallRule cmdlet doesn’t show network ports and IP addresses for your firewall rules. To display the detailed information about allowed inbound (outbound) connections in a more convenient way showing the port numbers, use the following PowerShell script:
PowerShell provides ample opportunities to manage Windows Firewall rules from the command prompt. You can automatically run PowerShell scripts to open/close ports if certain events happen. In the next article, we’ll consider a simple PowerShell- and Windows Firewall-based solution to automatically block IP addresses trying to remotely brute-force passwords over RDP on your Windows VDS server.
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Популярное и похожее
Курс по сетям
Пошаговый ввод в домен Windows 10
Основные команды cmd в Windows
Поднимаем контроллер домена на Windows 2008 R2
Windows Terminal: Советы и хитрости
Установка и настройка диспетчера ресурсов файлового сервера (File Server Resource Manager) в Windows Server 2016
Как архивировать и распаковывать файлы с помощью PowerShell
Microsoft Edge | Как переместить вкладку в другой профиль
Еженедельный дайджест
Настройка фаервола в Windows через PowerShell
Межсетевые экраны через консоль
Windows включает в себя надежный (в целом 🙄), но простой в использовании, брандмауэр с расширенными возможностями. А с помощью PowerShell 7 можно легко настроить его из командной строки. В этой статье описываются общие команды, используемые в межсетевом экране Windows, а также возможные способы их использования.
Обучайся в Merion Academy
Пройди курс по сетевым технологиям
Начать
Модуль NetSecurity хорошо задокументирован. Учтите, что эта статья относится только к операционной системе Windows. Для других операционных систем существуют другие инструменты командной строки, которые могут использоваться для выполнения тех же задач, такие как UFW или IPTables в Linux.
Вызов модуля NetSecurity
Предустановленный в системе модуль NetSecurity обладает всем необходимым функционалом для управления правилами межсетевого экрана Windows. Чтобы задействовать данный модуль, достаточно импортировать его показанным ниже способом (конечно же команду запускаем в PowerShell):
Вывод списка правил
Командлет Get-NetFirewallRule выводит список настроенных правил. В системе большое количество предварительно настроенных правил, но для примера мы выбрали первые 10:
По умолчанию, командлет выводит все параметры, но на примере выше мы выбрали всего четыре из них (они, собственно, перечислены в команде). А получить все параметры можно командой:
Создание нового правила
Создать новое правило позволяет команда New-NetFirewallRule. Основные параметры, которые нужно передать команде следующие:
- DisplayName — название правила;
- Direction — Направление трафика, которое нужно блокировать. Может быть либо входящим (Inbound), либо Исходящим (Outbound);
- Action — Действие правила. Правило может быть либо Разрешающим (Allow), либо Запрещающим (Block).
Если не указан параметр Name, система сгенерирует случайный GUID. DisplayName может быть читабельным, но сам Name будет сгенерирован случайным образом.
Изменение существующего правила
Что если нужно изменить какой-то параметр правила, не удаляя и пересоздавая его? Для этого нужно задействовать командлет Set-NetFirewallRule.
Данная команда также позволяет вносить изменения в несколько правил сразу. Это можно сделать, передав команде одно из трех параметров правила:
- Name — Параметр по умолчанию. Если команде переданы несколько параметров Name в виде строки или же через пайплайн (|), изменения коснутся каждого из правил;
- DisplayName — так же, как и в случае с параметром Name, команде можно передать нескольких правил, чтобы изменить их;
- DisplayGroup или Group — Если несколько правил сгруппированы, то команде можно передать название этой группы и внести изменения во все члены указанной группы.
Удаление правила
И, наконец, мы хотим удалить правило, которое больше не нужно. Для этого запускаем командлет Remove-NetFirewallRule. Также при удалении часто рекомендуется использовать параметр WhatIf, который позволяет убедиться в том, что будет удалено нужное правило.
Следует отметить, что данный командлет позволяет удалять несколько правил сразу. На примере ниже мы удаляем все отключенные правила, которые содержит групповая политика firewall_gpo в домене ad.local.test.
Запущенный сам по себе командлет Remove-NetFirewallRule достаточно полезный, но в то же время опасный, так как удаляет все локально созданные правила. Если есть доменная групповая политика, определяющая правила межсетевого экрана, данная команда удалит все локальные правила, конфликтующие с правилами групповой политики.
Дополнительные возможности
Модуль NetSecurity включает в себя множество других команд, которые мы не затронули в данной статье. Поэтому ниже приводим список и возможности данных команд.
- Copy-NetFirewallRule — данная команда копирует существующее правило и все связанные с ними фильтры в то же или другое хранилище политик;
- Disable-NetFirewallRule — отключает ранее созданное правило. Отключенное правило не удаляется из базы, но уже никак не влияет на трафик. Если запустить эту команду без параметров, то она отключит все активные правила на целевой машине. Поэтому если не указано конкретное правило или группа правил, рекомендуется всегда запускать данную команду с параметром WhatIf;
- Enable-NetFirewallRule — в противовес предыдущей команде, данный командлет включает все отключенные правила. Если не указано конкретное правило, то данную команду также рекомендуется запускать с параметром WhatIf;
- Get-NetFirewallProfile — эта команда отображает параметры, настроенные для указанного профиля, например, профилей Domain, Private или Public;
- Get-NetFirewallSettings — глобальные параметры брандмауэра можно получить с помощью команды Get-NetFirewallSettings. Это такие параметры, как параметры сертификатов, организация очередей пакетов или списки авторизации;
- Rename-NetFirewallRule — данная команда позволяет переименовать существующее правило. Это полезно, если правило было создано без указания имени, таким образом получив случайный GUID в качестве название, и предпочтительно назначить читабельное название;
- Set-NetFirewallProfile — для установки определенных параметров отдельных профилей можно использовать команду Set-NetFirewallProfile. Это позволяет каждому профилю иметь различные настройки;
- Set-NetFirewallSettings — позволяет настроить поведение межсетевого экрана независимо от используемого профиля сети;
- Show-NetFirewallRule — эта вспомогательная команда отображает правила брандмауэра и связанные с ними объекты в виде отформатированного списка.
Данный модуль также включает расширенные возможности для управления IPSec. Указанные выше команды управляют стандартными настройками межсетевого экрана Windows.
Заключение
Существует множество команд для управления межсетевым экраном Windows. В этой статье рассматриваются только некоторые из них, наиболее важные команды для быстрого вывода списка, создания, изменения и удаления правил брандмауэра. Но с помощью модуля NetSecurity можно сделать настройки и посложнее.