So erstellen Sie eine Windows 2008 Advanced Firewall-Regelgruppendefinition über die Eingabeaufforderung


10

Gibt es eine Möglichkeit, eine Gruppe zu einer Regel in der erweiterten Windows-Firewall zu erstellen oder zu einer vorhandenen Gruppe hinzuzufügen (vorzugsweise über eine Eingabeaufforderung oder ein WSH-Skript)?

Bearbeiten:

Geben Sie hier die Bildbeschreibung ein

Antworten:


4

Ich habe eine Lösung für diese alte Frage gefunden, die mich auch schon lange nervt!

Der TechNet-Artikel zu New-NetFirewallRule enthält folgende Informationen zu den -GroupParametern des New-NetFirewallRule-Befehls:

[...] Dieser Parameter gibt die Quellzeichenfolge für den Parameter DisplayGroup an. [...] Regelgruppen können verwendet werden, um Regeln nach Einfluss zu organisieren, und ermöglichen Änderungen von Stapelregeln. Wenn bei Verwendung der Cmdlets Set-NetFirewallRule der Gruppenname für einen Satz von Regeln oder Sätzen angegeben wird, erhalten alle Regeln oder Sätze in dieser Gruppe denselben Satz von Änderungen. Es wird empfohlen, diesen Parameterwert mit einem universellen und weltweit einsatzbereiten indirekten @ FirewallAPI-Namen anzugeben.

Hinweis : Der Parameter DisplayGroup kann bei der Objekterstellung mit dem Cmdlet New-NetFirewallRule nicht angegeben werden, kann jedoch mithilfe der Punktnotation und des Cmdlets Set-NetFirewallRule geändert werden.

Das klingt nach einer Chance, oder? Bei dem Versuch, selbst herauszufinden, wie das geht, habe ich Folgendes ausgeführt:

Get-NetFirewallRule -DisplayName "Core Networking - IPv6 (IPv6-In)" | Get-Member

... und stellte fest, dass die DisplayGroupEigenschaft nur eine Get-Methode hat, die GroupEigenschaft (mit ihrem RuleGroupAlias) jedoch sowohl eine Get- als auch eine Set-Methode.

Die PowerShell-Lösung lautet wie folgt:

Dank @maoizm funktioniert diese Lösung jetzt, wenn eine oder mehrere Regeln mit demselben Anzeigenamen vorhanden sind:

$RuleName = "NameOfYourFirewallRuleGoesHere"
$RuleGroup = "YourGroupNameGoesHere"
Get-NetFirewallRule -DisplayName $RuleName | ForEach { $_.Group = '$RuleGroup'; Set-NetFirewallRule -InputObject $_ }

Dadurch wird tatsächlich ein neuer Gruppenname erstellt, der Ihrer Regel zugewiesen wird.

Hinweis : Der netshBefehl hat keinen add groupBefehl. Die Syntax für Netsh AdvFirewall Firewall-Befehle finden Sie hier.


1
Da DisplayName nicht eindeutig sein muss, schlägt der zweite Befehl fehl, wenn Sie mehr als eine Regel haben. Der folgende Einzeiler funktioniert, wenn eine oder mehrere Regeln mit demselben Anzeigenamen vorhanden sind:Get-NetFirewallRule -DisplayName 'GTA V' | ForEach { $_.Group = 'games'; Set-NetFirewallRule -InputObject $_ }
maoizm

6

Regeln in der Windows-Firewall können gebündelt und als Gruppe aktiviert oder deaktiviert werden.

Mit dem netsh advfirewallBefehl können Sie der Firewall Regeln hinzufügen. Verwenden Sie den Switch group=zum Verwalten der AdvFirewall-Gruppen.

Verwenden Sie so etwas:

netsh advfirewall firewall set rule profile=domain group="Remote Desktop" new enable=Yes

1
Vielen Dank. Aber das sagt mir, wie man eine bestehende Gruppe ändert. Ich möchte wissen, wie man entweder eine Gruppe hinzufügt oder eine meiner Regeln in eine vorhandene Gruppe einfügt.
Frogstarr78

Mit diesem Befehl (Netsh Advfirewall Firewall Set) können Sie eine vorhandene Regel erstellen oder ändern und sie aus ihrer Gruppe verschieben. Dies funktioniert für das, was Sie brauchen. Versuch es.
Ricardo Polo Jaramillo

1
Okay, wie lautet die Syntax zum Erstellen einer neuen Gruppe? Ich habe versucht: netsh advfirewall firewall set rule Group="SmarterTools Administrative Interfaces" newund erhalte die Fehlermeldung 'Keine Regeln entsprechen den angegebenen Kriterien'
frogstarr78

@ RicardoPolo, tut mir leid, aber der Befehl zum Hinzufügen einer Regel lautet netsh advFirewall Firewall Add Rule ... aber keiner der Modifikatoren dieses Befehls erlaubt das Erstellen einer Gruppe
XtianGIS

@ RicardoPolo Es tut mir leid zu bestätigen, dass dieser Befehl nicht erlaubt, eine neue
Regelgruppe

3

Während Sie ausdrücklich erwähnen

... über die Eingabeaufforderung

Ich gehe davon aus, dass Sie ein Skript verwenden wollen. Mit 2008 können Sie Powershell verwenden. Es ist ziemlich einfach:

function Add-FirewallRule {
   param( 
      $name,
      $tcpPorts,
      $appName = $null,
      $serviceName = $null
   )
    $fw = New-Object -ComObject hnetcfg.fwpolicy2 
    $rule = New-Object -ComObject HNetCfg.FWRule

    $rule.Name = $name
    if ($appName -ne $null) { $rule.ApplicationName = $appName }
    if ($serviceName -ne $null) { $rule.serviceName = $serviceName }
    $rule.Protocol = 6 #NET_FW_IP_PROTOCOL_TCP
    $rule.LocalPorts = $tcpPorts
    $rule.Enabled = $true
    $rule.Grouping = "@firewallapi.dll,-23255"
    $rule.Profiles = 7 # all
    $rule.Action = 1 # NET_FW_ACTION_ALLOW
    $rule.EdgeTraversal = $false

    $fw.Rules.Add($rule)
}

# Sample Usage
Add-FirewallRule "Test port 1234" "1234" $null $null
Add-FirewallRule "Test port 5555-6666" "5555-6666" $null $null
Add-FirewallRule "Test port 2222 Calc" 2222 "c:\windows\system32\calc.exe" $null
Add-FirewallRule "Test port 3333 W3SVC" 3333 $null "W3SVC"

Weitere Informationen finden Sie in diesem Artikel ...


Windows 8 führte native PowerShell-Cmdlets zum Verwalten der Windows-Firewall ein ( technet.microsoft.com/en-us/library/jj554906(v=wps.630).aspx ). Da es sich bei dieser Frage jedoch speziell um Windows Server 2008 handelt, ist Ihre Antwort wahrscheinlich die einzige Option (abgesehen von der Verwendung netsh).
Massimo

0

Die netshKommandozeile hat hierfür kein Flag.

Als Alternative zu den oben genannten PowerShell-Lösungen ist der Gruppenname Teil der Registrierungsstruktur.

Tatsächlich ist der .wfwFirewall-Export eine unformatierte regfRegistrierungsstruktur . Wenn Sie dies in den Registrierungseditor importieren, sehen Sie, dass es sich um eine Liste von durch REG_SZPipe getrennten Werten handelt.

Benutzerdefinierte Werte finden Sie unter

HKLM\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules

Hier ist eine Momentaufnahme eines Google Chrome-Firewall-Eintrags (Zeilenumbrüche zur besseren Lesbarkeit hinzugefügt)

{7E29D2BA-3EBF-4AFD-BF6E-BA6486C74660}

v2.10|
Action=Allow|
Active=TRUE|
Dir=In|
Protocol=17|
LPort=5353|
App=C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe|
Name=Google Chrome (mDNS-In)|
Desc=Inbound rule for Google Chrome to allow mDNS traffic.|
EmbedCtxt=Google Chrome|

Die "Gruppe" wird unter gespeichert EmbedCtxtund ihr Wert ist Google Chrome.

... also könnte man annehmen, dass Sie den Registrierungswert mit der gleichen Technik manipulieren können ...

  1. Suchen Sie den Registrierungseintrag

    reg query HKLM\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules /f "Google Chrome"
    
  2. Überschreiben Sie den Registrierungseintrag mit einem neuen / anderen Wert. ...|EmbedCtx=My Custom Group|

    Hinweis 1: Der Code wurde absichtlich weggelassen, da das Anhängen an einen vorhandenen Registrierungswert über die Eingabeaufforderung sehr schwierig ist .

    Hinweis 2: Ohne das Trailing |wird der Wert ignoriert.

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.