Тази статия обхваща основите на управлението на настройките и правилата на вградената защитна стена на Windows от командния ред PowerShell. Ще разгледаме как да активирате / деактивирате защитната стена за различни профили, да създадете и изтриете правила за защитна стена и да разгледаме малък скрипт, който ви позволява да създадете удобна таблица с текущия набор от правила за активна защитна стена.
Съдържание:
- Управление на мрежови профили на Windows Firewall от PowerShell
- Създавайте, редактирайте и изтривайте правилата за защитна стена на Windows от PowerShell
- Изброяване на правилата на защитната стена на Windows чрез PowerShell
Можете да управлявате настройките на защитната стена на Windows от Контролния панел на графичната конзола -> Система и сигурност -> Защитна стена на Windows Defender. Въпреки това, като се започне от Windows 8.1 (Windows Server 2012R2), към системата беше добавен вграден модул PowerShell за контрол на вградената защитна стена NetSecurity.
Преди това командата, използвана за управление на правилата и настройките на защитната стена на Windowsnetsh защитна стена на advfirewall
. В модула NetSecurity на Windows 10 има 85 команди. Можете да ги изброите:
Get-Command -Module NetSecurity
Управление на мрежови профили на Windows Firewall от PowerShell
Има три типа мрежови профили в защитната стена на Windows:
- Домен - важи за компютри, включени в домейн на Active Directory;
- Частни (частни) - домашни или работни мрежи;
- Обществено - публични мрежи.
Всеки профил може да се различава в набора от използвани правила за защитна стена. По подразбиране всички мрежови интерфейси на компютър са защитени от защитна стена и към тях се прилагат и трите типа профили..
За да активирате и трите мрежови профила Domain, Public и Private, използвайте командата:
Set-NetFirewallProfile -All -Enabled True
Или посочете конкретен профил вместо Всички:
Set-NetFirewallProfile -Profile Public -Enabled True
За да деактивирате защитната стена и за трите мрежови профила, използвайте командата:
Set-NetFirewallProfile -All -Enabled False
Използване на командлета Set-NetFirewallProfile
можете да промените настройките на профила (действие по подразбиране, регистрация, път и размер на лог файла, настройки за предупреждение и т.н.).
Както вероятно знаете, по подразбиране защитната стена на Windows е включена в съвременните операционни системи за всички профили. В настройките на профила са разрешени всички изходящи връзки, а входящите връзки са блокирани (с изключение на тези, които са разрешени).
Променете действието по подразбиране за публичния профил - блокирайте всички входящи връзки.
Set-NetFirewallProfile -Name Public -DefaultInboundAction Block
Текущите настройки на профила могат да бъдат показани, както следва:
Get-NetFirewallProfile -Name Public
Ако контролирате настройките на защитната стена на Windows чрез GPO, можете да покажете текущите получени настройки на профила, както следва:
Get-NetFirewallProfile -policystore activestore
Проверете дали всички настройки на защитната стена важат за всички мрежови интерфейси на компютъра.
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
Ако всички интерфейси са защитени, командата трябва да върне:
DisabledInterfaceAliases: NotConfigured
Можете да деактивирате конкретен профил за интерфейс (можете да изброите имената на интерфейса с помощта на командлета Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Както можете да видите, сега публичният профил не важи за Ethernet0:
DisabledInterfaceAliases: Ethernet0
Можете да конфигурирате настройките за регистриране на мрежови връзки на нивото на всеки профил. По подразбиране регистрационните файлове на защитната стена на Windows се съхраняват в директорията% systemroot% \ system32 \ LogFiles \ Firewall, размерът на файла е 4 MB. Можете да промените, за да активирате регистрирането на връзката и да увеличите максималния размер на файла:
Set-NetFireWallProfile -Profile домейн -LogBlocked True -LogMaxSize 20000 -LogFileName '% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log'
Създавайте, редактирайте и изтривайте правилата за защитна стена на Windows от PowerShell
Има 9 cmdlets за управление на правила за защитна стена:
- Нова NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Активиране-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Преименуване-NetFirewallRule
- Set-NetFirewallRule
- Покажи-NetFirewallRule
Нека разгледаме някои прости примери за отваряне на портове в защитната стена на Windows.
Например, ако искате да разрешите входящи TCP връзки към портове 80 и 443 за домейн и частни профили, използвайте тази команда:
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“ -Акционен блок -Профил на домейна, Private -DisplayName „Block Firefox“ -Описание „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 чрез PowerShell
Списъкът с активни правила за входящ трафик може да бъде показан, както следва:
Get-NetFirewallRule | където ($ _. активиран -eq $ True) -и ($ _. посока -eq "Входящ") | ft
Ако например трябва да изброим блокиращите изходящи правила:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
Ако искате да покажете името на програмата в правилото:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | % $ _. Име; $ _ | Get-NetFirewallApplicationFilter
Както можете да видите, командлетът Get-NetFirewallRule не изброява мрежовите портове и IP адреси за правила на защитната стена. За да покажете цялата информация за разрешени входящи (изходящи) връзки в по-удобна форма с показани номера на портове, използвайте следния скрипт:
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Формат-таблица-Име на свойството,
@ Name = 'Protocol'; Expression = ($ PSItem | Get-NetFirewallPortFilter) .Protocol,
@ Name = 'LocalPort'; Expression = ($ PSItem | Get-NetFirewallPortFilter) .LocalPort,
@ Name = 'RemotePort'; Expression = ($ PSItem | Get-NetFirewallPortFilter) .RemotePort,
@ Name = 'RemoteAddress'; Expression = ($ PSItem | Get-NetFirewallAddressFilter) .RemoteAddress,
Активиран, профил, посока, действие
PowerShell осигурява широко управление на командния ред на правилата на защитната стена на Windows. Можете автоматично да стартирате скриптове на PowerShell, за да отворите / затворите портовете, когато се случват определени събития. В следващата статия ще разгледаме проста система, базирана на PowerShell и защитната стена на Windows за автоматично блокиране на IP адреси, от които отдалечено познаване на парола чрез RDP се извършва на Windows VDS сървър.