Мы хотим добавить в белый список список IP-адресов для веб-сайта, работающего на IIS на сервере Windows 2008. Поскольку этот список IP-адресов будет динамическим, мы хотели бы сохранить его в текстовом файле, который будет обновляться с помощью веб-службы. Как это сделать? Нам нужно избегать любого ручного вмешательства, такого как открытие графического интерфейса или перезапуск сервера. Мы знаем, как это сделать в Linux либо через таблицы IP, либо через динамическую генерацию правил для Apache или Nginx.
Может ли кто-нибудь нам с этим помочь?
решение1
Вы можете использовать PowerShell и запланированную задачу для достижения этого. Новые правила брандмауэра можно создать с помощьюNew-NetFirewallRuleКомандлет. Ваше правило, вероятно, будет выглядеть так:
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
Чтобы обновить правило, вы можете удалить его и создать заново с сетевым набором IP-адресов с помощью командлета Remove-NetFirewallRule, используя отображаемое имя в качестве идентификатора.
Remove-NetFirewallRule -DisplayName "name"
Или вы можете использоватьУстановить-NetFirewallRuleКомандлет для изменения существующего правила с тем же набором параметров.