Upravljanje pravil za požarni zid Windows s programom PowerShell

Ta članek zajema osnove upravljanja nastavitev in pravil vgrajenega požarnega zidu Windows iz ukazne vrstice PowerShell. Ogledali si bomo, kako omogočiti / onemogočiti požarni zid za različne profile, ustvariti in izbrisati pravila požarnega zidu ter razmislili o majhnem skriptu, ki vam omogoča, da ustvarite priročno tabelo s trenutnim naborom pravil o požarnem zidu..

Vsebina:

  • Upravljanje omrežnih profilov sistema Windows Firewall iz PowerShell-a
  • Ustvarite, uredite in izbrišite pravila požarnega zidu Windows iz PowerShell-a
  • Vnos pravilnikov požarnega zidu Windows prek PowerShell-a

Nastavitve požarnega zidu Windows lahko upravljate z nadzorne plošče grafične konzole -> Sistem in varnost -> Požarni zid Windows Defender. Vendar pa je od sistema Windows 8.1 (Windows Server 2012R2) v sistem dodan vgrajen modul PowerShell za nadzor nad vgrajenim požarnim zidom Netovarnost.

Prej je bil ukaz uporabljen za upravljanje pravil in nastavitev požarnega zidu Windows netsh požarni zid advfirewall .

V modulu NetSecurity v sistemu Windows 10 je na voljo 85 ukazov. Naštejete jih lahko:

Get-Command -Module NetSecurity

Upravljanje omrežnih profilov sistema Windows Firewall iz PowerShell-a

V požarnem zidu Windows obstajajo tri vrste omrežnih profilov:

  • Domena - velja za računalnike, ki so vključeni v domeno Active Directory;
  • Zasebno (zasebno) - domače ali delovno omrežje;
  • Javno - javne mreže.

Podatke o omrežju shranjuje storitev zavedanja omrežne lokacije (NLA) v bazo podatkov. Omrežni profil lahko spremenite, če je napačno določen.

Vsak profil se lahko razlikuje v naboru uporabljenih pravil požarnega zidu. Privzeto so vsi omrežni vmesniki računalnika zaščiteni s požarnim zidom in nanje so uporabljene vse tri vrste profilov..

Če želite omogočiti vse tri omrežne profile Domena, javni in zasebni, uporabite ukaz:

Set-NetFirewallProfile -All -Enabled True

Ali pa določite določen profil namesto Vsi:

Set-NetFirewallProfile -Profile Javni -Anabled True

Če želite onemogočiti požarni zid za vse tri omrežne profile, uporabite ukaz:

Set-NetFirewallProfile -All -Enabled False

Uporaba cmdlet Set-NetFirewallProfile lahko spremenite nastavitve profila (privzeto dejanje, beleženje, pot in velikost datoteke dnevnika, nastavitve opozoril itd.).

Kot verjetno veste, je požarni zid Windows privzeto vključen v sodobne operacijske sisteme za vse profile. V nastavitvah profila so dovoljene vse odhodne povezave, dohodne povezave pa so blokirane (razen tistih, ki so dovoljene).

Spremenite privzeto dejanje za javni profil - blokirajte vse dohodne povezave.

Set-NetFirewallProfile -Name Public -DefaultInboundAction Block

Trenutne nastavitve profila so lahko prikazane na naslednji način:

Get-NetFirewallProfile -Name Javno

Če nadzorujete nastavitve požarnega zidu Windows prek GPO, lahko trenutno prikazane nastavitve profila prikažete na naslednji način:

Get-NetFirewallProfile -policystore activestore

Preverite, ali vse nastavitve požarnega zidu veljajo za vse omrežne vmesnike računalnika.

Get-NetFirewallProfile -Name Javno | fl DisabledInterfaceAliases

Če so vsi vmesniki zaščiteni, naj ukaz vrne:

DisabledInterfaceAliases: NotConfigured

Za vmesnik lahko onemogočite določen profil (imena vmesnikov lahko navedete s pomočjo ukaznega okna Get-NetIPInterface).

Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"

Kot lahko vidite, zdaj javni profil ne velja za Ethernet0:

DisabledInterfaceAliases: Ethernet0

Nastavitve za beleženje omrežnih povezav lahko konfigurirate na ravni vsakega profila. Dnevniki požarnega zidu Windows so privzeto shranjeni v imeniku% systemroot% \ system32 \ LogFiles \ Firewall, velikost datoteke je 4 MB. Lahko spremenite, da omogočite beleženje povezave in povečate največjo velikost datoteke:

Set-NetFireWallProfile -Profil domene -LogBlocked True -LogMaxSize 20000 -LogFileName '% systemroot% \ system32 \ LogFiles \ Firewall \ pfirewall.log'

Ustvarite, uredite in izbrišite pravila požarnega zidu Windows iz PowerShell-a

Obstaja 9 cmdlet za upravljanje pravil požarnega zidu:

  • New-NetFirewallRule
  • Kopiraj-NetFirewallRule
  • Onemogoči-NetFirewallRule
  • Omogoči-NetFirewallRule
  • Get-NetFirewallRule
  • Odstrani-NetFirewallRule
  • Preimenovanje-NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Oglejmo si nekaj preprostih primerov odpiranja vrat v požarnem zidu Windows.

Če želite na primer dovoliti dohodne povezave TCP do vrat 80 in 443 za domenske in zasebne profile, uporabite ta ukaz:

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

Promet lahko dovolite ali blokirate za določen program. Na primer, želite blokirati odhodne povezave za FireFox:

New-NetFirewallRule -Program "C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox" -Napis "Block Firefox" -Direction Outbound

Dovoli dohodno povezavo RDP na pristanišču 3389 z le enim naslovom IP:

New-NetFirewallRule -DisplayName "DovoliRDP" -RemoteAddress 192.168.1.55 -Prihodni vhodni -Protocol TCP -LocalPort 3389 -Action Allow

Če želite omogočiti ping za naslove iz podomrežja, uporabite ukaze:

$ 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 "Dovoli vhodni ICMPv4" -Dodhodni vhod -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Allow

New-NetFirewallRule -DisplayName "Dovoli vhodni ICMPv6" -Dodhodni vhod -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Action Allow

V prejšnjem članku smo pokazali, kako lahko s pomočjo PowerShell-a blokirate dostop do spletnih mest ne samo po naslovu IP, temveč tudi po domeni DNS / imenu spletnega mesta.

Če želite urediti obstoječe pravilo požarnega zidu, uporabite ukazni ukaz Set-NetFirewallRule. Na primer, želite dovoliti dohodne povezave z določenega naslova IP za predhodno ustvarjeno pravilo:

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

Če morate v pravilo požarnega zidu dodati več naslovov IP, uporabite naslednji skript:

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

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

Natisnite vse naslove IP, ki jih vsebuje pravilo požarnega zidu:

Get-NetFirewallrule -DisplayName 'Dovoli vhodni ICMPv4' | Get-NetFirewallAddressFilter

Pravila požarnega zidu lahko omogočite / onemogočite z ukazom Disable-NetFirewallRule in Enable-NetFirewallRule.

Disable-NetFirewallRule -DisplayName „WEB-Inbound“

Če želite omogočiti ICMP (ping), zaženite ukaz:

Omogoči-NetFirewallRule -Name FPS-ICMP4-ERQ-In

Če želite odstraniti pravilo požarnega zidu, uporabite ukazni ukaz Remove-NetFirewallRule..

Navedba pravilnikov o požarnem zidu Windows prek PowerShell-a

Seznam aktivnih pravil za dohodni promet je prikazan na naslednji način:

Get-NetFirewallRule | kjer je ($ _. omogočeno -eq $ True) -and ($ _. smer -eq "vhodni") | ft

Na primer, če moramo navesti pravila, ki blokirajo odhodne:

Get-NetFirewallRule -Action Block -Anabled True -Direction Outbound

Če želite v pravilu prikazati ime programa:

Get-NetFirewallRule -Action Block -Anabled True -Direction Outbound | % $ _. Ime; $ _ | Get-NetFirewallApplicationFilter

Kot lahko vidite, cmdlet Get-NetFirewallRule ne navaja omrežnih vrat in IP naslovov za pravila požarnega zidu. Če želite prikazati vse informacije o dovoljenih dohodnih (odhodnih) povezavah v bolj priročni obliki s prikazanimi številkami vrat, uporabite naslednji skript:

Get-NetFirewallRule -Action Dovoli -Enabled True -Direction Vhod |
Oblika tabele - ime lastnosti,
@ Name = 'Protocol'; Izraz = ($ 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,
Omogočeno, Profil, smer, akcija

PowerShell zagotavlja obsežno upravljanje pravil požarnega zidu v ukazni vrstici. Skripte PowerShell lahko samodejno zaženete, da odprete / zaprete vrata, ko pride do določenih dogodkov. V naslednjem članku bomo razmislili o preprostem sistemu, ki temelji na požarnem zidu PowerShell in Windows za samodejno blokiranje naslovov IP, iz katerih se oddaljeno ugibanje gesla prek RDP izvaja na strežniku Windows VDS.