- Enable/disable firewall from command line
- Windows 10 / Windows 8/ Windows 7 / Server 2008 /Vista:
- Domain network
- Private network
- Public network
- Configure for all networks
- Older Windows versions – XP / Server 2003:
- Zone PC
- Настройка брандмауэра windows из командной строки
- Включение, выключение
- Правила на порты
- Ограничения по IP адресам
- Правила для приложений
- Комбинирования параметров
- Настройка брандмауэра Windows из командной строки cmd
- Выключение и включение
- Разрешение протоколов
- Закрытие и открытие портов
- Ограничения по IP адресам
- Правила для приложений
- Комбинирования параметров
- Управление правилами Windows Firewall с помощью PowerShell
- Управление сетевыми профилями брандмауэра Windows из PowerShell
- Создание, редактирование и удаление правил Windows Firewall из PowerShell
- Вывод правил Windows Firewall через PowerShell
Enable/disable firewall from command line
Windows firewall can be enabled/disabled from command line using netsh command.
Windows 10 / Windows 8/ Windows 7 / Server 2008 /Vista:
Let’s see the syntax of netsh advfirewall to configure firewall on these Windows versions. Firewall settings are different for each of the 3 networks(Domain, private, public). So based on which network firewall you want to enable/disable, the command would vary.
You can turn on firewall for the current network profile(does not matter if it’s domain/private/public network) using the below command.
Turn off firewall for the current profile:
These commands should be run from an elevated administrator command prompt. Otherwise you would get the below error.
To enable/disable firewall for a specific network profile, you can use the below commands.
Domain network
Turn on Domain network firewall:
Turn off domain network firewall:
Private network
Turn on private network firewall:
Turn off private network firewall:
Public network
Turn on public network firewall:
Turn off public network firewall:
Configure for all networks
Turn on firewall for all networks
Turn off firewall for all networks
Older Windows versions – XP / Server 2003:
Below is the command to turn on firewall.
The command to turn off firewall is:
Administrator privileges are required to configure firewall so above command can be run only from admin accounts.
netsh firewall is deprecated in new versions.
In Windows 10/ 8 / 7 / Vista/ Server 2008, ‘netsh firewall‘ command prints message like below.
running it from normal cmd give this error.
Open cmd as with ‘run as adminitrator’ option.
Awesome article, Thank you very much
Thank you very much
Thanks A lot for sharing knowledge
Wanna add note :
the old command netsh.exe firewall set opmode disable or enable this command was Used only with Public profile for windows to set it on Or off . But The new Command Specially this : Netsh.exe advfirewall set allprofiles state on (Perfect Command)
Really …… Thanks too much for sharing this I spent a long time in searching for such this this command because it’s Comprehensive for security issue .
Typo:
Turn on public network firewall:
netsh advfirewall set publicprofile state on
Turn on public network firewall:
__
netsh advfirewall set publicprofile state off
Just trying to help
Thank you very much
First article that solves all my issues with clear exampls
Zone PC
Настройка брандмауэра windows из командной строки
В Windows server 2008 (R2), а также в обычных Windows vista, 7, 8 есть встроенный брандмауэр (firewall). В этой статье расмотрим несколько примеров как создавать правила из командной строки, также эти команды можно использовать при написании своих пакетных сценариев cmd, bat, powershell.
Все команды нужно выполнять из коммандной строки cmd запущенной с правами администратора.
Включение, выключение
Включение отдельных профилей:
Выключение отдельных профилей:
Запретить все входяшие соединения и разрешить все исходяшие:
Правила на порты
Разрешить входящие TCP и UDP соединения для 80 порта:
Запретить входящие на 80 порт:
Открыть диапозон портов для исходящего UDP трафика
Удалять правила можно по имени
Ограничения по IP адресам
Правила можно ограничивать для работы только с одним ip:
Или ограничивать по подсетями причем можно использовать разный синтаксис:
Правила для приложений
Разрешить соединения для программы MyApp.exe
Комбинирования параметров
Параметры можно соединять в довольно сложные цепочки:
В данном случае мы создали правило для программы, которое работает при если компьютер подключен к доменну организации (profile=domain) и определенны три диапозона ip адресов.
Подробней о настройках брандмауэра можно прочитать на сайте микрософта там же есть отличия от сторого синтаксиса который использовался на Windows XP и Windows server 2003:
Часть примеров были взяты из статьи на английском языке:
Настройка брандмауэра Windows из командной строки cmd
Брандмауэром Windows можно управлять не только привычным всем способом — через окна панели управления. Командная строка Windows так же имеет команды для управления собственным файрволом операционной системы Microsoft.
Способ управления брандмауэром через командную строку имеет массу незаменимых преимуществ перед оконным способом. Если вы хорошо владеете командной строкой, то гораздо быстрей выполните необходимые настройки написав нужные команды в cmd, чем кликая курсором по окнам. К тому же, консольный способ дает возможность управлять брандмауэром удаленного компьютера незаметно для его пользователя.
Рассмотрим подробнее какие команды есть для настройки брандмауэра Windows из командной строки CMD.
Для управление брандмауэром с помощью команд, командную строку CMD необходимо запустить с правами администратора.
Выключение и включение
Выключение сетевых профилей:
Включение сетевых профилей:
Запрет всех входящих соединений и разрешение исходящих:
Разрешение протоколов
Следующее правило принимает входящий трафик по ICMP-протоколу, проще говоря разрешает ping:
Закрытие и открытие портов
Разрешение входящих протоколов TCP и UDP на 80 порт:
Запрет входящих протоколов на 80 порт:
Открыть диапозон портов для исходящего UDP трафика
Удаление правил по имени
Ограничения по IP адресам
правило ограничивающие подключение одно ip-адреса
Ограничение подключений с диапазона ip-адресов или сетей.
Правила для приложений
Разрешить соединения для программы MyApp.exe
Комбинирования параметров
Можно использовать длинные выражения путем комбинирования сразу нескольких параметров:
Мы создали правило, которое разрешает входящие соединения к приложению MyApp из сетей с ip-адресами 157.60.0.1,172.16.0.0/16 и доменным профилем сетевого подключения.
На официальном сайте Microsoft можно ознакомится с примерами сравнения старого контекста Windows XP и нового, который начал использоваться в Windows 7.
Управление правилами Windows Firewall с помощью PowerShell
Эта статья посвящена основам управления настройками и правилами встроенного Windows Firewall из командной строки PowerShell. Мы рассмотрим, как включать/отключать брандмауэр для различных профилей, создавать и удалять правила файервола, и рассмотрим небольшой скрипт, позволяющий сформировать удобную таблицу с текущим набором активных правил брандмауэра.
Вы можете управлять настройками Windows Firewall из графической консоли Control Panel -> System and Security -> Windows Defender Firewall. Однако начиная с Windows 8.1 (Windows Server 2012R2) для управления встроенным брандмауэром в систему был добавлен встроенный PowerShell модуль NetSecurity.
В модуле NetSecurity в Windows 10 доступно 85 команд. Вы можете вывести их список:
Get-Command -Module NetSecurity
Управление сетевыми профилями брандмауэра Windows из PowerShell
В Windows Firewall есть три типа сетевых профилей:
- Domain (Доменный) – применяется к компьютерам, включенным в домен Active Directory;
- Private (Частный) – домашние или рабочие сети;
- Public (Общий) – общедоступные сети.
Каждый профиль может отличаться используемым набором правил файервола. По умолчанию все сетевые интерфейсы компьютера защищены фаейрволом и к ним применяются все три типа профилей.
Чтобы включить все три сетевых профиля Domain, Public и Private, используйте команду:
Set-NetFirewallProfile -All -Enabled True
Либо укажите конкретный профиль вместо All:
Set-NetFirewallProfile -Profile Public -Enabled True
Чтобы отключить файервол для всех трех сетевых профилей, используется команда:
Set-NetFirewallProfile -All -Enabled False
С помощью командлета Set-NetFirewallProfile вы можете изменить параметры профиля (действие по-умолчанию, журналирование, путь и размер файла журнала, настройки оповещений и т.д.).
Как вы вероятно знаете, по умолчанию Windows Firewall включен в современных ОС для всех профилей. В настройках профилей разрешены все исходящие подключения и блокируется входящие (кроме разрешенных).
Изменим действие по-умолчнию для профиля Public – заблокировать все входящие подключения.
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
Текущие настройки профиля можно вывести так:
Get-NetFirewallProfile -Name Public
Если вы управляете настройками Windows Firewall через GPO, вы можете вывести текущие результирующие настройки профилей так:
Get-NetFirewallProfile -policystore activestore
Проверим, что все параметры брандмауэра применяются ко всем сетевым интерфейса компьютера.
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
Если все интерфейсы защищены, команда должна вернуть:
Можно отключить определенный профиль для интерфейса (вывести список имен интерфейсов можно с помощью командлета Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases «Ethernet0»
Как вы видите, теперь профиль Public не применяется к интерфейсу Ethernet0:
Вы можете настроить параметры логирования сетевых подключений на уровне каждого профиля. По умолчанию журналы Windows Firewall хранятся в каталоге %systemroot%\system32\LogFiles\Firewall, размер файла – 4 Мб. Вы можете изменить включить журналирование подключений и увеличить максимальный размер файла:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%\system32\LogFiles\Firewall\pfirewall.log’
Создание, редактирование и удаление правил Windows Firewall из PowerShell
Для управления правилами брандмауэра есть 9 командлетов:
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
Рассмотрим несколко простых примеров открытия портов в Windows Firewall.
Например, вы хотите разрешить входящие TCP подключения на порты 80 и 443 для профилей Domain и Private, воспользуйтесь такой командой:
New-NetFirewallRule -DisplayName ‘WEB-Inbound’ -Profile @(‘Domain’, ‘Private’) -Direction Inbound -Action Allow -Protocol TCP -LocalPort @(’80’, ‘443’)
Вы можете разрешить или заблокировать трафик для конкретной программы. Например, вы хотите заблокировать исходящие соединения для FireFox:
New-NetFirewallRule -Program “C:\Program Files (x86)\Mozilla Firefox\firefox.exe” -Action Block -Profile Domain, Private -DisplayName “Block Firefox” -Description “Block Firefox” -Direction Outbound
Разрешим входящее RDP подключение по порту 3389 только с IP одного адреса:
New-NetFirewallRule -DisplayName «AllowRDP» –RemoteAddress 192.168.1.55 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Чтобы разрешить ping для адресов из указанной подсети, используйте команды:
$ips = @(«192.168.1.50-192.168.1.60», «192.165.2.22-192.168.2.200», ”10.10.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
Чтобы отредактировать имеющееся правило брандмауэра, используется командлет Set-NetFirewallRule. Например, вы хотите разрешить входящие подключения с указанного IP адреса для ранее созданного правила:
Get-NetFirewallrule -DisplayName ‘WEB-Inbound’ | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.20
Если нужно добавить в правило файервола несколько IP адресов, используйте такой скрипт:
$ips = @(«192.168.1.50», «192.165.2.22»,”192.168.1.20”)
Get-NetFirewallrule -DisplayName ‘WEB-Inbound’|Set-NetFirewallRule -RemoteAddress $ips
Вывести все IP адреса, которые содержатся в правиле брандмауэра:
Get-NetFirewallrule -DisplayName ‘Allow inbound ICMPv4’|Get-NetFirewallAddressFilter
Вы можете включать/отключать правила файервола с помощью командлетов Disable-NetFirewallRule и Enable-NetFirewallRule.
Disable-NetFirewallRule –DisplayName ‘WEB-Inbound’
Чтобы разрешить ICMP (ping), выполните команду:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Чтобы удалить правило брандмауэре используется командлет Remove-NetFirewallRule.
Вывод правил Windows Firewall через PowerShell
Список активных правил для входящего трафика можно вывести так:
Если, например, нам нужно вывести список блокирующих исходящих правил:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
Если нужно отобразить имя программы в правиле:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %
Как вы видите командлет Get-NetFirewallRule не выводит порты сетевые порты и IP адреса для правил брандмауэра. Чтобы вывести всю информацию о разрешенных входящих (исходящих) подключениях в более удобном виде с отображением номеров портов, используйте такой скрипт:
PowerShell предоставляет широкие возможности по управлению правилами Windows Firewall из командной строки. Вы можете автоматически запускать скрипты PowerShell для открытия/закрытия портов при возникновении определенных событий. В следующей статье мы рассмотрим простую систему на базе PowerShell и Windows Firewall для автоматической блокировки IP адресов, с которых выполняется удаленный перебор паролей по RDP на Windows VDS сервере.