Wir möchten eine Liste mit IP-Adressen für eine Website, die auf einem IIS-Server in Windows 2008 läuft, auf eine Whitelist setzen. Da diese Liste mit IP-Adressen dynamisch wäre, würden wir sie gerne in einer Textdatei speichern, die über einen Webdienst aktualisiert würde. Wie gehen Sie dabei vor? Wir müssen jede Art manueller Eingriffe wie das Öffnen einer GUI oder das Neustarten des Servers vermeiden. Wir wissen, wie dies unter Linux entweder über IP-Tabellen oder durch dynamisches Generieren von Regeln für Apache oder Nginx funktioniert.
Kann uns jemand dabei helfen?
Antwort1
Sie können PowerShell und eine geplante Aufgabe verwenden, um dies zu erreichen. Neue Firewall-Regeln können mit demNeue NetFirewallRuleCmdlet. Ihre Regel würde wahrscheinlich folgendermaßen aussehen:
New-NetFirewallRule -DisplayName "name" -Direction Inbound -LocalPort 80 -Protocol TCP -RemoteAddress $IPs -Action Allow | Out-Null
Damit dies funktioniert, müssen Sie Ihre zulässigen IP-Adressen in ein Array (siehe Variable $IPs) einfügen. Natürlich hängt dieser Teil des Skripts vom Layout Ihrer Textdatei ab. Wenn Ihre Datei so aussieht:
8.8.8.8
8.8.4.4
Dann sollte der folgende Codeausschnitt funktionieren:
$IPs = Get-Content -Path "Path\to\file.txt"
New-NetFirewallRule -DisplayName "name" -Direction Inbound -LocalPort 80 -Protocol TCP -RemoteAddress $IPs -Action Allow | Out-Null
Um die Regel zu aktualisieren, können Sie sie entweder löschen und mit dem Nettosatz von IP-Adressen neu erstellen, indem Sie das Cmdlet „Remove-NetFirewallRule“ verwenden und dabei den Anzeigenamen als Bezeichner verwenden.
Remove-NetFirewallRule -DisplayName "name"
Oder Sie verwenden dieNetFirewallRule festlegenCmdlet zum Ändern Ihrer vorhandenen Regel mit demselben Parametersatz.