Uwaga: Tag # wiersza polecenia nie oznacza tylko pliku wsadowego, zaakceptuję skrypt PowerShell lub dowolne swobodnie dostępne narzędzie, które można uruchomić z wiersza poleceń i zakończyć pracę bez nadzoru.
tl; dr
jak bezobsługowo transformować reguły zapory ogniowej dokładnie tak, jak to określa GUI, w systemie Windows Vista na Windows 10 dowolnego języka interfejsu (wyświetlacza)?
Opracowanie
To pytanie jest podobne do # 786383 , ale to nie to samo.
Zasadniczo, ponieważ odpowiedź nie jest dla mnie dobra:
set rule group="remote desktop" new enable=Yes
otwiera port 3389 dla sieci publicznych i chcę tego uniknąć. Ponadto różne języki systemu Windows mają różne nazwy grup, ale potrzebuję uniwersalnego rozwiązania.netsh firewall set service type = remotedesktop mode = enable
też dla mnie nie działa: jest przestarzałe od win7 i pozwala na rdp tylko dla bieżącej sieci (jeśli jesteś publiczny, 3389 zostanie otwarty dla sieci publicznych i później nie będzie działał w sieciach prywatnych).
Należy pamiętać, że zanim protokół RDP zostanie włączony za pośrednictwem interfejsu GUI, istnieje tylko jedna reguła dla protokołu dla protokołu RDP. Ale gdy protokół RDP jest włączony za pośrednictwem interfejsu GUI, port jest otwierany tylko dla sieci prywatnych i domenowych, a zasady są podzielone. Po włączeniu istnieją 4 reguły w Windows 8+ i 2 reguły (bez UDP) w Windows XP, Vista i 7.
Obejściem, którego obecnie używam, jest dodawanie własnych reguł:
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (TCP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [TCP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=tcp
netsh.exe advfirewall firewall add rule name="Remote Desktop - User Mode (UDP-In)" dir=in action=allow program="%%SystemRoot%%\system32\svchost.exe" service="TermService" description="Inbound rule for the Remote Desktop service to allow RDP traffic. [UDP 3389] added by LogicDaemon's script" enable=yes profile=private,domain localport=3389 protocol=udp
ale to źle, ponieważ (w przeciwieństwie do standardowych) mogą być modyfikowane przez użytkownika, nie mają grupy (do pracy z innymi skryptami) i nie są automatycznie wyłączane, gdy RDP jest wyłączany przez GUI.
Zrzuty ekranu
Reguły zapory przed pierwszym włączeniem protokołu RDP za pośrednictwem graficznego interfejsu użytkownika * **
Te same zasady, gdy protokół RDP jest włączony za pośrednictwem GUI (stan, który chcę uzyskać):
Nie będę opowiadał całej historii tej walki za pomocą narzędzi wiersza poleceń systemu Windows, dopóki ktoś nie zapyta. Oto ta historia po rosyjsku .
źródło
Odpowiedzi:
lub
źródło
netsh firewall
jest przestarzałe (od win7), nie działa w Win10 i pozwala na rdp tylko dla bieżącej sieci (jeśli jesteś w publicznej, rdp będzie dozwolony dla sieci publicznych i później nie będzie działał w sieciach prywatnych). Jest to odnotowane w oryginalnej historii, po prostu pomyślałem, że nie warto o tym wspominać. Naprawię tę wadę.netsh firewall
nadal działa w systemie Windows 10 (testowany na Pro).Jeśli dobrze zrozumiem pytanie, dostaniesz to, czego chcesz. To jest PowerShell:
Spowoduje to odfiltrowanie reguł i pobranie prawidłowych nazw reguł niezależnie od języka. Robi to, filtrując port 3389 i znajdując regułę związaną z „Domeną i sieciami prywatnymi”.
Profiles -eq 3
jest maską bitmapową dla sieci prywatnych i domenowych, możesz zobaczyć odniesienie tutaj:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366303(v=vs.85).aspx
Gdzie 1 (sieci domen) + 2 (sieci prywatne) = 3
Oto link MSDN, w którym wymyśliłem resztę:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365309(v=vs.85).aspx
Oto, jak zorientowałem się, jakie były właściwości i metody dla innych obiektów:
źródło
)}