Верхом на коне и с мечом перевязь
Коротенький лук за спиной у него
Способный за раз утопить трех китов
А в правой же длани ключи от миров
Свободно летящих себе без богов.

вторник, 25 декабря 2012 г.

Добавление не стандартных портов SSL на TMG



  • Задача: Добавить не стандартный порт HTTPS на прокси сервер Forefront TMG.
  • Инструменты: [Windows] powershell.
  • Параметры: скрипт должен работать как на Standart так и на Enterprise конфигурации;
  • Описание: некоторые веб-службы, как например, sbi.sberbank.ru:9443 используют специфический порт для SSL-туннеля. TMG, он же ISA позволяет создать пользовательский порт через консоль, но он отказывается работать таким образом, выдавая сообщение "12204 The specified Secure Sockets Layer (SSL) port is not allowed.". В интернете многие предлагают использовать скрипт "isa_tpr.js" для управления SSL портами, но он отказывается работать, в Enterprise конфигурациях, выдавая "This is not an ISA Server."  Скрипт позволяет выбрать необходимый массив, добавить, удалить порты и просто является примером администрирования TMG из PowerShell'a.


# Создаем корневой COM-объект
$oFPC = New-Object -ComObject FPC.Root;
# Выводим информацию о сервере конфигураций, к которому подключились
Write-Host ('Configuration storage server: '+$oFPC.ConfigurationStorageServer);
# Устанавливаем счетчик количества массивов на сервере конфигураций
$iArrayNumber = 0;
# Задаем массив имен массивов на сервере конфигураций
[string[]]$aAvailableArraysNames = @();
# Проходимся по всем массивам на сервере конфигураций
foreach ($oArray in $oFPC.Arrays)
 {
 # Массив есть - увеличиваем счетчик
 $iArrayNumber++;
 # Сохраняем имя массива в массив имен массивов сервера конфигураций (масло масленое)
 $aAvailableArraysNames+=$oArray.Name;
 # Выводим имя найденного массива
 Write-Host ('Array '+$iArrayNumber+'. "'+$aAvailableArraysNames[$iArrayNumber-1]+'".');
 }
# Если массив только один, что часто бывает
if ($iArrayNumber -eq 1)
 {
 # Вводим автоматом номер массива, которым будем управлять
 $sInput = 1;
 }
else
 {
 # Спрашиваем номер массива
 $sInput = Read-Host 'Select array number: ';
 }
# Задаем имя массива для работы
$oCurrentArrayName = $aAvailableArraysNames[$sInput-1];
# Задаем массив для работы
$oCurrentArray = $oFPC.Arrays.Item($oCurrentArrayName);
# Выводим текущие SSL-порты
Write-Host ('SSL ports at array "'+$oCurrentArray.Name+'":');
$oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges;
# Спрашиваем, будем ли добавлять порт
$sInput = Read-Host ("`n"+'Add port?[y/n]');
switch ($sInput)
 {
 y
  {
  # Спрашиваем имя порта
  $sChosenName = Read-Host 'Name';
  # Спрашиваем начальное число диапазона портов
  $sChosenTunnelLowPort = Read-Host 'TunnelLowPort';
  # Спрашиваем конечное число диапазона портов
  $sChosenTunnelHighPort = Read-Host 'TunnelHighPort';
  # Добавляем диапазон портов
  $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.AddRange($sChosenName,$sChosenTunnelLowPort,$sChosenTunnelHighPort);
  # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
  $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
  }
 }
# Спрашиваем, будем ли удалять порт
$sInput = Read-Host 'Del port?[y/n]';
switch ($sInput)
 {
 y
  {
  # Спрашиваем имя порта
  $sChosenName = Read-Host 'Name';
  # Удаляем порт
  $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Remove($sChosenName);
  # Сохраняем конфигурацию (не забываем рестартануть службу TMG Firewall для вступления изменений в силу
  $oCurrentArray.ArrayPolicy.WebProxy.TunnelPortRanges.Save();
  }
 }

Автор скрипта живет здесь.

Комментариев нет:

Отправить комментарий