A Windows tűzfalszabályok kezelése a PowerShell használatával

Ez a cikk a beágyazott Windows tűzfal beállításainak és szabályainak a PowerShell parancssorból történő kezelésének alapjait tartalmazza. Megvizsgáljuk, hogyan lehet engedélyezni / letiltani a különféle profilok tűzfalait, létrehozni és törölni a tűzfalszabályokat, és megvizsgáljuk egy kis szkriptet, amely lehetővé teszi kényelmes tábla létrehozását az aktív tűzfalszabályok jelenlegi készletével.

Tartalom:

  • A Windows tűzfal hálózati profiljainak kezelése a PowerShell segítségével
  • Hozzon létre, szerkeszthet és törölhet Windows tűzfalszabályokat a PowerShellből
  • A Windows tűzfalszabályok felsorolása a PowerShell segítségével

A Windows tűzfal beállításait a grafikus konzol Vezérlőpultja -> Rendszer és biztonság -> segítségével kezelheti Windows Defender tűzfal. A Windows 8.1-től (Windows Server 2012R2) kezdve azonban egy beépített PowerShell modult adtak a rendszerhez a beépített tűzfal vezérléséhez. NetSecurity.

Korábban a parancs a Windows tűzfal szabályainak és beállításainak kezelésére szolgált netsh advfirewall tűzfal .

A Windows 10 NetSecurity moduljában 85 parancs érhető el. Felsorolhatja őket:

Get-Command -modul NetSecurity

A Windows tűzfal hálózati profiljainak kezelése a PowerShell segítségével

A Windows tűzfalban háromféle hálózati profil létezik:

  • Tartomány - az Active Directory tartományba tartozó számítógépekre vonatkozik;
  • Magán (magán) - otthoni vagy munkahelyi hálózatok;
  • Nyilvános - nyilvános hálózatok.

A hálózat típusú információkat a Network Location Awareness (NLA) szolgáltatás tárolja az adatbázisban. Megváltoztathatja a hálózati profilt, ha azt helytelenül határozták meg.

Az egyes profilok különbözhetnek a használt tűzfalszabályok között. Alapértelmezés szerint a számítógép összes hálózati felületét tűzfal védi, és mindhárom típusú profil alkalmazandó rájuk..

A tartomány, a nyilvános és a magánhálózat mindhárom hálózati profiljának engedélyezéséhez használja a következő parancsot:

Set-NetFirewallProfile -All -Enabled True

Vagy adjon meg egy adott profilt az Összes helyett:

Set-NetFirewallProfile -Profile Public - Ennabled True

A tűzfalak letiltásához mindhárom hálózati profilhoz használja a következő parancsot:

Set-NetFirewallProfile -All -Enabled False

A parancsmag használata Set-NetFirewallProfile megváltoztathatja a profilbeállításokat (alapértelmezett művelet, naplózás, a naplófájl elérési útja és mérete, riasztási beállítások stb.).

Mint valószínűleg tudja, alapértelmezés szerint a Windows tűzfala minden profil modern operációs rendszerében található. A profilbeállításokban minden kimenő kapcsolat megengedett és a bejövő kapcsolatok blokkolva vannak (kivéve az engedélyezett).

Változtassa meg a nyilvános profil alapértelmezett műveletét - blokkolja az összes bejövő kapcsolatot.

Set-NetFirewallProfile -Name nyilvános -DefaultInboundAction Block

Az aktuális profilbeállítások az alábbiak szerint jeleníthetők meg:

Get-NetFirewallProfile -Name Nyilvános

Ha a Windows tűzfal beállításait csoportházirend-objektummal kezeli, akkor az aktuális eredményül kapott profilbeállításokat az alábbiak szerint jelenítheti meg:

Get-NetFirewallProfile -policystore aktív áruház

Ellenőrizze, hogy az összes tűzfal-beállítás vonatkozik-e a számítógép minden hálózati felületére.

Get-NetFirewallProfile -Name Nyilvános | fl DisabledInterfaceAliases

Ha az összes interfész védett, akkor a parancsnak vissza kell térnie:

DisabledInterfaceAliases: NotConfigured

Letilthat egy interfész adott profilját (a felületneveket a Get-NetIPInterface parancsmag segítségével felsorolhatja).

Set-NetFirewallProfile -Name Public --DisabledInterfaceAliases "Ethernet0"

Mint láthatja, a nyilvános profil nem vonatkozik az Ethernet0-ra:

DisabledInterfaceAliases: Ethernet0

Az egyes profilok szintjén konfigurálhatja a hálózati kapcsolatok naplózási beállításait. Alapértelmezés szerint a Windows tűzfal naplóit a% systemroot% \ system32 \ LogFiles \ tűzfal könyvtárban tárolja, a fájl mérete 4 MB. Megváltoztathatja az összeköttetés naplózásának engedélyezését és a maximális fájlméret növelését:

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

Hozzon létre, szerkeszthet és törölhet Windows tűzfalszabályokat a PowerShellből

A tűzfalszabályok kezelésére 9 cmdlet van:

  • Új-NetFirewallRule
  • Copy-NetFirewallRule
  • Disable-NetFirewallRule
  • Engedélyezze-NetFirewallRule
  • Get-NetFirewallRule
  • Remove-NetFirewallRule
  • Rename-NetFirewallRule
  • Set-NetFirewallRule
  • Show-NetFirewallRule

Nézzünk néhány egyszerű példát a portok megnyitásához a Windows tűzfalon.

Például, ha engedélyezni kívánja a bejövő TCP-kapcsolatokat a Tartomány és a Privát profilok 80. és 443. portjához, használja ezt a parancsot:

New-NetFirewallRule -DisplayName 'WEB-Bejövő' -Profile @ ('Domain', 'Private') - Irányított bejövő -Action Engedélyezés -Protocol TCP -LocalPort @ ('80', '443')

Engedélyezheti vagy blokkolhatja egy adott program forgalmát. Például blokkolni szeretné a FireFox kimenő kapcsolatait:

New-NetFirewallRule - „C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe” program - Műveleti blokk - Profil domain, magán -DisplayName „Blokk Firefox” - Leírás „Blokk Firefox” - Irány Kimenő

Engedélyezze a bejövő RDP-kapcsolatot a 3389-es porton, csak egy IP-címmel:

New-NetFirewallRule -DisplayName "AllowRDP" -RemoteAddress 192.168.1.55 - Irányított bejövő -Protokoll TCP -LocalPort 3389 -Művezés engedélyezése

A megadott alhálózat címeinek ping engedélyezéséhez használja a következő parancsokat:

$ 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 "Bejövő ICMPv4 engedélyezése" - Irányított bejövő -Protokoll ICMPv4 -IcmpType 8 -RemoteAddress $ ips -Action Engedélyezés

New-NetFirewallRule -DisplayName "Bejövő ICMPv6 engedélyezése" - Irányított bejövő -Protokoll ICMPv6 -IcmpType 8 -RemoteAddress $ ips -Action

Az előző cikkben bemutattuk, hogyan lehet a PowerShell használatával blokkolni a webhelyekhez való hozzáférést nemcsak IP-cím, hanem a DNS domain / site name alapján is.

Meglévő tűzfalszabály szerkesztéséhez használja a Set-NetFirewallRule parancsmagot. Például engedélyeznie kell a bejövő kapcsolatok megadott IP-címét egy korábban létrehozott szabály számára:

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

Ha több IP-címet kell hozzáadnia a tűzfalszabályhoz, akkor használja a következő szkriptet:

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

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

Nyomtassa ki az összes IP-címet, amely a tűzfalszabályban található:

Get-NetFirewallrule -DisplayName 'A bejövő ICMPv4 engedélyezése' | Get-NetFirewallAddressFilter

A tűzfalszabályokat engedélyezheti / letilthatja a Disable-NetFirewallRule és az Enable-NetFirewallRule parancsmagokkal.

Disable-NetFirewallRule -DisplayName 'WEB-Inbound'

Az ICMP (ping) engedélyezéséhez futtassa a következő parancsot:

Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In

A tűzfalszabály eltávolításához használja az Remove-NetFirewallRule parancsmagot..

A Windows tűzfalszabályok felsorolása a PowerShell segítségével

A bejövő forgalom aktív szabályainak listája az alábbiak szerint jeleníthető meg:

Get-NetFirewallRule | ahol ($ _. engedélyezett -eq $ True) -és ($ _. Irány -eq "Bejövő") | ft

Ha például fel kell sorolnunk a kimenő szabályokat:

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

Ha a program nevét szeretné megjeleníteni a szabályban:

Get-NetFirewallRule - Akcióblokk - Engedélyezve Igaz -Kirányú kimenő | % $ _. Név; $ _ | Get-NetFirewallApplicationFilter

Mint láthatja, a Get-NetFirewallRule parancsmag nem sorolja fel a portokat és a tűzfalszabályok IP-címeit. Az engedélyezett bejövő (kimenő) kapcsolatokkal kapcsolatos információk kényelmesebb megjelenítéséhez a megjelenített portszámokkal, használja a következő szkriptet:

Get-NetFirewallRule - Akció engedélyezése - Engedélyezve True - Irányba bejövő |
Formátum-táblázat - Tulajdonság neve,
@ Név = 'Protokoll'; Kifejezés = ($ PSItem | Get-NetFirewallPortFilter) .Protocol,
@ Név = 'LocalPort'; Kifejezés = ($ PSItem | Get-NetFirewallPortFilter) .LocalPort,
@ Név = 'RemotePort'; Kifejezés = ($ PSItem | Get-NetFirewallPortFilter) .RemotePort,
@ Név = 'RemoteAddress'; Kifejezés = ($ PSItem | Get-NetFirewallAddressFilter) .RemoteAddress,
Engedélyezve, Profil, Irány, Művelet

A PowerShell széles körű parancssori kezelést biztosít a Windows tűzfalszabályokhoz. Automatikusan futtathatja a PowerShell szkripteket a portok megnyitásához / bezárásához bizonyos események bekövetkezésekor. A következő cikkben megvizsgálunk egy egyszerű rendszert, amely a PowerShell és a Windows tűzfal alapján automatikusan blokkolja azokat az IP-címeket, amelyekről a távoli jelszó kitalálása az RDP-n keresztül történik egy Windows VDS kiszolgálón.