- Описание функционала
- Перед началом работы
- Если что-то не работает
- Win-acme
- Возможные проблемы при подключении с ос отличных от windows
- Двойное rdp подключение к хостам вне коллекции rds
- Дополнительная литература
- Мнение
- Мониторинг удаленных подключений
- Настройка pam модулей ssh
- Настройка мультифактора
- Настройка службы sshd
- Наш тестовый стенд
- Невозможность указать нестандартный порт подключения на старых rdp клиентах microsoft
- Некорректная работа с nat
- Необходимость решения вопроса с ssl сертификатом для подключения к шлюзу
- Нюансы эксплуатации
- Обновление сертификатов
- Общие сведения
- Отсутствие возможности копирования файлов
- Подключение к хостам вне коллекции rds
- Предварительные требования
- Принцип работы
- Проверка
- Установка и настройка модуля pam_radius
- Установка сертификата для remote desktop gateway
- Установка сертификата для sstp vpn
- Установка через развертывание служб удаленных рабочих столов
- Установка, конфигурация и проверка web client
- Установка, конфигурация и проверка роли remote desktop gateway
Описание функционала
Компонент RD Gateway представляет из себя стандартную (доступную из коробки) роль Windows Server. Суть заключается в том, что на периметре локальной сети разворачивается хост на котором инсталлируется компонент RD Gateway. Как нам подсказывает название, он является шлюзом для удаленных подключений.
Перед началом работы
Не закрывайте текущую ssh сессию, пока не убедитесь, что все работает.
Если что-то не работает
Последовательно проверьте, что вы ничего не упустили:
Если ничего не сработало, обращайтесь, поможем.
Win-acme
Для работы с сервером сертификации необходимо загрузить клиент Win-Acme. Клиент распространяется бесплатно, исходный код доступен в GitHub.
Возможные проблемы при подключении с ос отличных от windows
Функционал, необходимый для подключения через шлюз удаленных рабочих столов, интегрирован в стандартный RDP клиент Microsoft. Однако, если необходимо подключаться с других ОС, необходимо предварительно проверить возможность подключения через шлюз.
Двойное rdp подключение к хостам вне коллекции rds
На текущий момент мне не удалось напрямую подключиться к узлам, которые не находятся в RDS коллекции. Пока что мне известен только способ через двойное подключение, где в качестве прокси будет использован RDSH узел. Для пользователя использование этого метода может стать причиной низкого быстродействия удаленного подключения.
Дополнительная литература
Для более подробных инструкций предлагаю посмотреть документацию Microsoft.
Мнение
В ходе знакомства с технологиями у меня сложилось впечатление того, что они неплохо друг друга дополняют и могут практически полностью закрыть потребности как пользователей, так и администраторов.
Большой удачей является тот факт, что обе технологии могут работать вместе в гибридном варианте. Более того, они работают через один порт и через один и тот же сервис IIS, который устанавливается при развертывании, что также упрощает жизнь специалистам по эксплуатации.
Как уже упоминалось выше, при использовании некоторых хитростей можно расширить зону применения (публикация rdp клиента для дальнейшего подключения на компьютеры не входящие в коллекции) и предоставить нашим коллегам удаленный доступ вне зависимости от типа и конфигурации их ОС.
Также администраторы получают возможность централизовано (через свойства коллекций или Active Directory) управлять доступом и заниматься мониторингом подключений. Это очень удобно с точки зрения интеграции с уже существующей инфраструктурой.
Мониторинг удаленных подключений
Для того, чтобы узнать информацию об успешных или неудачных попытках подключения к шлюзу мы можем воспользоваться инструментом Просмотр событий. Нужную нам информацию мы найдем журналах Безопасность и Microsoft-Windows-TerminalServices-Gateway.
Для примера я произведу 2 попытки входа.
Первая — учетные данные некорректны.

Вторая — учетные данные корректны.

Настройка pam модулей ssh
Откройте для редактирования файл /etc/pam.d/sshd
$ sudo vi /etc/pam.d/sshdВ файле закомментируйте строку auth substack password-auth и добавьте в конец следующую настройку:
auth required pam_radius_auth.so skip_passwd client_id=NAS_Identifier conf=/etc/pam_radius_ssh.conf
где
Сохраните и закройте файл (:x).
В итоге он должен выглядеть подобным образом:
Настройка мультифактора
Зайдите в систему управления Мультифактором, далее в раздел “Ресурсы” и создайте новый Linux сервер.
После создания вам будут доступны два параметра: NAS Identifier и Shared Secret, они потребуются для последующих шагов.
Настройка службы sshd
Отредактируйте файл /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config- Включите PAM интерфейс
ChallengeResponseAuthentication yes
- Добавьте способы аутентификации
AuthenticationMethods publickey,keyboard-interactive:pam
Сохраните файл (:x) и перезапустите ssh демона
$ sudo systemctl restart sshdНаш тестовый стенд
Чтобы легче было понимать материал, опишу нашу тестовую лабораторию на которой мы будем проводить тесты.
Стенд состоит из 4х узлов:
- lab-dc1.party.hard — контроллер домена.
- lab-rds1.party.hard — сервер, на котором уже создано тестовое развертывание служб удаленных рабочих столов.
- lab-rdgw1.party.hard — сервер шлюза удаленных рабочих столов и компонента web client.
- lab-client1 — узел вне домена, моделирует клиентское подключение.
Невозможность указать нестандартный порт подключения на старых rdp клиентах microsoft
Что касается этого пункта, мы можем столкнуться с ситуацией, когда внешний порт уже занят и нам необходимо выбрать другой.
Такой сценарий, безусловно, поддерживается, однако проблемы могут возникнуть на клиентских машинах со старой версией RDP клиента. При попытке указать внешний адрес и порт подключения будет выдаваться ошибка о невозможности выполнения этого действия.
Решение только одно — установка обновления RDP клиента. Начиная с Windows 8 клиент уже обновлен и такой проблемы замечено небыло.
Некорректная работа с nat
При эксплуатации была выявлена проблема, при которой не удавалось установить соединение с RDSH узлами. В ходе диагностики выяснилось, что если доступ к узлу с компонентом Web Client осуществляется с помощью трансляции портов отличных от 443, то подключение не может быть установлено. Если транслировать внешний порт 443 в такой же внутренний, то подобной проблемы не возникает.
Необходимость решения вопроса с ssl сертификатом для подключения к шлюзу
Этот пункт подразумевает обязательное доверие со стороны клиентов к внешнему сертификату безопасности. Проще говоря, если у клиента нет доверия к сертификату, то подключиться к шлюзу не получится. Вариантов решения не так уж и много:
Нюансы эксплуатации
В ходе изучения технологии я столкнулся с несколькими нюансами которые желательно знать перед вводом в эксплуатацию.
Обновление сертификатов
Обратите внимание, сертификат Let’t Encrypt выдается сроком на 3 месяца, но скрипт установки создает задачу в Task Scheduler для автоматического обновления.
Общие сведения
Для работы служб удаленного доступа Windows Server, таким как Remote Desktop Gateway и Remote Access VPN требуется требуется сертификат, выданный публичным удостоверяющим центром.
Сертификат используется для шифрования трафика между клиентом и сервером, а также для аутентификации сервера (не клиента).
Можно использовать самоподписанный сертификат, но в таком случае вам придется устанавливать его на каждое устройство ваших пользователей.
Есть бесплатная альтернатива — сервис Let’s Encrypt, в котором можно бесплатно за несколько минут получить валидный сертификат.
Отсутствие возможности копирования файлов
К сожалению, на момент публикации статьи в компоненте отсутствует возможность копировать файлы между системами. Возможно, в вашей рабочей деятельности это будет являться важным фактором, поэтому это стоит учитывать.
Подключение к хостам вне коллекции rds
У некоторых может возникнуть вопрос:
Возможно ли подключение через веб-браузер к серверам, которые не находятся в коллекции RDS? А к клиентским компьютерам?
Да, такое возможно с небольшой хитростью. Для этого нам необходимо опубликовать RemoteApp приложение удаленного рабочего стола (mstsc) с необходимыми параметрами подключения.
Ниже я покажу пример публикации удаленного подключения к серверу lab-dc1.party.hard.
Подход имеет свои недостатки. Таким образом мы, фактически, устанавливаем 2 RDP соединения. Сначала с узлом RDSH и отсюда устанавливаем новое соединение с нужным нам хостом.
При использовании хитрости описанной выше, наш пользователь увидит в веб-панели только опубликованное приложение, без значка подключения к RDSH узлу коллекции. Это связано с тем, что коллекции могут быть двух типов:
- Сессии
- Приложения RemoteApp
Поэтому, если необходимо сохранить у пользователя как подключение к RDSH узлу, так и к другому серверу или клиентскому компьютеру, необходимо изменить один параметр в реестре.
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionTerminal ServerCentralPublishedResourcesPublishedFarms<collection>RemoteDesktops<collection>ShowInPortal
Значение этого ключа должно быть равно 1.
После изменения значения пользователь увидит оба варианта подключения.
Предварительные требования
- В сети должно быть сконфигурировано развертывание удаленных рабочих столов.
- Версия ОС на узлах с ролями Connection Broker, Web Access, Session Host, Gateway должна быть Windows Server 2021 .
- Лицензии CAL должны выдаваться на пользователя, не на устройство.
- На узле Web client должно быть установлено обновление KB4025334.
- Наличие развернутого домена Active Directory.
Принцип работы
- SSHD использует модуль PAM_RADIUS для второго фактора проверки подлинности
- Модуль подключается через RADIUS протокол к сервису Мультифактор
- Мультифактор отправляет одноразовый пароль или PUSH уведомление пользователю для подтверждения доступа
- Пользователь вводит одноразовый пароль или подтверждает PUSH и подключается к терминалу
Проверка
Не закрывая текущую сессию, подключите новую.
Одна кнопка разрешает доступ, вторая блокирует.
Установка и настройка модуля pam_radius
$ sudo yum -y install epel-release$ sudo yum -y install pam_radiusДалее создайте файл конфигурации
$ sudo vi /etc/pam_radius_ssh.confВпишите в него настройки RADIUS сервера Мультифактора, сохраните и закройте редактор (:x)
Установка сертификата для remote desktop gateway
Перед установкой, убедитесь, что:
- адрес сервера указан в DNS
- на сервере установлена роль Remote Desktop Gateway
Запустите скрипт
Установка сертификата для sstp vpn
Перед установкой, убедитесь, что:
- адрес сервера указан в DNS
- на сервере установлена роль Direct Access and VPN (RAS)
Запустите скрипт
Установка через развертывание служб удаленных рабочих столов
Начнем с сервера lab-rds1.party.hard. Для инсталляции роли нам необходимо в Диспетчере серверов, где уже существует развертывание инфраструктуры RDS, добавить сервер lab-rdgw1.party.hard для управления.

Затем, через иконку RD Gateway, добавить роль узлу lab-rdgw1.party.hard.

Следующим этапом мы займемся конфигурацией сертификатов.

В результате выполненных действий, статус изменится на Готово к применению.

Установка, конфигурация и проверка web client
В этой статье мы развернем компонент Web client, как и Remote Desktop Gateway, на отдельном узле — lab-rdgw1.party.hard. Воспользуемся уже сконфигурированной инфраструктурой, описанной выше.
Т.к мы планируем развернуть компонент на узле lab-rdgw1.party.hard, нам необходимо установить на него роль Web Access, иначе, мы столкнемся с невозможностью установки Web client.

Для этого воспользуемся способом установки через развертывание служб удаленных рабочих столов и добавим управляемый хост в Диспетчере серверов.
Теперь перейдем к установке роли Web Access. Для этого выберем пункт Добавить сервера Web Access в Обзоре развертывания.
Укажем узел для развертывания роли.
Подтверждаем установку и ждем ее завершения.
Теперь переходим непосредственно к установке Web client. На текущий момент установка компонента возможна только через PowerShell. Может быть, со временем, разработчики добавят возможность установки через GUI.
Сперва нам необходимо обновить модуль PowershellGet. Открываем Powershell от имени администратора и вводим:
Install-Module -Name PowerShellGet -Force
Для корректной работы нам нужно закрыть и еще раз открыть Powershell от имени администратора, иначе установленный модуль не будет работать.
После установки PowershellGet устанавливаем модуль RDWebClientManagement. Для этого вводим в Powershell:
Install-Module -Name RDWebClientManagement
Также подтверждаем установку и соглашаемся с условиями в процессе выполнения командлета.
Теперь установим модуль Web client выполнив в Powershell командлет:
Install-RDWebClientPackage
Теперь ненадолго переместимся на узел с ролью RD Connection Broker. Отсюда нам нужен сертификат который уже или будет назначен для роли RD Connection Broker. Так как мы разворачиваем тестовый стенд, нам проще создать новый самоподписанный.

После этого нам необходимо найти его в оснастке Сертификаты учетной записи компьютера в виде ключевой пары .pfx и экспортировать публичную часть.

Только что полученный сертификат переносим на сервер lab-rdgw1.party.hard любым доступным способом и сами возвращаемся на него же. 🙂
Импортируем открытую часть сертификата для развертывания Web client.
Установка, конфигурация и проверка роли remote desktop gateway
Установить роль возможно произвести разными способами. Мы рассмотрим способ через развертывание служб удаленных рабочих столов.
