我们希望将在Windows 2008服务器上运行的IIS网站的IP地址列表白名单。 由于这个IP地址列表是dynamic的,我们希望将其存储在一个文本文件中,该文件将使用Web服务进行更新。 你如何去做这件事,我们必须避免任何forms的人工干预,例如打开一个GUI或重新启动服务器。 我们知道如何通过IP表或通过dynamic生成Apache或Nginx的规则。
有人能帮助我们吗?
您可以使用PowerShell和计划任务来完成此任务。 新的防火墙规则可以使用New-NetFirewallRule Cmdlet创build。 你的规则可能看起来像这样:
New-NetFirewallRule -DisplayName "name" -Direction Inbound -LocalPort 80 -Protocol TCP -RemoteAddress $IPs -Action Allow | Out-Null
你将不得不把你允许的IP地址在一个数组(见variables$ 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,使用显示名称作为标识符,使用一组networkingIP地址删除并重新创build它。
Remove-NetFirewallRule -DisplayName "name"
也可以使用Set-NetFirewallRule Cmdlet使用相同的一组参数来修改现有的规则。