我們想要將在 Windows 2008 伺服器中的 IIS 上執行的網站的 IP 位址清單列入白名單。由於此 IP 位址清單是動態的,我們希望將其儲存在一個文字檔案中,該檔案將使用 Web 服務進行更新。你如何解決這個問題,我們必須避免任何類型的手動幹預,例如打開 GUI 或重新啟動伺服器。我們知道如何在 Linux 上透過 IP 表或透過為 Apache 或 Nginx 動態產生規則來實現這一點。
有人可以幫我們解決這個問題嗎?
答案1
您可以使用 PowerShell 和排程任務來完成此任務。可以使用以下命令建立新的防火牆規則新的NetFirewall規則Cmdlet。您的規則可能如下所示:
New-NetFirewallRule -DisplayName "name" -Direction Inbound -LocalPort 80 -Protocol TCP -RemoteAddress $IPs -Action Allow | Out-Null
您必須將允許的 IP 位址放入陣列中(請參閱變數 $IPs)才能正常運作。當然,腳本的這一部分取決於文字檔案的佈局。如果您的文件如下所示:
8.8.8.8
8.8.4.4
那麼下面的程式碼應該可以工作:
$IPs = Get-Content -Path "Path\to\file.txt"
New-NetFirewallRule -DisplayName "name" -Direction Inbound -LocalPort 80 -Protocol TCP -RemoteAddress $IPs -Action Allow | Out-Null
若要更新規則,您可以刪除該規則,然後使用 Remove-NetFirewallRule Cmdlet 使用 IP 位址網路集重新建立該規則,並使用顯示名稱作為識別碼。
Remove-NetFirewallRule -DisplayName "name"
或者您可以使用設定 NetFirewallRule使用同一組參數修改現有規則的 Cmdlet。