netsh advfirewall to konsolowy kontekst netsh służący do zarządzania Zaporą Windows Defender z poziomu wiersza poleceń. Robisz nim wszystko to, co klikasz w GUI „Zapora Windows Defender z zabezpieczeniami zaawansowanymi”: włączasz i wyłączasz zaporę dla poszczególnych profili (Domain, Private, Public), sprawdzasz aktualny stan i ustawienia oraz dodajesz, modyfikujesz i kasujesz reguły ruchu przychodzącego i wychodzącego. To podstawowe narzędzie, gdy musisz otworzyć port na serwerze bez RDP do pulpitu albo wepchnąć regułę w skrypcie czy GPO.
Składnia i najważniejsze opcje
Komenda dzieli się na podkonteksty, najczęściej używasz trzech form:
netsh advfirewall set allprofiles state on|off
netsh advfirewall show allprofiles
netsh advfirewall firewall add rule name="Nazwa" dir=in|out action=allow|block [parametry]
dir=in|out— kierunek ruchu: przychodzący (in) albo wychodzący (out). Wymagany przy dodawaniu reguły.action=allow|block|bypass— co zrobić z pasującym pakietem: przepuść, zablokuj albo (bypass) zezwól z autoryzacją IPsec.protocol=tcp|udp|icmpv4|...— protokół; bez tego reguła łapie any.localport=— port lokalny (np.localport=3389albolocalport=80,443).remoteip=— ograniczenie do adresu/zakresu/podsieci, np.remoteip=192.168.1.0/24.profile=domain|private|public|any— profile, w których reguła obowiązuje (można łączyć przecinkiem).program=— pełna ścieżka do .exe, gdy regułę wiążesz z aplikacją, nie z portem.enable=yes|no— czy reguła ma być od razu aktywna (domyślnie yes).
Przykłady użycia
netsh advfirewall show allprofiles — pokazuje stan i ustawienia wszystkich trzech profili. Zaczynaj zawsze od tego, żeby wiedzieć, gdzie jesteś.
netsh advfirewall firewall add rule name="RDP" dir=in action=allow protocol=tcp localport=3389 — otwiera port RDP dla ruchu przychodzącego po TCP.
netsh advfirewall firewall add rule name="WWW" dir=in action=allow protocol=tcp localport=80,443 remoteip=10.0.0.0/8 — wpuszcza HTTP/HTTPS, ale tylko z wewnętrznej podsieci.
netsh advfirewall firewall delete rule name="RDP" — kasuje wszystkie reguły o tej nazwie.
netsh advfirewall set allprofiles state off — wyłącza zaporę na wszystkich profilach. Przydatne do diagnozy, ale patrz niżej.
Częste błędy i pułapki
Najczęstsza wpadka: dodajesz regułę i dalej nie działa, bo nie ustawiłeś profile= — serwer często siedzi w profilu Domain, a Twoja reguła wpadła do Public. Po drugie, delete rule name="X" usuwa wszystkie reguły o danej nazwie naraz; jeśli chcesz tylko jedną, zawęź np. przez protocol i localport. Nie używaj name=all przy dodawaniu — to słowo zarezerwowane. I klasyk: set allprofiles state off na zdalnym serwerze to świetny sposób, żeby… wciąż mieć łączność (RDP zostaje), ale wyłączasz wtedy całą ochronę — lepiej dodać konkretną regułę niż gasić zaporę. Pamiętaj też, że starsza komenda netsh firewall (bez advfirewall) jest przestarzała i nie obsługuje profili po nowemu.
Powiązane komendy: netsh advfirewall reset (przywraca domyślną politykę), netsh advfirewall export i import (kopia/wgranie reguł), oraz PowerShell — New-NetFirewallRule, Get-NetFirewallRule, Set-NetFirewallProfile, które dziś Microsoft traktuje jako następcę.