W tym artykule omówiono podstawy zarządzania ustawieniami i regułami wbudowanej zapory systemu Windows Defender z zabezpieczeniami zaawansowanymi z poziomu wiersza poleceń programu PowerShell. Przyjrzymy się, jak włączyć/wyłączyć zaporę dla różnych profili sieciowych, utworzyć lub usunąć reguły zapory oraz importować/eksportować reguły Zapory systemu Windows za pomocą programu PowerShell.
Zawartość:
- Jak włączyć lub wyłączyć zaporę systemu Windows Defender za pomocą programu PowerShell
- Utwórz reguły zapory systemu Windows za pomocą programu PowerShell
- Modyfikowanie istniejącej reguły zapory systemu Windows za pomocą programu PowerShell
- Jak włączyć/wyłączyć/usunąć regułę zapory systemu Windows za pomocą programu PowerShell
- PowerShell: Wyświetl listę aktywnych reguł w zaporze systemu Windows
Ustawieniami Zapory systemu Windows zarządza się zwykle za pomocą osobnej graficznej przystawki MMCwf.msc(Panel sterowania -> System i zabezpieczenia -> Zapora systemu Windows Defender -> Ustawienia zaawansowane). Większość operacji konfiguracji i zarządzania ustawieniami Zapory systemu Windows można wykonać z wiersza poleceń programu PowerShell. Możesz skorzystać z wbudowanegoBezpieczeństwo siecimoduł do tego (który jest dostępny w wersji Windows PowerShell 5.1 lub nowszej).
Możesz wyświetlić listę dostępnych poleceń cmdlet w module NetSecurity za pomocą polecenia:
Get-Command -Module NetSecurity

Wcześniejnetsh advfirewall firewallpolecenie zostało użyte do zarządzania regułami i ustawieniami Zapory systemu Windows.
Jak włączyć lub wyłączyć zaporę systemu Windows Defender za pomocą programu PowerShell
Zapora systemu Windows Defender jest domyślnie włączona.
Get-NetFirewallProfile | Format-Table Name, Enabled


W Zaporze systemu Windows istnieją trzy typy profili sieciowych:
- Domena– dotyczy komputerów przyłączonych do domeny Active Directory;
- Prywatny– sieci domowe, SOHO lub grupowe;
- Publiczny– sieci publiczne.
Domyślnie Zapora systemu Windows zezwala na wszystkie połączenia wychodzące i blokuje wszystkie połączenia przychodzące (z wyjątkiem tych, które są dozwolone) dla każdego profilu sieciowego.


Usługa Network Location Awareness (NLA) przechowuje w bazie danych informacje o typach sieci. Możesz ręcznie zmienić profil sieciowy (lokalizację) w systemie Windows, jeśli nie zostanie on poprawnie wykryty.
Dla każdego profilu sieciowego (lokalizacji) mogą być stosowane inne reguły zapory sieciowej. Domyślnie wszystkie interfejsy sieciowe komputera są chronione przez zaporę sieciową i stosowane są do nich wszystkie trzy typy profili.
Aby całkowicie wyłączyć zaporę systemu Windows, uruchom następujące polecenie
Set-NetFirewallProfile -All -Enabled False
Możesz też zamiast tego podać konkretną nazwę profiluWszystko:
Set-NetFirewallProfile -Profile Public -Enabled False
Aby włączyć Zaporę systemu Windows dla wszystkich trzech profili sieciowych, użyj następującego polecenia
Set-NetFirewallProfile -All -Enabled True
Wyświetla typ profilu mający zastosowanie do połączenia sieciowego:
Get-NetConnectionProfile


W tym przykładzie do połączenia sieciowego Ethernet0 zastosowano profil DomainAuthenticated.
Jeśli na komputerach zdalnych skonfigurowano usługę PowerShell Remoting (WinRM), można zarządzać regułami Zapory systemu Windows na tych komputerach. W tym przykładzie użyjemy polecenia cmdlet Invoke-Command do połączenia się ze zdalnymi komputerami na liście i wyłączenia na nich zapory sieciowej.
$computers = @('WKS01', 'WKS02', 'WKS03')
Invoke-Command -ComputerName $computers {Set-NetFirewallProfile -All -Enabled False}
Możesz zmienić domyślną akcję dla profilu publicznego, aby blokowała wszystkie połączenia przychodzące.
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
Aktualne ustawienia profilu można wyświetlić w następujący sposób:
Get-NetFirewallProfile -Name Public


Jeśli zarządzasz ustawieniami Zapory systemu Windows za pomocą obiektu GPO, możesz wyświetlić bieżące ustawienia profilu w następujący sposób:
Get-NetFirewallProfile -policystore activestore
Upewnij się, że wszystkie ustawienia zapory sieciowej są zastosowane do wszystkich interfejsów sieciowych na komputerze:
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
Jeśli wszystkie interfejsy są chronione, komenda powinna zwrócić:
DisabledInterfaceAliases : {NotConfigured}

Możesz wyłączyć określony profil dla interfejsu sieciowego (możesz wyświetlić listę kart sieciowych w systemie Windows za pomocą polecenia cmdlet Get-NetIPInterface):
Sugerowana lektura:Jak włączyć lub wyłączyć Zaporę systemu Windows w systemie Windows 10
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Jak widać, profil Publiczny nie jest już stosowany do interfejsu Ethernet0::
DisabledInterfaceAliases : {Ethernet0}

Możesz skorzystać zUstaw NetFirewallProfilecmdlet do zmiany ustawień profilu (domyślna akcja, ustawienia rejestrowania, ścieżka i rozmiar pliku dziennika, ustawienia powiadomień itp.). Możesz skonfigurować ustawienia rejestrowania połączeń sieciowych dla każdego profilu lokalizacji sieciowej. Domyślnie dzienniki Zapory systemu Windows są przechowywane w%systemroot%system32LogFilesFirewall, a rozmiar pliku to 4MB. Możesz włączyć rejestrowanie połączeń i zwiększyć maksymalny rozmiar pliku:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%system32LogFilesFirewallpfirewall.log’
Istnieje 9 poleceń cmdlet programu PowerShell do zarządzania regułami zapory w systemie Windows:
- Nowa reguła NetFirewall
- Skopiuj regułę NetFirewallRule
- Wyłącz regułę NetFirewallRule
- Włącz — NetFirewallRule
- Pobierz regułę NetFirewall
- Usuń-NetFirewallRule
- Zmień nazwę-NetFirewallRule
- Ustaw regułę NetFirewallRule
- Pokaż-NetFirewallRule
Rzućmy okiem na kilka prostych przykładów otwierania portów w Zaporze systemu Windows.
Na przykład, jeśli chcesz zezwolić na przychodzące połączenia TCP na portach TCP 80 i 443 zarówno dla profili domeny, jak i prywatnego, uruchom następującą komendę:
New-NetFirewallRule -DisplayName 'HTTP-Inbound' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('80', '443')


Możesz zezwolić lub zablokować dostęp do sieci dla określonej aplikacji (pliku wykonywalnego). Możesz na przykład zablokować połączenia wychodzące w przeglądarce Firefox:
New-NetFirewallRule -Program “C:Program Files (x86)Mozilla Firefoxfirefox.exe” -Action Block -Profile Domain, Private -DisplayName “Block Firefox browser” -Description “Block Firefox browser” -Direction Outbound
Zezwólmy na przychodzące połączenie RDP na domyślnym porcie TCP3389 tylko z jednego adresu IP:
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Aby zezwolić na pingi ICMP dla adresów IP z określonych zakresów adresów IP i podsieci, utwórz następującą regułę:
$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
Dodaj listę adresów IP z pliku tekstowego do reguły zapory sieciowej (jeden adres IP w wierszu):
$ips=Get-Content C:tempip.txt
Get-NetFirewallrule -DisplayName 'AllowRDP'|Set-NetFirewallRule -RemoteAddress $ips
W poprzednim artykule pokazaliśmy, jak używać programu PowerShell do blokowania dostępu do witryny internetowej nie tylko na podstawie adresu IP, ale także nazwy DNS witryny.
Zezwalaj na wszystkie połączenia przychodzące z określonego adresu IP. Spowoduje to dodanie adresu IP do białej listy zapory:
$IP = '192.168.1.20'
New-NetFirewallRule -DisplayName "Allow $IP" -Direction Inbound -Action Allow -RemoteAddress $IP
Modyfikowanie istniejącej reguły zapory systemu Windows za pomocą programu PowerShell
Jeśli chcesz edytować regułę zapory sieciowej, użyj metodyUstaw regułę NetFirewallRulepolecenie cmdlet. Na przykład możesz zezwolić na połączenia przychodzące z określonego adresu IP dla wcześniej utworzonej reguły:
Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
Aby dodać wiele adresów IP do reguły zapory, użyj następującego skryptu PowerShell:
$ips = @("192.168.2.15", "192.168.2.17",”192.168.100.15”)
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound'| Get-NetFirewallAddressFilter).RemoteAddress
$current_ips += $ips
Get-NetFirewallrule -DisplayName 'HTTP-Inbound'|Set-NetFirewallRule -RemoteAddress $current_ips
Lista wszystkich adresów IP w regule zapory:
Get-NetFirewallrule -DisplayName 'Http_inbound'|Get-NetFirewallAddressFilter
Usuń jeden adres IP z reguły zapory:
$removeip = "192.168.100.5"
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound'| Get-NetFirewallAddressFilter).RemoteAddress
$filterIP = $current_ips | Where-Object{ $_ -notin $removeip }
Get-NetFirewallrule -DisplayName 'HTTP-Inbound'|Set-NetFirewallRule -RemoteAddress $filterIP


Jak włączyć/wyłączyć/usunąć regułę zapory systemu Windows za pomocą programu PowerShell
Możesz skorzystać zWyłącz regułę NetFirewallRuleIWłącz — NetFirewallRulepolecenia cmdlet służące do włączania i wyłączania reguł zapory.
Disable-NetFirewallRule –DisplayName 'HTTP-Inbound'
Aby zezwolić na ICMP (ping), uruchom to polecenie:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Aby usunąć regułę zapory sieciowej, użyj metodyUsuń-NetFirewallRulepolecenie cmdlet.
Remove-NetFirewallRule -DisplayName 'HTTP-Inbound'
Aby zresetować wszystkie reguły zapory Microsoft i przywrócić ustawienia domyślne, uruchom następujące polecenie
netsh advfirewall reset
Lub:
(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
Spowoduje to usunięcie wszystkich ustawień zdefiniowanych przez użytkownika, a także reguł zapory Microsoft Defender. Pozostaną tylko reguły dostępu do sieci wbudowane w system Windows.
Przed zresetowaniem reguł zapory możesz wyeksportować bieżące ustawienia do pliku.
netsh advfirewall export "C:Backupfirewall-config.wfw"
Później możesz przywrócić stare ustawienia zapory, importując plik reguł:
netsh advfirewall import "C:Backupfirewall-config.wfw"
PowerShell: Wyświetl listę aktywnych reguł w zaporze systemu Windows
Listę włączonych reguł zapory sieciowej dla ruchu przychodzącego można wyświetlić w następujący sposób
Get-NetFirewallRule | where {($_.enabled -eq $True) -and ($_.Direction -eq "Inbound")} |ft
Możesz wyświetlić tylko listę reguł blokowania ruchu wychodzącego:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
Jeśli chcesz wyświetlić w regule nazwę programu (pliku wykonywalnego):
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %{$_.Name; $_ | Get-NetFirewallApplicationFilter}


Jak widać, polecenie cmdlet Get-NetFirewallRule nie wyświetla portów sieciowych ani adresów IP dla reguł zapory. Aby w wygodniejszy sposób wyświetlić szczegółowe informacje o dozwolonych połączeniach przychodzących (wychodzących) wraz z numerami portów, użyj następującego skryptu PowerShell:
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name,
@{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}},
Enabled,Profile,Direction,Action


PowerShell zapewnia szeroką gamę opcji zarządzania regułami Zapory systemu Windows z poziomu wiersza poleceń. Możesz automatycznie uruchamiać skrypty PowerShell, aby otwierać/zamykać porty, jeśli wystąpią określone zdarzenia. W następnym artykule przyjrzymy się prostym rozwiązaniom opartym na programie PowerShell i zaporze systemu Windows, które umożliwiają automatyczne blokowanie ataków brute-force RDP na hosta VDS z systemem Windows poprzez dodanie adresu IP atakującego do reguły zapory.















