Správa pravidiel brány firewall systému Windows pomocou programu PowerShell

Tento článok sa zaoberá základmi správy nastavení a pravidiel zabudovanej brány Windows Firewall z príkazového riadka PowerShell. Preskúmame, ako zapnúť alebo vypnúť bránu firewall pre rôzne profily, vytvoriť a odstrániť pravidlá brány firewall, a zvážime malý skript, ktorý vám umožní vytvoriť pohodlnú tabuľku s aktuálnym súborom aktívnych pravidiel brány firewall..

obsah:

  • Správa sieťových profilov brány Windows Firewall z prostredia PowerShell
  • Vytvárajte, upravujte a odstraňujte pravidlá brány Windows Firewall z prostredia PowerShell
  • Zoznam pravidiel brány firewall systému Windows pomocou PowerShell

Nastavenia brány Windows Firewall môžete spravovať pomocou ovládacieho panela grafickej konzoly -> Systém a zabezpečenie -> Brána Windows Defender. Od systému Windows 8.1 (Windows Server 2012R2) bol však do systému pridaný vstavaný modul PowerShell na riadenie vstavanej brány firewall. NetSecurity.

Predtým príkaz slúžil na správu pravidiel a nastavení brány Windows Firewall netsh advfirewall firewall .

V module NetSecurity v systéme Windows 10 je k dispozícii 85 príkazov. Môžete ich uviesť:

Get-Command - Modul NetSecurity

Správa sieťových profilov brány Windows Firewall z prostredia PowerShell

V bráne Windows Firewall sú tri typy sieťových profilov:

  • Doména - týka sa počítačov zahrnutých do domény Active Directory;
  • Súkromné ​​(súkromné) - domáce alebo pracovné siete;
  • Verejno - verejné siete.

Informácie o type siete sa ukladajú službou NLA (Network Location Awareness) do databázy. Sieťový profil môžete zmeniť, ak je definovaný nesprávne.

Každý profil sa môže líšiť v použitej skupine pravidiel brány firewall. V predvolenom nastavení sú všetky sieťové rozhrania počítača chránené bránou firewall a na ne sa vzťahujú všetky tri typy profilov..

Ak chcete povoliť všetky tri sieťové profily Domain, Public a Private, použite príkaz:

Set-NetFirewallProfile -All -Enabled True

Alebo špecifikujte konkrétny profil namiesto všetkých:

Set-NetFirewallProfile -Profile Public -Enabled True

Ak chcete vypnúť bránu firewall pre všetky tri sieťové profily, použite príkaz:

Set-NetFirewallProfile -All -Enabled False

Používanie rutiny Set-NetFirewallProfile môžete zmeniť nastavenia profilu (predvolená akcia, protokolovanie, cesta a veľkosť súboru denníka, nastavenia upozornení atď.).

Ako pravdepodobne viete, v predvolenom nastavení je brána Windows Firewall súčasťou moderných operačných systémov pre všetky profily. V nastaveniach profilu sú povolené všetky odchádzajúce spojenia a prichádzajúce spojenia sú blokované (okrem povolených).

Zmeňte predvolenú akciu pre verejný profil - zablokujte všetky prichádzajúce pripojenia.

Set-NetFirewallProfile -Name Public -DefaultInboundAction Block

Aktuálne nastavenia profilu je možné zobraziť nasledovne:

Get-NetFirewallProfile -Name Public

Ak ovládate nastavenia brány Windows Firewall prostredníctvom objektu GPO, môžete zobraziť aktuálne výsledné nastavenia profilu takto:

Get-NetFirewallProfile -policystore Activestore

Overte, či sa všetky nastavenia brány firewall vzťahujú na všetky sieťové rozhrania počítača.

Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases

Ak sú všetky rozhrania chránené, príkaz by sa mal vrátiť:

DisabledInterfaceAliases: NotConfigured

Môžete zakázať konkrétny profil rozhrania (názvy rozhraní môžete vypísať pomocou rutiny Get-NetIPInterface).

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

Ako vidíte, verejný profil sa teraz nevzťahuje na Ethernet0:

DisabledInterfaceAliases: Ethernet0

Nastavenia pre protokolovanie sieťových pripojení môžete nakonfigurovať na úrovni každého profilu. Protokoly brány Windows Firewall sú predvolene uložené v adresári% systemroot% \ system32 \ LogFiles \ Firewall, veľkosť súboru je 4 MB. Môžete zmeniť zapnutie protokolovania pripojenia a zvýšiť maximálnu veľkosť súboru:

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

Vytvárajte, upravujte a odstraňujte pravidlá brány Windows Firewall z prostredia PowerShell

Na správu pravidiel brány firewall existuje 9 cmdlet:

  • New-NetFirewallRule
  • Copy-NetFirewallRule
  • zakázať NetFirewallRule
  • Enable-NetFirewallRule
  • Get-NetFirewallRule
  • Remove-NetFirewallRule
  • premenovanie NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Pozrime sa na niekoľko jednoduchých príkladov otvorenia portov v bráne Windows Firewall.

Napríklad, ak chcete povoliť prichádzajúce pripojenia TCP na porty 80 a 443 pre profily domény a súkromné, použite tento príkaz:

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

Môžete povoliť alebo zablokovať prenos pre konkrétny program. Napríklad chcete blokovať odchádzajúce pripojenia pre 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

Povoliť prichádzajúce pripojenie RDP na porte 3389 iba s jednou adresou IP:

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

Ak chcete povoliť ping pre adresy zo zadanej podsiete, použite prí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 "Povoliť prichádzajúce ICMPv4" - Presmerované prichádzajúce - Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips - Povolené povolenie

New-NetFirewallRule -DisplayName "Povoliť prichádzajúce ICMPv6" - Presmerované prichádzajúce - Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips - Povolené povolenie

V predchádzajúcom článku sme ukázali, ako môžete pomocou PowerShell blokovať prístup na stránky nielen podľa adresy IP, ale aj podľa domény DNS / názvu lokality..

Ak chcete upraviť existujúce pravidlo brány firewall, použite rutinu Set-NetFirewallRule. Napríklad chcete povoliť prichádzajúce pripojenia zo zadanej adresy IP pre predtým vytvorené pravidlo:

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

Ak potrebujete do pravidla brány firewall pridať niekoľko adries IP, použite nasledujúci skript:

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

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

Vytlačte všetky adresy IP obsiahnuté v pravidle brány firewall:

Get-NetFirewallrule -DisplayName 'Povoliť prichádzajúci ICMPv4' | Get-NetFirewallAddressFilter

Pravidlá brány firewall môžete povoliť alebo zakázať pomocou cmdletov Disable-NetFirewallRule a Enable-NetFirewallRule..

Disable-NetFirewallRule - DisplayName 'WEB-Inbound'

Ak chcete povoliť ICMP (ping), spustite príkaz:

Enable-NetFirewallRule - meno FPS-ICMP4-ERQ-In

Na odstránenie pravidla brány firewall použite cmdlet Remove-NetFirewallRule..

Zoznam pravidiel brány firewall systému Windows pomocou PowerShell

Zoznam aktívnych pravidiel pre prichádzajúcu komunikáciu je možné zobraziť nasledovne:

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

Ak napríklad potrebujeme uviesť zoznam blokujúcich odchádzajúcich pravidiel:

Get-NetFirewallRule - Blok aukcií - Povolené True - Výstup smerujúci

Ak chcete zobraziť názov programu v pravidle:

Get-NetFirewallRule - Blok aukcií - Povolené True - Odchádzajúce smerovanie | % $ _. Meno; $ _ | Get-NetFirewallApplicationFilter

Ako vidíte, cmdlet Get-NetFirewallRule neobsahuje zoznam sieťových portov a IP adries pre pravidlá brány firewall. Ak chcete pohodlnejšie zobraziť všetky informácie o povolených prichádzajúcich (odchádzajúcich) pripojeniach so zobrazenými číslami portov, použite nasledujúci skript:

Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Tabuľka formátu - názov vlastníctva,
@ 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,
Povolené, profil, smer, akcia

PowerShell poskytuje rozsiahlu správu príkazového riadku pravidiel brány firewall systému Windows. Pri výskyte určitých udalostí môžete automaticky spustiť skripty PowerShell na otváranie / zatváranie portov. V nasledujúcom článku sa budeme zaoberať jednoduchým systémom založeným na serveroch PowerShell a Windows Firewall na automatické blokovanie adries IP, z ktorých sa na serveri Windows VDS vykonáva diaľkové hádanie hesiel prostredníctvom protokolu RDP..