Доступ к RDP через авторизацию RADIUS

Т.к. многие организации для удаленного подключения сотрудников из вне к ресурсам компании используют «Проброс порта«, как правило до терминального сервера, но я хочу рулить доступом. А доступ может быть организован через Remote Desktop Gateway — это не просто проброс RDP порта, но еще защита. Защита — использует только один порт входа из вне в вашу локальную сеть, не зная куда через Remote Desktop Gateway можно подключиться и не авторизовавшись на нем подключения не будет. К тому же чем меньше портов во вне открыто нет лучше. Серверная система на базе Windows Server 2012 R2 Std Eng

Тестовый стенд на котором данная заметка прорабатывается — это Debian 10 + Proxmox 6

Gateway:

  • srv-gw.polygon.com
  • IP (LAN): 10.90.90.2/24
  • IP (WAN): 172.33.33.11/24

Domain Controller:

  • srv-ad.polygon.com (AD,DNS,DHCP,)
  • IP (LAN): 10.90.90.3

Terminal Server:

  • srv-ts.polygon.com
  • IP (LAN): 10.90.90.10

RDG:

  • srv-rdsg.polygon.com
  • IP (LAN): 10.90.90.11

Workstation:

  • W10X64.polygon.com
  • IP (LAN): 10.90.90.12

Тестовый стенд на базе гипервизора Debian 10 + Proxmox 6 с задействованным железом:

  • Motherboard: Gigabyte 970A-DS3P
  • RAM: CORSAIR Vengeance CMZ8GX3M1A1600C10 DDR3 — 8Гб 1600, DIMM, Ret x4
  • CPU: AMD FX(tm)-6300 Six-Core Processor
  • HDD: SSD накопитель SILICON POWER M-Series SP512GBP34A80M28 512Гб, M.2 2280, PCI-E x4, NVMe, WDC_WD5003ABYX-0, WD Blue WDS100T2B0A 1Тб, 2.5" SATA III

Шаг №1: На определенном железе поднят гипервизор Debian 10 + Proxmox 6

Шаг №2: Создана VM которая будет шлюзом сети домена во вне, в качестве оси будет выступать PfSense 2.4.4.

Шаг №3: На VM которая является домен контроллером под управлением Windows Server 2012 R2 Std English

VM ID: 101 (srv-s2012r2a)

srv-dc.polygon.com 10.90.90.3/24

Роли: Active Directory,DNS,DHCP

  • Создаю доменную группу RDPVPNTS (в нее включен srv-ts)
  • Создаю доменную группу RDPVPNAllow (в нее включен alektest)

Шаг №4: Поднимаю еще одну VM которая будет являться шлюзом, т.е. система (srv-rdsg.polygon.com) с ролью

Win + X - Control Panel - View by: Category - Small icons - Administrative Tools - Server Manager - Add roles and features — отмечаю галочкой роль Remote Desktop Services, затем галочкой Remote Desktop Gateway, соглашаюсь на установку необходимых дополнений в которые входит роль:

  • Network Policy and Access Services
  • Web Server (IIS)

и нажимаю «Add Features«, далее нажимаю везде «Next«, а после «Install»

Шаг №5: Настраиваю работу NPS в паре с Remote Desktop Gateway (RDGW)

srv-rdsg.polygon.com

Win + X - Control Panel - Administrative Tools - Remote Desktop Services - Remote Desktop Gateway Manager - RD Gateway Manager - SRV-RDSG (Local) - Policies (сконфигурируем авторизованные подключения) — Connection Authorization Policies - Create New Policy - Wizard — выбираю Create a RD CAP and a RD RAP (recommended) и нажимаю Next

  • Type a name for the RD CAP (задаем имя шаблону): RDPVPN

и нажимаю Next

  • Select at least one supported Windows authentication method: Password
  • User group membership (required): Add Group... - добавляю группу RDPVPNAllow

и нажимаю Next

  • Device Redirection: Enable device redirection for all client devices

и нажимаю Next, Next (Session Timeout), Next

  • Type a name for the RDP RAP (задаем имя шаблону): RDPVPNTO

и нажимаю Next

  • User Groups: подставляется ранее добавленная группа POLYGON\RDPVPNAllow

и нажимаю Next

  • Network Resources: (Select an Active Directory Domain Services network resource group) Browse - если не указать, то через сервис Remote Desktop Gateway можно будет подключаться из вне к любой системе, но я же ограничиваю доступ к группе в которую у меня включен Terminal Server (srv-ts.polygon.local): RDPVPNTS

и нажимаю Next

  • Allowed Ports: Allow connections only to port 3389

и нажимаю Next, Finish

Политики созданы:

Политики на доступ кому и куда созданы

и нажимаю Close

Шаг №6: Дабы активировать Remote Desktop Gateway необходим сертификат:

Win + X - Control Panel - Administrative Tools - Remote Desktop Services - Remote Desktop Gateway Manager - RD Gateway Manager — через правый клик мышью на SRV-RDSG (Local) открываю Properties (Свойства), перехожу на вкладке SSL Certificate

сейчас нет сертификата

Нужно создать сертификат для RDG
  • Create a self-signed certificate: нажимаю на Create and Import Certificate, и нажимаю «ОК«
Создаю сертификат и сохраняю

Следующее окно говорит, что для службы RD Gateway был успешно создан самоподписанный сертификат и сохранен.

для службы RD Gateway был успешно создан самоподписанный сертификат и сохранен.

нажимаю Apply для его применения к серверу srv-rdsg.polygon.com

Сервис Remote Desktop Gateway настроен на работу с сертификатом

нажимаю Apply для его применения к серверу srv-rdsg.polygon.com

Шаг №7: Можно увеличить безопасность изменив порт подключения через Remote Desktop Protocol, по умолчанию он 443, изменяем он в окне Properties вкладка Transport Settings. Я пока оставлю по дефолту.

Шаг №8: Проверяю, что из доменной сети могу обратиться на 443/tcp

https://srv-rdsg.polygon.com
Проверяю, что из доменной сети могу обратиться на 443/tcp https://srv-rdsg.polygon.com

Так Web-сервер IIS работает.

Шаг №9: Произвожу установку терминального сервера на srv-ts.polygon.com опираясь на заметку «Терминальный сервер в Server 2012 R2»

после открываю

Win + X - Control - Administrative Tools - Computer Management - Computer Management (Local) - System Tools - Local Users and Groups - Group — и в группу RDS Management Server добавляю систему на которой будет развернута роль Remote Desktop Gateway, у меня это srv-rdsg.polygon.com

Win + X - Control - Administrative Tools - Computer Management - Computer Management (Local) - System Tools - Local Users and Groups - Group - и в группу Remote Desktop Users добавляю группу RDPVPNAllow

Шаг №10: Теперь, как же подключиться к терминальному серверу если точка входа это система с ролью Remote Desktop Gateway

К примеру из локальной сети

W10X64.polygon.com — авторизуюсь на ней под учетной записью alektest, запускаю Win + R -> mstsc.exe

вкладка Общие

  • Компьютер: srv-ts.polygon.com
  • Пользователь: alektest

вкладка Дополнительно

перехожу в «Параметры«, отмечаю «Использовать следующие параметры сервера шлюза удаленных рабочих столов»

  • Имя сервера: srv-rdsg.polygon.com
  • Метод входа: Выбрать позднее
  • Не использовать сервер шлюза удаленных рабочих столов для локальных адресов: снимаю галочку
  • Использовать мои учетные данные шлюза удаленных рабочих столов для удаленного компьютера: отмечаю галочкой

и нажимаю «ОК«, для удобства сохраняю настройки подключения на рабочий стол, как srv-ts.rdp и нажимаю «Сохранить«. Затем нажимаю «Подключить«.

Окно говорит, что сейчас будет инициализировано подключение: подтверждаю нажатием на «Подключить»

Инициализирую подключение к терминальному шлюзу

Далее нужно указать учетные данные для подключения к srv-rdsg.polygon.com

  • Имя пользователя: alektest
  • Пароль: Aa1234567
  • Запомнить меня: отмечаю галочкой

и нажимаю «ОК»

Происходит инициализация подключения

Происходит инициализация подключения

в ответ окно «Компьютеру не удается проверить удостоверение шлюза удаленных рабочих столов «srv-rdsg.polygon.com«. Подключаться к серверам без удостоверение небезопасно. Обратитесь за помощью к администратору сети.»

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

А все потому что сертификат который я создал для сервера srv-rdsg.polygon.com самоподписанный и не распространен на все клиентские станции домена.

Шаг №11: Как добавить самоподписанный сертификат сервера srv-rdsg.polygon.com на клиентские станции, я буду использовать помощь GPO, копирую его с системы srv-rdsg.polygon.com на srv-dc.polygon.com к примеру в каталог C:\1

srv-dc.polygon.local - Win + X - Control Panel - Administrative Tools - Group Policy Management — и создаю GPO: RDPVPNTS, нацелена она на

  • Location: polygon.com
  • Security Filtering: Authentication Users

после редактирую политику

Computer Configuration - Policies - Windows Settings - Security Settings - Public Key Policies — и добавляю данный сертификат в «Trusted Publishers» — Import — указываю его.

Computer Configuration - Policies - Windows Settings - Security Settings - Public Key Policies — и добавляю данный сертификат в «Trusted Root Certification Authorities» — Import — указываю его.

Итог настроенной политики

Через GPO прописываю всем сертификат от шлюза терминальных подключений

Теперь когда рабочие станции и узлы домена polygon.com сделаю перезагрузку и политика к ним применится подключение к терминальному серверу через шлюз будет возможно.

Шаг №12: Проверяю, что на клиентской рабочей станции W10X64 (Version 10.0.18362.356) сертификат присутствует

Win + R - control - Свойства браузера - вкладка "Содержание" - Сертификаты, тут нужно проверить наличие сертификата в «Доверенные корневые центры сертификации» и «Доверенные издатели»

у меня сертификат присутствует

Шаг №13: Проверяю, что теперь с добавленным сертификатом на клиентской рабочей станции W10X64 (Version 10.0.18362.356) я могу подключиться к терминальному серверу. Увы подключение не проходит

Но подключиться все еще не могу

Разбираюсь почему?

Я забыл добавить в группу RDPVPNAllow учетную запись alektest

Шаг №14: Более вдумчиво проанализировал ошибку и пришел к выводу, что мой сервер аутентификации srv-rdsg.polygon.com не зарегистирирован в Active Directory

Win + X - Control Panel - Administrative Tools - Network Policy Server и через правый клик мышью на NPS (Local) регистрирую его нажатием на Register server in Active Directory, OK, OK

Регистрирую сервис NPS на srv-rdsg в Active Directory

Шаг №15: Возвращаюсь к «Шаг №10«, запускаю сохраненный ярлык на рабочем столе srv-ts.rdp и нажимаю «Подключить«. Подключение проходит успешно.

Подключение успешно

если же просто создать подключение к srv-ts без указания шлюза, то соединение будет также установлено, т.к. группу RDPVPNAllow состоит в группе Remote Desktop Users, но это уже обычная авторизация в доменной сети.

Шаг №16: У системного администратора при использовании RD Gateway Manager появился инструмент посредством которого он может отключать удаленные сеансы прошедшие через через него, смотреть кто подключается, нет ли лишних.

Win + X - Control Panel - Administrative Tools - Remote Desktop Services - Remote Desktop Gateway Manager - RD Gateway Manager - SRV-RDSG (Local) - Monitoring

При использовании RD Gateway Manager есть мониторинг

Итого всей этой заметкой я разобрался кстати снова, я когда ее только начал оформлять вспомнил, что уже делал такое, но использовал везде Windows Server 2016. Итог теперь в любой организации где я буду работать, то обязательно буду делать доступ из вне к Windows системам через роль Remote Desktop Gateway. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.