Kdysi jsem pomocí jistých Powershellovských příkazů upravoval chybná pravidla, která si nastavoval ovladač tiskárny, od té doby už to chování ovšem opravili a můj skript jsem si nádherně přeformátoval spolu s diskem (OT
). Tehdy jsem to snad ještě dělal s využitím WMI, a to bylo paradoxně možná i trochu jednodušší než tyto příkazy. Ovšem to jen proto, že jsem je tehdy neznal.
Velmi jednoduše:
- Na všechny změny potřebuješ práva admina. Na prohlížení obvykle stačí uživatelská práva, nicméně některá pravidla se také nedají kompletně prohlížet jako běžný user, takže doporučuju admina.
- S pomocí New-NetFirewallRule přidáváš nová pravidla; všechny potřebné parametry se zadávají nejlépe jako parametry tohoto příkazu. Příklad jednoduchého pravidla:
New-NetFirewallRule -DisplayName “block ie” -RemoteAddress "192.168.1.1-192.168.1.10" -LocalAddress "192.168.1.101"
Více ti řekne MSDN popř. tutoriály na internetu.[/li]
[li]
Get-NetFirewallRule vypíše všechna definovaná pravidla, ovšem bez informací o blokovaných/povolených adresách, portech, síťových rozhraních apod. To jsou samostatné filtry, jejichž informace získáš s použitím vhodných příkazů.[/li]
[li]Využiješ kombinace Get-NetFirewallRule, Get-NetFirewallPortFilter, Get-NetFirewallInterfaceFilter apod. (úplný seznam získáš pomocí [/li][/list]
Get-Command -Noun "*firewall*"
a vhodným použitím rour (znak |) nakombinuješ tak, abys získal potřebné informace.
Příklad: chci najít pravidlo s portem TCP 3389. Načtu si nejdřív ze seznamu portů správné porty a pak podle nich vyfiltruji pravidla.
PS> $port = Get-NetFirewallPortFilter -Protocol TCP | Where {$_.LocalPort -eq 3389}
PS> $port | Get-NetFirewallRule
DisplayName : Vzdálená plocha – uživatelský režim (TCP-In)
Dá se to různě kombinovat, takže třeba pokud pomocí Get-NetFirewallRule načteš nějaké pravidlo a chceš získat jeho nastavené porty, bude příkaz vypadat nějak takto:
Get-NetFirewallRule -DisplayName "Worms*" | Get-NetFirewallPortFilter
[/li]
- Jednotlivé vlastnosti je možné měnit velmi podobně - příkazy Set-NetFirewall*. Tyto příkazy akceptují v rourách pouze filtry/pravidla svého druhu, popř. pomocí parametru -DisplayName, -DisplayGroup můžeš vyfiltrovat konkrétní filtry/pravidla. Průser nastane, když nespecifikuješ žádná filtrovací kritéria, jelikož se pak příkaz aplikuje na vše, u čeho to jde. Zkrátka trochu jako linuxový rm -rf
Vše je samozřejmě napsané v manuálech, tutoriálech (ty doporučuji), ale tohle je pár základních věcí, které lze použít.