W tym artykule omówiono podstawy zarządzania ustawieniami i regułami wbudowanej Zapory systemu Windows z wiersza polecenia programu PowerShell. Przyjrzymy się, jak włączyć / wyłączyć zaporę ogniową dla różnych profili, tworzyć i usuwać reguły zapory ogniowej oraz rozważyć mały skrypt, który pozwala utworzyć wygodną tabelę z bieżącym zestawem aktywnych reguł zapory ogniowej.
Treść
- Zarządzanie profilami sieciowymi Zapory systemu Windows za pomocą programu PowerShell
- Twórz, edytuj i usuwaj reguły Zapory systemu Windows z PowerShell
- Wyświetlanie reguł Zapory systemu Windows za pomocą programu PowerShell
Możesz zarządzać ustawieniami Zapory systemu Windows z konsoli sterowania Panel sterowania -> System i zabezpieczenia -> Zapora systemu Windows Defender. Jednak począwszy od systemu Windows 8.1 (Windows Server 2012R2) do systemu dodano wbudowany moduł PowerShell w celu sterowania wbudowaną zaporą Netsecurity.
Wcześniej polecenie służyło do zarządzania regułami i ustawieniami Zapory systemu WindowsZapora sieciowa netsh advfirewall
. W module NetSecurity w systemie Windows 10 dostępnych jest 85 poleceń. Możesz je wymienić:
Get-Command -Moduł NetSecurity
Zarządzanie profilami sieciowymi Zapory systemu Windows za pomocą programu PowerShell
Istnieją trzy rodzaje profili sieciowych w Zaporze systemu Windows:
- Domena - dotyczy komputerów wchodzących w skład domeny Active Directory;
- Prywatne (prywatne) - sieci domowe lub służbowe;
- Publiczne - sieci publiczne.
Każdy profil może różnić się zestawem używanych reguł zapory. Domyślnie wszystkie interfejsy sieciowe komputera są chronione zaporą ogniową, a wszystkie trzy typy profili są do nich stosowane..
Aby włączyć wszystkie trzy profile sieciowe Domena, Publiczny i Prywatny, użyj polecenia:
Set-NetFirewallProfile -All -Enabled True
Lub określ konkretny profil zamiast Wszystkie:
Set-NetFirewallProfile -Profile Public -Enabled True
Aby wyłączyć zaporę dla wszystkich trzech profili sieciowych, użyj polecenia:
Set-NetFirewallProfile -All -Enabled False
Za pomocą polecenia cmdlet Set-NetFirewallProfile
możesz zmienić ustawienia profilu (domyślne działanie, rejestrowanie, ścieżka i rozmiar pliku dziennika, ustawienia alertów itp.).
Jak zapewne wiesz, domyślnie Zapora systemu Windows jest zawarta w nowoczesnych systemach operacyjnych dla wszystkich profili. W ustawieniach profilu wszystkie połączenia wychodzące są dozwolone, a połączenia przychodzące są blokowane (oprócz dozwolonych).
Zmień domyślną akcję dla profilu publicznego - blokuj wszystkie połączenia przychodzące.
Set-NetFirewallProfile -Name Public -DefaultInboundAction Block
Bieżące ustawienia profilu można wyświetlić w następujący sposób:
Get-NetFirewallProfile -Name Public
Jeśli kontrolujesz ustawienia Zapory systemu Windows za pomocą obiektu zasad grupy, możesz wyświetlić bieżące ustawienia profilu wynikowego w następujący sposób:
Get-NetFirewallProfile -policystore activestore
Sprawdź, czy wszystkie ustawienia zapory mają zastosowanie do wszystkich interfejsów sieciowych komputera.
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
Jeśli wszystkie interfejsy są chronione, polecenie powinno zwrócić:
DisabledInterfaceAliases: NotConfigured
Możesz wyłączyć określony profil dla interfejsu (możesz wyświetlić nazwy interfejsów za pomocą polecenia cmdlet Get-NetIPInterface).
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases „Ethernet0”
Jak widać, teraz profil publiczny nie dotyczy Ethernet0:
DisabledInterfaceAliases: Ethernet0
Możesz skonfigurować ustawienia rejestrowania połączeń sieciowych na poziomie każdego profilu. Domyślnie dzienniki Zapory systemu Windows są przechowywane w katalogu% systemroot% \ system32 \ LogFiles \ Firewall, rozmiar pliku to 4 MB. Możesz zmienić, aby włączyć rejestrowanie połączeń i zwiększyć maksymalny rozmiar pliku:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName '% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log'
Twórz, edytuj i usuwaj reguły Zapory systemu Windows z PowerShell
Dostępnych jest 9 poleceń cmdlet do zarządzania regułami zapory:
- New-NetFirewallRule
- Copy-NetFirewallRule
- Disable-NetFirewallRule
- Enable-NetFirewallRule
- Get-NetFirewallRule
- Remove-NetFirewallRule
- Rename-NetFirewallRule
- Set-NetFirewallRule
- Show-NetFirewallRule
Spójrzmy 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 do portów 80 i 443 dla profili domen i prywatnych, użyj tego polecenia:
New-NetFirewallRule -DisplayName „WEB-Inbound” -Profile @ („Domain”, „Private”) -Direction Inbound -Action Allow -Protocol TCP -LocalPort @ („80”, „443”)
Możesz zezwolić lub zablokować ruch dla określonego programu. Na przykład chcesz zablokować połączenia wychodzące dla FireFox:
New-NetFirewallRule -Program „C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe” -Akcja Blok -Profile Domena, Prywatna -DisplayName „Blokuj Firefox” -Opis „Blokuj Firefox” -Kierunek wychodzący
Zezwalaj na przychodzące połączenie RDP na porcie 3389 z tylko jednym adresem IP:
New-NetFirewallRule -DisplayName „AllowRDP” -RemoteAddress 192.168.1.55 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
Aby włączyć polecenie ping dla adresów z określonej podsieci, użyj poleceń:
$ 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 "Zezwól na przychodzące ICMPv4" -Direction Przychodzące-Protokół ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Allow
New-NetFirewallRule -DisplayName "Zezwól na przychodzące ICMPv6" -Direction Przychodzące-Protokół ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Action Allow
Aby edytować istniejącą regułę zapory, użyj polecenia cmdlet Set-NetFirewallRule. Na przykład chcesz zezwolić na połączenia przychodzące z określonego adresu IP dla wcześniej utworzonej reguły:
Get-NetFirewallrule -DisplayName „WEB-Inbound” | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.20
Jeśli chcesz dodać kilka adresów IP do reguły zapory, użyj następującego skryptu:
$ ips = @ („192.168.1.50”, „192.165.2.22”, „192.168.1.20”)
Get-NetFirewallrule -DisplayName „WEB-Inbound” | Set-NetFirewallRule -RemoteAddress $ ips
Wydrukuj wszystkie adresy IP zawarte w regule zapory:
Get-NetFirewallrule -DisplayName „Zezwól na przychodzące ICMPv4” | Get-NetFirewallAddressFilter
Można włączyć / wyłączyć reguły zapory za pomocą poleceń cmdlet Disable-NetFirewallRule i Enable-NetFirewallRule.
Disable-NetFirewallRule -DisplayName „WEB-Inbound”
Aby włączyć ICMP (ping), uruchom polecenie:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Aby usunąć regułę zapory, użyj polecenia cmdlet Remove-NetFirewallRule..
Wyświetlanie reguł Zapory systemu Windows za pomocą programu PowerShell
Lista aktywnych reguł dla ruchu przychodzącego może być wyświetlana w następujący sposób:
Get-NetFirewallRule | gdzie ($ _. włączone -eq $ True) -i ($ _. Kierunek -eq „Przychodzące”) | ft
Jeśli na przykład musimy wymienić reguły blokujące wychodzące:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
Jeśli chcesz wyświetlić nazwę programu w regule:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | % $ _. Nazwa; $ _ | Get-NetFirewallApplicationFilter
Jak widać, polecenie cmdlet Get-NetFirewallRule nie wyświetla portów portów sieciowych i adresów IP dla reguł zapory. Aby wyświetlić wszystkie informacje o dozwolonych połączeniach przychodzących (wychodzących) w wygodniejszej formie z wyświetlonymi numerami portów, użyj następującego skryptu:
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,
Włączone, profil, kierunek, działanie
PowerShell zapewnia kompleksowe zarządzanie regułami Zapory systemu Windows w wierszu polecenia. Możesz automatycznie uruchamiać skrypty PowerShell, aby otwierać / zamykać porty, gdy wystąpią określone zdarzenia. W następnym artykule rozważymy prosty system oparty na PowerShell i Zaporze systemu Windows do automatycznego blokowania adresów IP, z których zdalne odgadywanie hasła przez RDP odbywa się na serwerze Windows VDS.