Разбираемся с удаленной аутентификацией в PowerShell – Hey, Scripting Guy! Blog

Резюме: Приглашенный блогер, Windows PowerShell MVP Don Jones рассказывает об аутентификации при использовании удаленных подключений.

Microsoft Scripting Guy, Ed Wilson на связи. Сегодня у меня для вас нечто особенное. Windows PowerShell MVP Don Jones только что выпустил новую книгу и мы приводим здесь ее отрывок.

01

Learn Windows PowerShell 3 in a Month of Lunches, Second Edition

By Don Jones

Обычно аутентификацию рассматривают как односторонний процесс: вы хотите подключиться к удаленной машине, и вам нужно предоставить ей свои учетные данные перед тем как она предоставит вам доступ. Но Windows PowerShell использует взаимную аутентификацию. В этой статье, основанной на материале главы 23 из книги Learn Windows PowerShell 3 in a Month of Lunches, Second Edition, ее автор Don Jones рассказывает об аутентификации при использовании удаленных подключений.

Погружаемся в удаленную аутентификацию

Удаленные подключения Windows PowerShell используют взаимную аутентификацию, что означает, что удаленная машина также должна подтвердить вам свою подлинность. Другими словами, если вы запускаете команду Enter-PSSesion –computerName DC01, компьютер с именем DC01 должен вам доказать, что это действительно он, преед тем как подключение установится.

Для чего это нужно? Обычно, ваш компьютер разрешает имя компьютера (такое, как DC01) в IP-адрес посредством Domain Name System (DNS). Мы не можем сказать, чтоб DNS не подвержен спуфингу, и мы не можем быть уверены, что злоумышленник не подменил запись DNS для компьютера DC01 и не указал в ней другой IP-адрес – тот, который им контролируется. Не зная этого, вы можете установить подключение к компьютеру с именем DC01, оказаться на компьютере злоумышленника и начать делегировать свои учетные данные – довольно скверно. Взаимная аутентификацию препятствует этому: если компьютер, к которому вы подключаетесь не может подтвердить свою подлинность – подключение не установится. Это полезная функция, и я не думаю что вы решите отключить ее без особой необходимости.

Как происходит взаимная аутентификация по умолчанию

Microsoft предполагает, что Windows PowerShell будет использоваться в основном в сетях с Active Directory. Если вы указываете действительные имена компьютеров при выполнении подключения, т.е. так как они указаны в Active Directory, взаимная аутентификация будет выполнена доменными службами.

Это также верно и для подключения к компьютерам в других, доверяющих доменах. Идея в том, что вы должны предоставить Windows PowerShell имя компьютера, удовлетворяющее обоим следующим требованиям:

  • Имя должно разрешаться в IP-адрес
  • Имя должно соответствовать имени компьютера в Active Directory

Указание имени компьютера, входящего в ваш локальный домен или полностью определенного доменного имени (FQDN, такого как DC01.COMPANY.LOC) компьютера в доверяющем домене обычно удовлетворяет обоим требованиям. Но если вам нужно указать IP-адрес, или некоторое другое имя DNS (например CNAME алиас), то взаимная аутентификация не сработает. В этой ситуации у вас есть два варианта: SSL или TrustedHosts.

Взаимная аутентификация через SSL

Для использования этого метода, вам нужно получить цифровой сертификат SSL для машины, к которой вы собираетесь подключиться. Сертификат должен быть выдан на то же имя, которое вы будете указывать в команде подключения. Именно так, если вы вводите команду Enter-PSession –computerName DC01.COMPANY.LOC -UseSSL -credential COMPANY\Administrator, то сертификат, установленный на DC01 должен быть выдан на имя «dc01.company.loc». В ином случае подключение не установится. Заметьте, что параметр -credential является обязательным при использовании данного сценария.

После получения сертификата, вам нужно установить его в Хранилище личных сертификатов (Personal) компьютера – это удобнее всего сделать из Microsoft Management Console (MMC). Если просто дважды щелкнуть на сертификате – он установится в персональное хранилище пользователя. Для нашего сценария это не подходит.

После установки сертификата, вам нужно создать HTTPS-Listener на компьютере и указать, что он должен использовать полученный сертификат. Пошаговая инструкция для этого процесса достаточно объемная, и так как вряд ли этим будет заниматься большое количество людей, мы не будем приводить все это здесь. Если вам все таки интересно – взгляните на Don’s Secrets of PowerShell Remoting guide. Там вы найдете пошаговые инструкции со скриншотами.

Взаимная аутентификация через TrustedHosts

Это несколько проще, нежели использование SSL-сертификата и требует гораздо меньше настройки, но в то же время и опаснее, поскольку это фактически отключает взаимную аутентификацию для определенных хостов. Перед тем как использовать этот способ, вы должны быть полностью уверены в следующем заявлении: «это маловероятно, что кто-либо сможет скомпрометировать один из этих хостов или подменить их DNS-записи». Для компьютеров вашей внутренней сети, вы с большой степенью вероятности можете быть в этом уверены.

Затем вам нужно идентифицировать компьютеры, которым вы будете доверять без использования взаимной аутентификации. В доменной среде это может быть что-то вроде «*.COMPANY.COM» для всех хостов домена company.com.

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

В любом объекте групповой политики или редакторе локальной групповой политики выполните следующее:

1.       Разверните Computer Configuration

2.       Разверните Administrative Templates

3.       Разверните Windows Components

4.       Разверните Windows Remote Management

5.       Разверните WinRM Client

6.       Дважды щелкните на Trusted Hosts

7.       Включите политику и укажите список доверенных компьютеров. Несколько записей могут быть разделены запятыми, например «*.company.com,*.sales.company.com».

Заметка: Более ранние версии Windows могут не обладать шаблонами для отображения этих настроек в локальной групповой политике. Это также касается и контроллеров домена, работающих на ранних версиях Windows, и их объектов доменной групповой политики. В этом случае вы можете указать список доверенных хостов в Windows PowerShell. Для инструкций как это сделать запустите команду Help about_remote_troubleshooting в консоли PowerShell.

Summary

Теперь взаимная аутентификация не помешает вам подключиться к этим компьютерам. При подключении вам необходимо указать параметр credential – без него попытка подключения окончится неудачей.

На этом все. Книга Дона станет доступна в течение этого месяца.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/15/digging-into-powershell-remote-authentication.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s