Správa pravidel brány firewall systému Windows pomocí prostředí PowerShell

Tento článek popisuje základy správy nastavení a pravidel integrovaného Windows Firewall z příkazového řádku PowerShell. Budeme se zabývat tím, jak povolit / zakázat bránu firewall pro různé profily, vytvářet a mazat pravidla brány firewall, a zvážit malý skript, který vám umožní vytvořit pohodlnou tabulku s aktuální sadou aktivních pravidel brány firewall.

Obsah:

  • Správa síťových profilů brány Windows Firewall z prostředí PowerShell
  • Vytvářejte, upravujte a odstraňujte pravidla brány firewall systému Windows z prostředí PowerShell
  • Seznam pravidel brány firewall systému Windows pomocí prostředí PowerShell

Nastavení brány Windows Firewall můžete spravovat pomocí ovládacího panelu grafické konzoly -> Systém a zabezpečení -> Brána Windows Defender. Počínaje systémem Windows 8.1 (Windows Server 2012R2) byl však do systému přidán vestavěný modul PowerShell pro řízení vestavěné brány firewall Netsecurity.

Dříve se příkaz používal ke správě pravidel a nastavení brány Windows Firewall netsh advfirewall firewall .

V modulu NetSecurity v systému Windows 10 je k dispozici 85 příkazů. Můžete je uvést:

Get-Command - Modul NetSecurity

Správa síťových profilů brány Windows Firewall z prostředí PowerShell

V bráně Windows Firewall jsou tři typy síťových profilů:

  • Doména - vztahuje se na počítače zahrnuté do domény Active Directory;
  • Soukromé (soukromé) - domácí nebo pracovní sítě;
  • Veřejné - veřejné sítě.

Informace o typu sítě jsou uloženy službou NLA (Network Location Awareness) v databázi. Pokud je síťový profil definován nesprávně, můžete jej změnit.

Každý profil se může lišit v sadě použitých pravidel brány firewall. Ve výchozím nastavení jsou všechna síťová rozhraní počítače chráněna bránou firewall a na ně jsou aplikovány všechny tři typy profilů..

Chcete-li povolit všechny tři síťové profily Domain, Public a Private, použijte příkaz:

Set-NetFirewallProfile -All -Enabled True

Nebo zadejte konkrétní profil namísto Vše:

Set-NetFirewallProfile -Profile Public -Enabled True

Chcete-li vypnout bránu firewall pro všechny tři síťové profily, použijte příkaz:

Set-NetFirewallProfile - All -Enabled False

Použití rutiny Set-NetFirewallProfile můžete změnit nastavení profilu (výchozí akce, protokolování, cesta a velikost souboru protokolu, nastavení upozornění atd.).

Jak asi víte, ve výchozím nastavení je brána Windows Firewall součástí moderních operačních systémů pro všechny profily. V nastavení profilu jsou povolena všechna odchozí připojení a příchozí připojení jsou blokována (s výjimkou povolených).

Změňte výchozí akci pro veřejný profil - zablokujte všechna příchozí připojení.

Set-NetFirewallProfile -Name Public -DefaultInboundAction Block

Aktuální nastavení profilu lze zobrazit následovně:

Get-NetFirewallProfile -Name Public

Pokud ovládáte nastavení brány Windows Firewall pomocí GPO, můžete aktuální výsledné nastavení profilu zobrazit takto:

Get-NetFirewallProfile -policystore activestore

Ověřte, že všechna nastavení brány firewall platí pro všechna síťová rozhraní počítače.

Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases

Pokud jsou všechna rozhraní chráněna, příkaz by se měl vrátit:

DisabledInterfaceAliases: NotConfigured

Můžete zakázat konkrétní profil rozhraní (názvy rozhraní můžete vypsat pomocí rutiny Get-NetIPInterface).

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

Jak vidíte, nyní se veřejný profil netýká Ethernet0:

DisabledInterfaceAliases: Ethernet0

Nastavení pro protokolování síťových připojení můžete nakonfigurovat na úrovni každého profilu. Ve výchozím nastavení jsou protokoly brány Windows Firewall ukládány do adresáře% systemroot% \ system32 \ LogFiles \ Firewall, velikost souboru je 4 MB. Můžete změnit povolení protokolování připojení a zvětšit maximální velikost souboru:

Set-NetFireWallProfile - Profilová doména -LogBlocked True -LogMaxSize 20000 -LogFileName '% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log'

Vytvářejte, upravujte a odstraňujte pravidla brány firewall systému Windows z prostředí PowerShell

Pro správu pravidel brány firewall existuje 9 cmdlet:

  • New-NetFirewallRule
  • Copy-NetFirewallRule
  • Zakázat NetFirewallRule
  • Enable-NetFirewallRule
  • Get-NetFirewallRule
  • Remove-NetFirewallRule
  • Přejmenovat-NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Podívejme se na několik jednoduchých příkladů otevírání portů v bráně Windows Firewall.

Pokud například chcete povolit příchozí připojení TCP na porty 80 a 443 pro profily domény a soukromé, použijte tento příkaz:

New-NetFirewallRule -DisplayName 'WEB-Inbound' -Profile @ ('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @ ('80', '443')

Můžete povolit nebo blokovat provoz konkrétního programu. Například chcete blokovat odchozí připojení pro 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

Povolit příchozí připojení RDP na portu 3389 pouze s jednou adresou IP:

New-NetFirewallRule -DisplayName "AllowRDP" -RemoteAddress 192.168.1.55 -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow

Chcete-li povolit ping pro adresy ze zadané podsítě, použijte příkazy:

$ 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 "Povolit příchozí ICMPv4" - Přesměrování příchozí -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips-Povolit povolení

New-NetFirewallRule -DisplayName "Povolit příchozí ICMPv6" - Přesměrování příchozí -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips-Povolit povolení

V předchozím článku jsme ukázali, jak můžete pomocí PowerShell blokovat přístup k webům nejen podle IP adresy, ale také podle DNS domény / názvu webu.

Chcete-li upravit existující pravidlo brány firewall, použijte rutinu Set-NetFirewallRule. Chcete například povolit příchozí připojení ze zadané adresy IP pro dříve vytvořené pravidlo:

Get-NetFirewallrule -DisplayName 'WEB-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.20

Potřebujete-li do pravidla brány firewall přidat několik adres IP, použijte následující skript:

$ ips = @ ("192.168.1.50", "192.165.2.22", "192.168.1.20")

Get-NetFirewallrule -DisplayName 'WEB-Inbound' | Set-NetFirewallRule -RemoteAddress $ ips

Vytiskněte všechny adresy IP obsažené v pravidlu brány firewall:

Get-NetFirewallrule -DisplayName 'Povolit příchozí ICMPv4' | Get-NetFirewallAddressFilter

Pravidla brány firewall můžete povolit / zakázat pomocí cmdletů Disable-NetFirewallRule a Enable-NetFirewallRule..

Disable-NetFirewallRule - DisplayName 'WEB-Inbound'

Chcete-li povolit ICMP (ping), spusťte příkaz:

Enable-NetFirewallRule - název FPS-ICMP4-ERQ-In

Chcete-li odebrat pravidlo brány firewall, použijte rutinu Remove-NetFirewallRule..

Seznam pravidel brány firewall systému Windows pomocí prostředí PowerShell

Seznam aktivních pravidel pro příchozí provoz lze zobrazit takto:

Get-NetFirewallRule | kde ($ _. enabled -eq $ True) - a ($ _. Direction -eq "Inbound") | ft

Pokud například potřebujeme vypsat seznam blokovacích odchozích pravidel:

Get-NetFirewallRule - Blok aukcí - Povoleno True - Odchozí směrování

Pokud chcete v pravidle zobrazit název programu:

Get-NetFirewallRule - Blok aukcí - Povoleno True - Odchozí směrování | % $ _. Jméno; $ _ | Get-NetFirewallApplicationFilter

Jak vidíte, rutina Get-NetFirewallRule neuvádí porty síťových portů a IP adres pro pravidla brány firewall. Chcete-li pohodlněji zobrazit všechny informace o povolených příchozích (odchozích) připojeních se zobrazenými čísly portů, použijte následující skript:

Get-NetFirewallRule - Povolit povolení - Povoleno True - Přesměrování příchozí |
Tabulka formátů - Název vlastnictví,
@ 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,
Povoleno, Profil, Směr, Akce

PowerShell poskytuje rozsáhlou správu příkazového řádku pravidel brány firewall systému Windows. Pokud dojde k určitým událostem, můžete automaticky spouštět skripty PowerShell pro otevírání / zavírání portů. V dalším článku se budeme zabývat jednoduchým systémem založeným na PowerShell a Windows Firewall pro automatické blokování IP adres, ze kterých se na serveru Windows VDS provádí vzdálené hádání hesel pomocí RDP.