Remarque: La balise # en ligne de commande n'implique pas un fichier de traitement par lots uniquement. J'accepte un script PowerShell ou tout autre utilitaire disponible gratuitement pouvant être démarré à partir de la ligne de commande et terminer son travail sans surveillance.
comment transformer sans surveillance les règles du pare-feu en un état graphique? Sous Windows Vista, sous Windows 10, quel que soit le langage d’interface (affichage)?
Cette question est similaire à # 786383 , mais ce n'est pas la même chose.
Fondamentalement, parce que la réponse n'est pas bonne pour moi:
set rule group="remote desktop" new enable=Yes
ouvre le port 3389 pour les réseaux publics, ce que je veux éviter. En outre, différentes langues Windows ont des noms de groupe différents, mais j'ai besoin d'une solution universelle.netsh firewall set service type = remotedesktop mode = enable
ne fonctionne pas pour moi non plus: il est obsolète depuis win7 et n'autorise le protocole rdp que pour le réseau actuel (si vous êtes en réseau public, 3389 sera ouvert pour les réseaux publics et ne fonctionnera pas par la suite).Notez qu'avant l'activation de RDP via l'interface graphique, il n'y a qu'une seule règle par protocole pour RDP. Mais lorsque RDP est activé via l'interface graphique, le port n'est ouvert que pour les réseaux privés et de domaine, et les règles sont scindées pour cela. Après activation, il existe 4 règles dans Windows 8+ et 2 règles (sans UDP) dans Windows XP, Vista et 7.
La solution que j'utilise actuellement ajoute mes propres règles:
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
mais c'est mauvais, car (contrairement aux standards), ils peuvent être modifiés par l'utilisateur, ne pas avoir de groupe (pour travailler avec d'autres scripts), et ne sont pas automatiquement désactivés lorsque RDP est désactivé via l'interface graphique.
Règles de pare-feu avant d'activer RDP via l'interface graphique pour la première fois ***
Mêmes règles lorsque RDP est activé via une interface graphique (état que je veux obtenir):
Et après avoir désactivé RDP dans l'interface graphique:
Je ne raconterai pas toute l'histoire de ce combat avec les utilitaires de ligne de commande Windows, jusqu'à ce que quelqu'un le demande. Voici cette histoire en russe .
netsh firewall set service type = remotedesktop mode = enable
ou
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
Si je comprends bien la question, vous obtiendrez ce que vous voulez. C'est PowerShell:
$FireWall = New-Object -comObject HNetCfg.FwPolicy2
$EnableRules = $FireWall.rules | Where-Object {$_.LocalPorts -like "*3389*" -and $_.Profiles -eq "3"}
ForEach ($Rule In $EnableRules){($Rule.Enabled = "True")}
Cela va filtrer les règles et récupérer les noms de règles corrects agnostiques de la langue. Pour ce faire, il filtre sur le port 3389 et recherche la règle associée à "Réseaux de domaine et privés". Profiles -eq 3
est le masque bitmap pour les réseaux privés et de domaine, vous pouvez voir la référence ici:
https://msdn.Microsoft.com/en-us/library/windows/desktop/aa366303 (v = vs.85) .aspx
Où 1 (réseaux de domaine) + 2 (réseaux privés) = 3
Voici le lien MSDN où j'ai compris le reste:
https://msdn.Microsoft.com/en-us/library/windows/desktop/aa365309 (v = vs.85) .aspx
Et voici comment j'ai compris quelles étaient les propriétés et les méthodes des autres objets:
PS C:\> $FireWall | Get-Member
TypeName: System.__ComObject#{98325047-c671-4174-8d81-defcd3f03186}
Name MemberType Definition
---- ---------- ----------
EnableRuleGroup Method void EnableRuleGroup (int, string, bool)
IsRuleGroupEnabled Method bool IsRuleGroupEnabled (int, string)
RestoreLocalFirewallDefaults Method void RestoreLocalFirewallDefaults ()
BlockAllInboundTraffic ParameterizedProperty bool BlockAllInboundTraffic (NET_FW_PROFILE_TYPE2...
DefaultInboundAction ParameterizedProperty NET_FW_ACTION_ DefaultInboundAction (NET_FW_PROFI...
DefaultOutboundAction ParameterizedProperty NET_FW_ACTION_ DefaultOutboundAction (NET_FW_PROF...
ExcludedInterfaces ParameterizedProperty Variant ExcludedInterfaces (NET_FW_PROFILE_TYPE2_...
FirewallEnabled ParameterizedProperty bool FirewallEnabled (NET_FW_PROFILE_TYPE2_) {get...
IsRuleGroupCurrentlyEnabled ParameterizedProperty bool IsRuleGroupCurrentlyEnabled (string) {get}
NotificationsDisabled ParameterizedProperty bool NotificationsDisabled (NET_FW_PROFILE_TYPE2_...
UnicastResponsesToMulticastBroadcastDisabled ParameterizedProperty bool UnicastResponsesToMulticastBroadcastDisabled...
CurrentProfileTypes Property int CurrentProfileTypes () {get}
LocalPolicyModifyState Property NET_FW_MODIFY_STATE_ LocalPolicyModifyState () {g...
Rules Property INetFwRules Rules () {get}
ServiceRestriction Property INetFwServiceRestriction ServiceRestriction () {g...
PS C:\> $Rules | Get-Member
TypeName: System.__ComObject#{9c27c8da-189b-4dde-89f7-8b39a316782c}
Name MemberType Definition
---- ---------- ----------
Action Property NET_FW_ACTION_ Action () {get} {set}
ApplicationName Property string ApplicationName () {get} {set}
Description Property string Description () {get} {set}
Direction Property NET_FW_RULE_DIRECTION_ Direction () {get} {set}
EdgeTraversal Property bool EdgeTraversal () {get} {set}
EdgeTraversalOptions Property int EdgeTraversalOptions () {get} {set}
Enabled Property bool Enabled () {get} {set}
Grouping Property string Grouping () {get} {set}
IcmpTypesAndCodes Property string IcmpTypesAndCodes () {get} {set}
Interfaces Property Variant Interfaces () {get} {set}
InterfaceTypes Property string InterfaceTypes () {get} {set}
LocalAddresses Property string LocalAddresses () {get} {set}
LocalPorts Property string LocalPorts () {get} {set}
Name Property string Name () {get} {set}
Profiles Property int Profiles () {get} {set}
Protocol Property int Protocol () {get} {set}
RemoteAddresses Property string RemoteAddresses () {get} {set}
RemotePorts Property string RemotePorts () {get} {set}
serviceName Property string serviceName () {get} {set}