Я настраиваю систему IIS 2012 R2 в среде ядра сервера. Я включил службу управления IIS и назначил сертификат, но не могу найти, как настроить ограничения на то, какие IP-адреса могут подключаться к 8172. Ключ: HKLM \ SOFTWARE \ Microsoft \ WebManagement \ Server \ RemoteRestrictions делает это, но закодирован так вы не можете просто посмотреть на него и знать, что туда поставить. Забил его, настроив систему с графическим интерфейсом и скопировав значение ключа, но есть ли правильный путь? Знание кодировки строки поможет, если редактирование реестра является единственным вариантом PowerShell.
Это была последняя часть нашего процесса развертывания, выполнявшаяся вручную, и я решил попытаться расшифровать параметр RemoteRestrictions, и мне удалось найти решение для создания этого параметра.
Вы можете найти полный сценарий PowerShell в приведенной ниже сути, который позволяет вам определить глобальную настройку разрешения / запрета и набор IP-адресов и подсетей для разрешения / запрета
https://gist.github.com/guavadevelopment/7217d87943eb69ac60f0f96f3be00874
$remoteRestrictions = (Generate-RemoteRestrictions -globalDeny $True -addresses "1.1.1.1/255.255.255.255")
Несколько советов по структуре:
Отличный вопрос ... Не думаю, что есть хороший способ. Я не вижу документированного способа его программной установки. Кодировка выглядит как base64, поэтому, если вам действительно отчаянно нужно автоматизировать это, попробуйте установить значение RemoteRestrictions через графический интерфейс, а затем попробуйте самостоятельно реплицировать ту же строку base64 с помощью Powershell примерно так:
$RemoteRestrictions = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("192.168.1.50"))
Если вы можете придумать ту же строку, значит, вы выяснили их секретный соус. (Предупреждение: это может быть дурацкая затея и пустая трата вашего времени. Я понятия не имею, что еще они могли добавить туда до того, как это кодирует base64.)
Но официально я думаю, что ваш единственный выход - удаленно управлять этим сервером IIS с другого сервера, на котором установлены RSAT (инструменты удаленного администрирования сервера).
Изменить: на самом деле я думаю, что значения REG_SZ - это UTF-16 little endian (каждый символ имеет длину два байта), поэтому вам может потребоваться использовать класс UTF16 вместо UTF8.
Хорошая новость заключается в том, что кодировка одинакова на любом компьютере, поэтому копирование строки с другого компьютера должно работать нормально.
Строка в HKLM\SOFTWARE\Microsoft\WebManagement\Server\RemoteRestrictions
закодирован base64 и
[System.Convert]::FromBase64String($input)
возвращает массив байтов, но мне не удалось превратить его в строку, которая имеет смысл.