
PowerShell-Skripte zum automatischen Erstellen von Regeln für die Windows-Firewall

Eine vollautomatische Lösung für die Windows-Firewall mit PowerShell
Windows Firewall Ruleset konfiguriert die Windows-Firewall automatisch und wendet restriktive
Firewall-Regeln an, die spezifisch für das Zielsystem und die darauf installierte Software sind.
Der Status dieses Projekts ist noch Alpha. Klicken Sie auf das "Status"-Abzeichen oben, um mehr zu erfahren.
Dieses Projekt besteht aus zwei Hauptteilen: Firewall-Regeln und Firewall-Framework, wie folgt:
Windows-Firewall-Regeln, sortiert in einzelne PowerShell-Skripte nach:
Zum Beispiel:
Das Firewall-Framework besteht aus mehreren PowerShell-Modulen, Skripten und Dokumentationen, die dazu dienen, Umgebungsinformationen zu sammeln, die für den Aufbau und die Bereitstellung einer auf das Zielsystem zugeschnittenen Firewall relevant sind, wie z.B.:
Daher ist dieses Repository ein guter Ausgangspunkt, um Ihre Firewall einfach um weitere Regeln und Funktionalitäten nach Wunsch zu erweitern.
Derzeit gibt es etwa 800+ Firewall-Regeln, 10+ Module mit 100+ Funktionen, mehrere Skripte und eine gute Portion nützlicher Dokumentation.
Sie können interaktiv auswählen, welche Regeln Sie möchten, und nur diese bereitstellen, oder Sie können den Prozess automatisieren und alle notwendigen Regeln und Einstellungen in Ihrer Firewall bereitstellen.
Eine detaillierte Firewall-Konfiguration ist zeitaufwändig, erfordert viel Fehlerbehebung, Änderungen erfordern Tests und Sicherheitsüberprüfungen, und es wird noch schlimmer, wenn Sie eine Firewall auf Hunderte oder Tausende von entfernten Computern bereitstellen müssen, da z.B. nicht alle Computer die gleiche Software oder die gleichen Einschränkungsanforderungen haben.
Anders als Firewall-Regeln in der Systemsteuerung werden diese Regeln in die GPO-Firewall (Lokale Gruppenrichtlinie) geladen, was bedeutet, dass Änderungen an Systemeinstellungen oder zufällige Programme, die im Rahmen ihrer Installation Regeln installieren, keine Auswirkungen auf die Firewall haben, es sei denn, Sie machen explizit eine Ausnahme.
Regeln, die auf Programmen und Diensten basieren, überprüfen die angegebene ausführbare Datei auf digitale Signatur und werden auf VirusTotal gescannt, wenn die digitale Signatur fehlt. Aus Sicherheitsgründen wird die Regel nicht erstellt oder in die Firewall geladen, wenn diese Überprüfung fehlschlägt. (kann erzwungen werden)
Standardmäßig ist ausgehend "blockieren", es sei denn, es gibt eine Regel, die Netzwerkverkehr zulässt. In den meisten Firewalls ist dies nicht möglich, es sei denn, Sie pflegen Regeln für jedes mögliche Programm oder jeden Dienst. Dank dieser Regelsammlung erfordert das Setzen des Standard-Ausgehend auf Blockieren sehr wenig oder keine zusätzliche Arbeit.
Anders als im üblichen Szenario werden Sie wissen, welche Regeln keine Wirkung mehr haben oder redundant sind aufgrund z.B. eines deinstallierten Programms, eines nicht mehr vorhandenen Systemdienstes, einer umbenannten ausführbaren Datei nach einem Windows-Update und ähnlichen Gründen.
Anders als vordefinierte Windows-Firewall-Regeln sind diese Regeln restriktiver, z.B. an explizite Benutzerkonten gebunden, Regeln gelten für bestimmte Ports, Netzwerkschnittstellen, bestimmte ausführbare Dateien, Dienste usw., was alles automatisch vom Zielsystem gelernt wird.
Das Aktualisieren, Filtern oder Durchsuchen von Regeln und Attributen wie Ports, Adressen und ähnlichem ist
viel einfacher, da diese Regeln in Skripten vorliegen. Sie können Editor-Tools wie regex,
Multicursor oder STRG + F verwenden, um Bulk-Operationen an Ihren Regeln durchzuführen. Dies ist in
jeder Firewall-Benutzeroberfläche aufgrund von Einschränkungen der Benutzeroberfläche nicht möglich.
Dieses Projekt Windows Firewall Ruleset ist unter der MIT-Lizenz lizenziert.
Einige Skripte, Dateien oder Module sind nicht unter der MIT-Lizenz lizenziert oder haben möglicherweise eigene Copyright-Inhaber.
Aus diesem Grund werden Lizenz- und Copyright-Hinweise "pro Datei" geführt.
Die folgende Tabelle listet Betriebssysteme auf, auf denen Windows Firewall Ruleset getestet wurde
sigcheck64.exe (stark empfohlen) sigcheck herunterladenAlle Windows 10.0-Systeme (Major 10, Minor 0) und höher außer den Home-Editionen werden unterstützt,
aber nur die in der obigen Tabelle aufgeführten Editionen wurden getestet.
Die Spalte "Version" listet getestete Veröffentlichungen auf, jedoch werden nur die neuesten BS-Builds weiterhin getestet.
Eine Liste anderer nicht getesteter, aber unterstützter Systeme und Funktionen finden Sie in Die Zukunft
PowerShell Core ist nicht in Windows integriert. Sie müssen es separat installieren oder
Windows PowerShell verwenden, das Teil des Betriebssystems ist.
.NET Framework mind. Version 4.5 ist erforderlich, wenn Sie Windows PowerShell (Desktop-Edition)
anstelle von PowerShell Core verwenden.
Windows 10 wird mit mindestens .NET 4.6 ausgeliefert (das .NET 4.5 enthält), und Windows 11 wird mit mindestens .NET 4.8 ausgeliefert.
sigcheck64.exe (oder 32-Bit sigcheck.exe) ist ein Tool zur Überprüfung digitaler Signaturen, das Sie
von der Microsoft-Website herunterladen können und entweder im Verzeichnis C:\tools oder in der Umgebungsvariable %PATH%
platzieren sollten.
Windows Firewall Ruleset verwendet es, um eine hashbasierte Online-Malware-Analyse auf VirusTotal
für jede ausführbare Datei durchzuführen, die nicht digital signiert ist, bevor eine Firewall-Regel für diese ausführbare Datei erstellt wird.
Dies ist nur eine Empfehlung. Wenn keine im vorhanden ist, wird Ihnen angeboten, sie
herunterzuladen. Wenn Sie ablehnen, wird keine Malware-Analyse durchgeführt.
Durch die Nutzung dieser Funktionalität stimmen Sie den ,
der und den zu.
Derzeit ist diese Firewall für die meisten aktuellen Windows-Desktop-/Server-Systeme getestet und ausgelegt und funktioniert bekanntermaßen. Die Verwendung auf älteren Systemen erfordert zusätzliche Arbeit.
Die Tests werden auf 64-Bit-Windows durchgeführt. Ein kleiner Teil der Regeln funktioniert nicht auf einem 32-Bit-System und
muss angepasst werden. Die vollständige Funktionalität für 32-Bit-Systeme befindet sich in Arbeit.
Im Moment können Sie Regeln auf einem 32-Bit-System problemlos laden, mit Ausnahme einiger weniger Regeln, die für Ihre
Konfiguration wahrscheinlich irrelevant sind.
Informationen zur Verwendung dieser Firewall auf älteren Windows-Systemen wie Windows 7 oder Windows Server 2008 finden Sie unter Legacy-Support
Im Folgenden finden Sie kurze Warnungen und Hinweise, die Erstbenutzer vor der Bereitstellung der Firewall beachten sollten
Sie könnten die Internetverbindung für einige Ihrer Programme oder in seltenen Fällen sogar die
Internetverbindung vollständig verlieren. Wenn dies passiert, können Sie entweder vorübergehend ausgehenden Netzwerkverkehr
in der GPO zulassen oder
.\Scripts\Reset-Firewall.ps1 -Remoting -Service ausführen, um die GPO-Firewall auf die Systemstandards zurückzusetzen,
alle Regeln zu entfernen und WinRM sowie geänderte Dienste auf die Systemstandards zurückzusetzen.
(Anschließend ist ein Neustart von PowerShell erforderlich)
Im Verzeichnis docs gibt es eine ResetFirewall.md, eine Anleitung, wie es manuell von Hand gemacht werden kann,
wenn Sie aus irgendeinem Grund das Skript nicht ausführen können oder das Skript Ihre Probleme nicht löst.
Ihre vorhandenen Regeln werden nicht gelöscht, es sei denn, Sie haben Regeln in der GPO mit genau denselben Gruppennamen
wie Regeln aus diesem Regelsatz. Dies gilt jedoch nicht für Scripts\Reset-Firewall.ps1, das
GPO-Regeln vollständig löscht und nur die in der Systemsteuerung hinterlässt.
Wenn Sie 100% sicher sein möchten, exportieren Sie bitte Ihre GPO-Regeln, wie in Regeln exportieren\importieren erläutert
Sie werden gefragt, welche Regeln geladen werden sollen (wenn Sie die interaktive Bereitstellung wählen, siehe später).
Um Probleme mit der Internetverbindung zu minimieren, sollten Sie mindestens alle generischen Netzwerk- und BetriebssystemRegeln
mit dem Namen "CoreNetworking", "ICMP", "WindowsSystem", "WindowsServices", "Multicast"
bereitstellen, einschließlich aller Regeln für Programme, die auf dem System installiert sind. Ignorieren Sie auch nicht IPv6,
Windows benötigt IPv6, selbst wenn Sie sich in einem IPv4-Netzwerk befinden.
Es ist einfach, das, was Sie nicht benötigen, in der GPO zu löschen, anstatt später im Code zu graben und herauszufinden,
was Sie übersehen haben.
Die Standardkonfiguration legt das globale Firewall-Verhalten fest, das in der GPO nicht konfigurierbar ist,
wie z.B. Stateful FTP und oder globale -Einstellungen. Wenn Sie ein spezifisches Setup benötigen, besuchen Sie
bitte und werfen Sie einen Blick auf .
Beachten Sie, dass automatisch von aufgerufen wird
Das Laden von Regeln in eine leere GPO sollte sehr schnell sein. Das Laden in eine GPO, die bereits Regeln enthält, wird jedoch deutlich langsamer sein (abhängig von der Anzahl der vorhandenen Regeln in der GPO)
Alle Fehler und Warnungen werden im Verzeichnis Logs gespeichert. Sie können diese Protokolle später überprüfen, wenn Sie
ein Problem beheben möchten. Die meisten Warnungen und sogar einige Fehler können sicher ignoriert werden. In bestimmten Fällen
sollten Sie versuchen, Fehler zu beheben, wenn möglich.
Jede Regel, die beim Laden "Zugriff verweigert" ergibt, sollte erneut geladen werden, indem das entsprechende Skript erneut ausgeführt wird. Weitere Informationen dazu, warum dies passieren kann, finden Sie in der FAQ
Wenn das Repository manuell heruntergeladen, von einem anderen Computer oder Medium übertragen wurde, sollten Sie
zunächst alle Dateien im Repository entsperren, um JA/NEIN-Spam-Fragen für jedes ausführende Skript zu vermeiden,
indem Sie Scripts\Unblock-Project.ps1 ausführen.
Das Hauptskript Scripts\Deploy-Firewall.ps1 führt dies für den Fall durch, dass Sie es vergessen, aber die anfänglichen JA/NEIN-Fragen
sind in diesem Fall dennoch vorhanden.
Wenn Sie den "Ransomware-Schutz" (in Windows Defender) aktiviert haben,
stellen Sie sicher, dass entweder pwsh.exe (Core-Edition) oder powershell.exe (Desktop-Edition)
oder beide in die Whitelist aufgenommen werden, da sonst im Entwicklermodus bei der Installation von Modulen Fehler auftreten.
Wenn Repository-Code in einen Ordner unter Ransomware-Schutz heruntergeladen wird, kann alles blockiert werden.
Die PowerShell-Konsole muss möglicherweise neu gestartet werden, damit Änderungen am "Controlled folder access" wirksam werden.
Standardmäßig werden Regeln für die Gruppe erstellt und für die Gruppe nur bei Bedarf. Es wird empfohlen, ein Standardbenutzerkonto für den täglichen Gebrauch aus Sicherheitsgründen zu verwenden. Wenn Sie Administrator sind und kein Standardkonto auf Ihrem Computer erstellen möchten, müssen Sie die Variable in ändern und angeben.
Wenn Sie keine SSH-Schlüssel und andere Einrichtung haben, die zum Klonen über SSH erforderlich sind, klonen Sie entweder mit HTTPS
oder laden Sie einfach die veröffentlichte ZIP-Datei von Releases herunter, und dann für die neueste
Veröffentlichung unter "Assets" die ZIP-Datei herunterladen.
Diese Schritte gehen davon aus, dass Sie eine ZIP-Datei aus dem Abschnitt "Assets" unter "Releases" heruntergeladen haben.
Extrahieren Sie das heruntergeladene Archiv an einem beliebigen Ort. Diese Schritte gehen davon aus, dass Sie die ZIP-Datei
(Repository-Stammverzeichnis) direkt in das Laufwerk C:\ entpackt haben.
Wenn Sie Windows PowerShell verwenden möchten, siehe So öffnen Sie Windows PowerShell.
Ansonsten ist das Verfahren sowohl für PowerShell Core als auch für Windows PowerShell ähnlich:
Öffnen Sie den extrahierten Ordner, klicken Sie mit der rechten Maustaste auf eine leere Stelle, und es gibt eine Option, um
PowerShell Core als Administrator auszuführen (vorausgesetzt, Sie haben das Kontextmenü bei der Installation von PowerShell
Core aktiviert). Wenn nicht, öffnen Sie es manuell.
Wenn Sie kein PowerShell-Kontextmenü haben, wechseln Sie zum Stammverzeichnis C:\, indem Sie die
folgenden zwei Zeilen ausführen (geben Sie die Befehle ein oder kopieren/einfügen und drücken Sie nach jeder die Eingabetaste):
Hier haben Sie Ihre heruntergeladene ZIP-Datei extrahiert
c:
cd \
Wechseln Sie in den heruntergeladenen Ordner:
cd WindowsFirewallRuleset*
Um die aktuelle Ausführungsrichtlinie anzuzeigen, geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:
(Tipp: Sie können die TAB-Taste verwenden, um die Eingabe automatisch zu vervollständigen)
Wenn Sie Hilfe benötigen, um zu entscheiden, ob Sie einen Regelsatz ausführen möchten oder nicht, geben Sie ? ein, wenn Sie zur Ausführung des Regelsatzes aufgefordert werden, und drücken Sie die Eingabetaste, um weitere Informationen zu erhalten.
Wenn Sie aus irgendeinem Grund die Bereitstellung unterbrechen und abbrechen möchten (z.B. um eine neue zu starten), drücken Sie STRG + C auf Ihrer Tastatur, während PowerShell im Fokus ist, und starten Sie die PowerShell-Konsole neu.
Folgen Sie der Eingabeaufforderung (z.B. Drücken Sie die Eingabetaste, um die Standardaktion zu akzeptieren), es wird etwa 15 Minuten Ihrer Aufmerksamkeit in Anspruch nehmen.
HINWEIS: Wenn das Administratorkonto ein Microsoft-Konto zum Anmelden am Computer verwendet, werden Sie nach Anmeldeinformationen gefragt, die Microsoft-E-Mail und -Passwort sein müssen, unabhängig davon, ob Sie Windows Hello verwenden oder nicht. Die Angabe einer PIN funktioniert nicht und andere Windows Hello-Authentifizierungsmethoden werden nicht unterstützt.
Bei ungültigen Anmeldeinformationen erhalten Sie eine Fehlermeldung Access is denied.
Wenn dies passiert, müssen Sie die PowerShell-Konsole neu starten und es erneut versuchen.
Weitere Informationen, warum dies notwendig ist, finden Sie unter FAQ
Wenn Sie auf Fehler stoßen, können Sie die Fehler entweder ignorieren oder das Skript aktualisieren, das den Fehler verursacht hat, und dann dieses spezifische Skript später erneut ausführen.
Wenn Sie fertig sind, möchten Sie möglicherweise einige der Regeln in der lokalen Gruppenrichtlinie anpassen. Nicht alle Regeln sind standardmäßig aktiviert, oder Sie möchten möglicherweise das Standardverhalten "Zulassen/Blockieren" umschalten.
Regeln decken möglicherweise nicht alle auf Ihrem System installierten Programme ab, in diesem Fall müssen fehlende Regeln erstellt werden.
Testen Sie nun Ihre Internetverbindung (z.B. mit einem Webbrowser oder einem anderen Programm). Wenn Sie nach der Bereitstellung dieser Regeln keine Verbindung zum Internet herstellen können, haben Sie mehrere Optionen:
docs-Verzeichnis für weitere Optionen zur Fehlerbehebung und DokumentationDer folgende Abschnitt gibt einige Hinweise zur einfachen Verwaltung der Firewall
Das Skript Deploy-Firewall.ps1 unterstützt mehrere Parameter, um die Automatisierung der Bereitstellung wie folgt anzupassen:
- Um alle Regeln ohne Aufforderung und mit präziser Ausgabe automatisch auszuführen, jedoch nur für Programme, die auf dem System vorhanden sind, führen Sie
aus:```powershell
.\Scripts\Deploy-Firewall.ps1 -Force -Quiet
- Um Schritt für Schritt vorzugehen und zur Bestätigung aufgefordert zu werden, welche Regelsätze geladen werden sollen, sowie Probleme im laufenden Betrieb zu lösen, führen Sie Folgendes aus:```powershell
.\Scripts\Deploy-Firewall.ps1 -Interactive
Deploy-Firewall ohne Parameter aus:```powershell
.\Scripts\Deploy-Firewall.ps1Um die Bedeutung der Parameter zu verstehen, um sie selbst kombinieren zu können, sehen Sie sich den Kommentar im Skript `Deploy-Firewall.ps1` an oder führen Sie den folgenden Befehl aus:```powershell
Get-Help .\Scripts\Deploy-Firewall.ps1 -Detailed
Es gibt zwei Methoden, um GPO-Regeln zu verwalten:
Verwenden der lokalen Gruppenrichtlinie (Local Group Policy). Diese Methode bietet eingeschränkte Freiheit bei den Regeln aus diesem Repository, z. B. Deaktivieren, Ändern einiger Attribute oder Hinzufügen neuer Regeln.
Weitere Informationen finden Sie unter: Manage GPO Firewall
Bearbeiten von PowerShell-Skripten. Diese Methode bietet vollständige Kontrolle, Sie können vorhandene Regeln uneingeschränkt ändern oder entfernen oder neue hinzufügen.
Unabhängig von Ihrem Plan oder Setup möchten Sie sicherlich zusätzliche Arbeiten durchführen, z. B. das Anpassen von Regeln oder das Hinzufügen neuer Regeln für Programme, die noch nicht von dieser Firewall abgedeckt werden.
Die Regeln werden in die lokale Gruppenrichtlinie geladen. Wenn Sie während der Firewall-Einrichtung der Erstellung einer Verknüpfung zur personalisierten Firewall-Verwaltungskonsole zugestimmt haben, können Sie die Verknüpfung ausführen. Andernfalls befolgen Sie die Schritte in Manage GPO Firewall.
Weitere Informationen zu GPO finden Sie unter: Configure security policy settings
Wenn Sie nur bestimmte Regeln bereitstellen möchten, gibt es zwei Möglichkeiten:
Führen Sie Scripts\Deploy-Firewall.ps1 aus und wählen Sie Yes nur für die gewünschten Regelsätze, andernfalls wählen Sie No und drücken Sie die Eingabetaste, um den aktuellen Regelsatz zu überspringen.
Navigieren Sie in der PowerShell-Konsole mit cd in das Verzeichnis, das das gewünschte Regelsatzskript enthält, und führen Sie das einzelne Skript aus.
Zum Beispiel cd .\Rules\IPv4\Outbound\Software gefolgt von .\Adobe.ps1, um Regeln für Adobe zu laden.
Möglicherweise möchten Sie anschließend Scripts\Complete-Firewall.ps1 ausführen, um das Standard-Firewallverhalten anzuwenden, falls es noch nicht festgelegt ist, oder Sie können es manuell in der GPO tun, jedoch mit eingeschränkter Leistungsfähigkeit. 'Eingeschränkte Leistungsfähigkeit' bedeutet, dass Scripts\Complete-Firewall.ps1 einige Firewall-Parameter konfiguriert, die in der Firewall-GUI nicht angepasst werden können.
In beiden Fällen werden alle Regeln, die der Regelsatzgruppe DisplayGroup entsprechen, gelöscht, bevor die Regeln in die GPO geladen werden.
Derzeit gibt es drei Optionen zum Löschen von Firewall-Regeln:
Der einfachste Weg ist, alle gewünschten Regeln in der GPO auszuwählen, mit der rechten Maustaste zu klicken und zu löschen.
Um Regeln gemäß einer Datei zu löschen, gibt es eine Funktion für diesen Zweck, die sich in:
Modules\Ruleset.Firewall\Public\Remove-FirewallRule.ps1 befindet.
Sie müssen jedoch zuerst die Firewall in eine Datei exportieren, bevor Sie sie verwenden können.
Um zu Ihrem alten Firewall-Zustand (dem in der Systemsteuerung) zurückzukehren, müssen Sie alle Regeln aus der GPO löschen und nach einem Rechtsklick auf den Knoten:
Windows Defender Firewall with Advanced Security - Local Group Policy Object alle Eigenschaften auf Not configured setzen.
Das Löschen aller Regeln oder das Zurücksetzen auf den vorherigen Zustand kann auch mit Scripts\Reset-Firewall.ps1 erfolgen.\ Beachten Sie, dass Sie auch Ihre exportierten GPO-Regeln erneut importieren müssen, falls Sie welche hatten.
Wenn Sie Regeln aus der GPO exportieren möchten, stehen zwei Methoden zur Verfügung:
Exportieren in der lokalen Gruppenrichtlinie, indem Sie nach einem Rechtsklick auf den Knoten:
Windows Defender Firewall with Advanced Security - Local Group Policy Object auf das Menü Export Policy... klicken.
Zum Exportieren mit PowerShell führen Sie Scripts\Backup-Firewall.ps1 aus.
Wenn Sie Ihren Export anpassen möchten, sehen Sie sich die Funktion Export-RegistryRule im Modul Ruleset.Firewall an, mit der Sie Ihren Export nahezu beliebig anpassen können.
Wenn Sie Regeln importieren möchten, ist der Import über die GPO derselbe wie für den Export, und zum Importieren mit PowerShell führen Sie einfach Scripts\Restore-Firewall.ps1 aus, das Ihre vorherigen Exportdateien verwendet.
Um Ihren Export/Import anzupassen, werfen Sie einen Blick in Modules\Ruleset.Firewall\Public, wo Sie eine Beschreibung zur Verwendung der Export-/Import-Modulfunktionen finden.
HINWEIS: Die Funktion Export-FirewallRule ist sehr langsam; es wird empfohlen, stattdessen die Funktion Export-RegistryRule auszuführen, die so schnell wie möglich ist.
Dieser Abschnitt und die Funktionalität sind derzeit experimentell und noch nicht vollständig abgeschlossen. Derzeit wird die Bereitstellung auf einem einzelnen entfernten Computer unterstützt.

Bei der Firewall-Bereitstellung aus der Ferne sind mindestens zwei Computer beteiligt,
einer wird als Verwaltungscomputer (Client) bezeichnet und alle anderen als verwaltete Computer (Server).
Die Skripte werden vom Administrator auf dem Verwaltungscomputer ausgeführt, und die Firewall wird dann gleichzeitig auf mehreren Servercomputern bereitgestellt oder konfiguriert.
Implementierungsdetails finden Sie im Modul Modules\Ruleset.Remote
HINWEIS: Die Remoting-Funktionalität ist nicht exklusiv für die Firewall-Bereitstellung aus der Ferne; auch die Bereitstellung auf localhost erfordert von Haus aus eine funktionierende WinRM- und PS-Remoting-Konfiguration.
Bevor die Fernbereitstellung durchgeführt werden kann, muss der entfernte Computer (Server) so konfiguriert werden, dass er Verbindungen akzeptiert. Ein Beispiel zum Aufbau einer SSL-Verbindung ist wie folgt:
Um die Ausführung zu ermöglichen, konfigurieren Sie den WinRM-Dienst und die Remoteregistrierung auf dem Servercomputer, indem Sie Folgendes ausführen:
HINWEIS: Wenn Sie PowerShell Core verwenden, lassen Sie -Protocol HTTPS im folgenden Enable-WinRMServer weg. Dadurch werden sowohl HTTP als auch HTTPS aktiviert, was ein temporärer Workaround ist, damit das Kompatibilitätsmodul in der Remotesitzung funktioniert.```powershell
Set-ExecutionPolicy -Scope LocalMachine RemoteSigned Set-Location C:\Path\to\WindowsFirewallRuleset Import-Module .\Modules\Ruleset.Remote Enable-WinRMServer -Protocol HTTPS -KeepDefault -Confirm:$false Enable-RemoteRegistry -Confirm:$false
Nach Durchführung dieser Schritte finden Sie im Verzeichnis `\Exports` eine SSL-Zertifikatsdatei (*.cer), die auf den Verwaltungscomputer ebenfalls in das Verzeichnis `\Exports` kopiert werden muss.\
Standardmäßig wird ein selbstsigniertes SSL-Zertifikat erstellt, wenn der Servercomputer noch keines besitzt.
**HINWEIS:** Die manuelle Konfiguration des Servercomputers wird nur beim ersten Einrichten durchgeführt,
Sie müssen sie nicht für nachfolgende Bereitstellungen wiederholen.
Der nächste Schritt besteht darin, zum Verwaltungscomputer zu gehen und die Skripte wie gewünscht auszuführen, zum Beispiel:```powershell
# On management computer
cd C:\Path\to\WindowsFirewallRuleset\Scripts
Deploy-Firewall -Domain "RemoteComputerName"
Beide oben genannten Befehlssätze müssen in derselben Edition von PowerShell ausgeführt werden, z. B. wenn der Server in PowerShell Core konfiguriert wurde, benötigt der Client-Computer ebenfalls PowerShell Core für die Bereitstellung.
Wenn entweder der Server oder der Verwaltungscomputer eine Workstation ist (z. B. kein Windows-Server oder Teil einer Domäne), muss das Netzwerkprofil auf das private Profil gesetzt werden.
Die Remote-Bereitstellung kann an den folgenden Stellen sehr detailliert angepasst werden:
Modules\Ruleset.Remote\Scripts\WinRMSettings.ps1Modules\Ruleset.Remote\Scripts\*Firewall.psscModules\Ruleset.Remote\Public\Register-SslCertificate.ps1Modules\Ruleset.Remote\Scripts\SessionSettings.ps1Weitere Informationen und Tipps zur Fehlerbehebung finden Sie auch in der Remoting-Hilfe
Bei Support, Problemberichten, Vorschlägen oder Anpassungen dieses Repositorys sowie Methoden zur regelmäßigen Aktualisierung dieser Firewall verweisen wir auf SUPPORT.md
Die folgenden Funktionen sind gewünscht und könnten irgendwann in der Zukunft verfügbar sein:
Remote-Firewall-Verwaltung
Umfassende Firewall-Regelsätze für Windows Server-Editionen und dedizierte Gateway-Systeme.
Bei Bedarf oder geplanter Registrierungsscan zur Überprüfung der Integrität der aktiven Firewall-Filterrichtlinie und Firewall-Einstellungen
Vollständige Funktionalität für die folgenden noch nicht getesteten Editionen von Windows 10.0
Funktionalität für x86-Systeme
Ein guter Teil des Codes ist darauf ausgerichtet, eine automatisierte Lösung zum Erstellen und Definieren einer für das Zielsystem und die Benutzer spezialisierten Firewall bereitzustellen, wodurch die Notwendigkeit manueller Eingriffe minimiert wird und Ihnen somit viel wertvolle Verwaltungszeit gespart wird.
| BS | Edition | Version | Architektur |
|---|
| Windows 10 | Pro | 1809 - 22H2 | x64 |
| Windows 10 | Pro Education | 20H2 | x64 |
| Windows 10 | Enterprise | 1809 - 20H2 | x64 |
| Windows 10 | Education | 20H2 - 22H2 | x64 |
| Windows 11 | Pro Education | 21H2 | x64 |
| Windows 11 | Pro | 22H2 - 23H2 | x64 |
| Windows 11 | Enterprise | 22H2 | x64 |
| Windows Server 2019 | Essentials | 1809 | x64 |
| Windows Server 2019 | Standard | 1809 | x64 |
| Windows Server 2019 | Datacenter | 1809 | x64 |
| Windows Server 2022 | Standard | 21H2 | x64 |
| Windows Server 2022 | Datacenter | 21H2 | x64 |
sigcheck64.exePATHSie möchten möglicherweise Git haben, um nach Updates zu suchen, einfach zwischen Branches zu wechseln oder Code beizutragen.
VS Code ist der bevorzugte und empfohlene Editor, um den Code zu navigieren und/oder Skripte für Ihre eigenen Bedürfnisse oder Beiträge zu bearbeiten.
Wenn Sie VSCode verwenden, benötigen Sie auch die PowerShell-Erweiterung für die Code-Navigation und PowerShell-Sprachfunktionen.
Um Code mit VSCode zu navigieren und zu bearbeiten, wird PSScriptAnalyzer dringend empfohlen, da sonst die Bearbeitungserfahrung
aufgrund verschiedener Repository-Einstellungen seltsam sein kann.
Es gibt keine Hardware-Anforderungen, aber wenn Sie planen, Code zu schreiben und zu debuggen, wird empfohlen, mindestens 8 GB Arbeitsspeicher und eine SSD-Festplatte zu haben, um bequem am Projekt zu arbeiten. Nur um Regeln auf Ihrer persönlichen Firewall bereitzustellen, reicht weniger aus.
PPTPIPSecScripts\Complete-Firewall.ps1Set-NetFirewallSettingScripts\Complete-Firewall.ps1Scripts\Deploy-Firewall.ps1Einige Skripte erfordern, dass Sie (der Netzwerkadapter) mit dem Netzwerk verbunden sind, z.B. um die IPv4-Broadcast-Adresse zu ermitteln. (Andernfalls können Fehler auftreten)
Alles auf dem System sollte auf dem neuesten Stand sein, da sonst einige Regeln übersprungen oder falsch sein können. Dies umfasst Windows-Updates, Microsoft Store-Apps und alle anderen Software.
BenutzerAdministratorenDefaultGroupConfig\ProjectSettings.ps1AdministratorenWeitere Informationen, warum die Verwendung eines Administratorkontos aus Sicherheitsgründen nicht empfohlen wird, finden Sie unter SecurityAndPrivacy.md.
Ihr Administratorkonto, das zum Bereitstellen der Firewall verwendet wird, muss ein Passwort haben.
Software- oder Windows-Updates können ausführbare Dateien oder deren Speicherorte umbenennen. Auch Benutzerkonten können vom Administrator umbenannt werden. Daher ist es wichtig, von Zeit zu Zeit bestimmte Regeln nach Bedarf neu zu laden, um die Firewall für Systemänderungen zu aktualisieren, die jederzeit auftreten können. Dieses Verhalten wird als Software-Regression bezeichnet
Vor der Bereitstellung der Firewall wird empfohlen, das System und die Benutzerprogramme auf dem Zielcomputer zu aktualisieren, einschließlich Windows Store-Apps, insbesondere wenn das System frisch installiert ist, da ein späteres Aktualisieren möglicherweise das Neuladen einiger Regeln erfordert.
Get-ExecutionPolicy
Merken Sie sich die Ausgabe des obigen Befehls. Beachten Sie, dass PowerShell Core standardmäßig
RemoteSigned verwendet, während Windows PowerShell auf Nicht-Server-Editionen standardmäßig Restricted verwendet.
Setzen Sie die Ausführungsrichtlinie auf "Unrestricted", um Projektdateien entsperren zu können.
(Beachten Sie, dass RemoteSigned nur funktioniert, sobald die Skripte entsperrt sind)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Sie werden möglicherweise aufgefordert, die Änderung der Ausführungsrichtlinie zu akzeptieren. Geben Sie in diesem Fall Y ein und drücken Sie die Eingabetaste, um zu akzeptieren.
Weitere Informationen finden Sie unter Informationen zu Ausführungsrichtlinien
An diesem Punkt sollten Sie zunächst alle Repository-Dateien "entsperren", indem Sie ein Skript namens
Scripts\Unblock-Project.ps1 ausführen. Übrigens wurden die Repository-Dateien von Windows blockiert, um zu verhindern, dass Benutzer
nicht vertrauenswürdigen Skriptcode aus dem Internet ausführen:
.\Scripts\Unblock-Project.ps1
Wenn Sie gefragt werden, stellen Sie sicher, dass Ihre Antwort R ist, also [R] Einmal ausführen, so oft wie nötig, um das Projekt zu entsperren. (ca. bis zu 8 Mal)
Sobald die Repository-Dateien entsperrt sind, ändern Sie die Ausführungsrichtlinie auf RemoteSigned:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Sie werden erneut aufgefordert, die Änderung der Ausführungsrichtlinie zu akzeptieren. Geben Sie Y ein und drücken Sie die Eingabetaste, um zu akzeptieren.
Regeln für Programme wie Ihren Webbrowser, Spiele usw. hängen von Installationsvariablen ab.
Die meisten Pfade werden automatisch gesucht und Variablen werden transparent aktualisiert. Andernfalls erhalten Sie eine Warnung und
eine Beschreibung, wie das Problem behoben werden kann.
Bei Bedarf finden Sie diese Installationsvariablen in den einzelnen Skripten im Verzeichnis Rules.
Es wird empfohlen, alle MMC-Verwaltungskonsolen wie gpedit.msc oder secpol.msc zu schließen,
bevor Sie das Hauptskript im nächsten Schritt ausführen.
Zurück zur PowerShell-Konsole und führen Sie einen der beiden Deploy-Firewall-Befehle unten aus:
Um die Firewall automatisch mit so wenigen Eingabeaufforderungen wie möglich bereitzustellen, führen Sie aus:
.\Scripts\Deploy-Firewall.ps1 -Force
Andernfalls, um interaktiv gefragt zu werden, welche Regeln geladen werden sollen, führen Sie aus:
.\Scripts\Deploy-Firewall.ps1
```Drücken Sie die Eingabetaste und es werden Fragen gestellt, wie z.B. welche Art von Regelsätzen Sie möchten.\
Als Voraussetzung für die Bereitstellung der Firewall wurden einige Systemdienste gestartet und auf automatischen Start gesetzt. Im Verzeichnis Logs finden Sie Services_<DATUM>.log, um Ihnen bei Bedarf bei der Wiederherstellung dieser Dienste auf die Standardeinstellungen zu helfen.
Zum Beispiel sollte der Dienst Windows Remote Management nicht ausgeführt werden, wenn er nicht benötigt wird (die Standardeinstellung ist "Manueller" Start)