Одним из компонентов сервера Guacamole является разработанный компанией
СФТ-Сервис модуль, транслирующий
запросы аутентификации, авторизации и конфигурации в запросы к каталогу
Microsoft® Active Directory®.
Создание сессии.
Для создания сессии шлюзу необходима следующая информация:
Учётные данные пользователя. Получаются шлюзом в процессе
первоначальной регистрации пользователя.
Доступные пользователю соединения. Эту информацию шлюз получает
из каталога AD, следуя схеме хранения, описанной ниже. Соединения
создаются «на лету» из информации, полученной из
регистрационной записи пользователя, регистрационной записи компьютера,
а так же шаблонов соединений.
Параметры доступных пользователю соединений. Эту информацию
шлюз так же получает из каталога AD, считывая не стандартную для
хранения в каталоге информацию из дополнительного поля группы-шаблона.
Иллюстрация взаимодействия участников при установлении соединения.
Последовательность получения данных из каталога.
Для получения списка доступных (разрешённых) пользователю соединений
модуль auth-ad читает атрибут «Имя компьютера» из раздела
«Личный виртуальный рабочий стол», который включается в
схему AD при установке в домен Terminal Services (LDAP атрибут
msTSPrimaryDesktop).
В дополнение к указанному атрибуту, читается список имён компьютеров
из пользовательского атрибута «Веб-страница» (LDAP атрибут
url). Это список текстовых строк, в которых модуль auth-ad
ожидает найти список имён доступных пользователю для подключения через
шлюз компьютеров домена.
Следующим шагом модуль ищет регистрационные записи компьютеров по
этому списку для получения их DNS-имён. DNS-имена читаются из
LDAP-атрибута dNSHostName каталога. Редактирование этого
атрибута регистрационной записи компьютера домена возможно только в
форме раздела «Редактор атрибутов», в GUI-редакторе этот
атрибут не имеет соответствующего поля.
Если компьютер не включён в AD-домен средствами самого домена,
то его регистрационную запись типа «Компьютер»
можно просто добавить из mmc-плагина «Active Directory -
пользователи и компьютеры».
Далее модуль auth-ad производит поиск членства найденных в предыдущем
шаге компьютеров в группах-шаблонах соединений.
RDP/VNC/SSH соединение требует указания дополнительных параметров,
а каталог Active Directory® не имеет совпадающих по назначению
свойств объектов для хранения дополнительной информации, поэтому
параметры соединения в варианте, реализованном в модуле auth-ad,
читаются из редко используемого по назначению текстового атрибута
AD-группы-шаблона «Заметки» (LDAP атрибут
info).
Далее, модуль auth-ad формирует список соединений следуя списку
компьютеров и применяя к нему соответствующий найденному членству
в группе-шаблоне шаблон соединения.
Если результирующий список содержит более одного соединения, то,
после регистрации на шлюзе, пользователю предоставляется выбор
из доступных ему соединений.
Конфигурационные объекты в каталоге.
Модуль auth-ad для шлюза Guacamole не использует операции записи в
каталог, используются только команды BIND и
SEARCH протокола LDAP.
Для конфигурации шлюза Guacamole модулем auth-ad
используются следующие объекты из каталога Active Directory®:
DN пользователя с правами поиска в
каталоге. Например:
CN=RDGate,CN=Users,DC=example,DC=local
DN под-дерева объектов каталога AD, в котором находятся учётные
записи всех пользователей, которые будут авторизоваться на шлюзе.
Если нет какой-то специальной задачи, то можно использовать
существующую ветку, например:
CN=Users,DC=example,DC=local
DN под-дерева объектов каталога AD, в котором находятся все записи
типа «Компьютер», принадлежащие компьютерам, к которым
шлюз будет делать соединения по протоколам RDP/VNC/SSH.
В стандартной ситуации это контейнер «Computers»:
CN=Computers,DC=example,DC=local
Внимание. По умолчанию, регистрационные записи не всех
компьютеров домена помещаются в этот контейнер. Регистрационные записи
компьютеров с ролью домен-контроллера, например, по умолчанию
размещаются в контейнере «Domain Controllers».
DN «подразделения», содержащего AD-группы-шаблоны
соединений. Каждый объект группы внутри этого подразделения типа
«Глобальная»-«Безопасность» должен содержать
шаблон параметров соединения в виде текста в поле «Заметки»
(LDAP атрибут info).
Это специфичное для Guacamole с модулем auth-ad подразделение. Если,
по какой-то причине, оно не совмещено с существующией веткой каталога,
то в каталоге AD этот тип так и называется «Подразделение»
(Organizational Unit, OU). Например:
OU=RDConnections,DC=example,DC=local
DN «подразделения» для групп разграничения прав
пользователей на шлюзе. Имена групп типа «Глобальная»-«Безопасность»
должны совпадать с именами групп, созданных в интерфейсе управления
шлюза. Пользователи-члены этих групп получат соответствующие группам
шлюза права на доступ к ресурсам шлюза, включая администрирование.
Это специфичное для Guacamole с модулем auth-ad подразделение. Если,
по какой-то причине, оно не совмещено с существующией веткой каталога,
то в каталоге AD этот тип так и называется «Подразделение»
(Organizational Unit, OU). Например:
OU=RDAccess,DC=example,DC=local
Шаблоны соединений.
Группы-шаблоны соединений должны содержать в поле
«Заметки» параметры соединения в виде текста определённого
формата. Готовый для внесения в шаблон текст параметров можно получить
утилитой GetConnection из конфигурации
соединения, созданного в интерфейсе управления шлюзом. Утилита доступна
для получения на сайте производителя в разделе
«Загрузки».
Внимание. Для того, чтобы при соединении по протоколам RDP или
SSH использовались те имя пользователя и пароль, с которыми
пользователь зарегистрировался на самом шлюзе, в качестве
регистрационных данных в соединении нужно указать шаблон
«$(GUAC_USERNAME}» в поле имени пользователя, и
«${GUAC_PASSWORD}» в поле пароля.
Планирование.
Результатом планирования должен стать оптимальный с точки зрения количества
список шаблонов подключений. Параметром группировки для подключений могут
быть вариант протокола и шифрования. Для RDP это системы Windows Server 2012
/ Windows 10 и новее, и более старые. Для более новых систем подключение
должно происходить с шифрованием NLA и методом изменения размера
экрана (resize) Display Update. Для остальных, включая xrdp на Linux,
RDP и Reconnect. Поддерживается обратная совместимость.
Внимание. При указании атрибутов доступа в соеднениях SSH в шаблонах
соединений, не забывайте, что эти атрибуты будут применяться ко всем
включённым в шаблон серверам.