netsh advfirewall

Konfiguruje Zaporę Windows Defender: reguły, profile i stan zapory.

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=3389 albo localport=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ę.