Четверг, 02.10.2025 15:02

Безопасное соединение к ПК с РЕДОС с помощью XRDP и TLS (SSL)

Безопасное подключение к ПК с РЕДОС с помощью RDP и TLS (SSL)

Впервые начиная изучать РЕДОС Linux вы, скорее будете использовать виртуальную  машину для установки. Для подключения и работе с системой из под Windows единственным удобным способом является использование программы Удаленный рабочий стол и протокола RDP. У всех клиентов и серверов VNC для Windows есть некоторые проблемы с работой с буфером обмена.

Сегодня мы рассмотрим установку XRDP в РЕДОС, а так же настройку шифрования с использованием сертификатов и TLS современной версии SSL, для обеспечения безопасности соединения.

Для этой установки я использую Hyper-V. Операционная система установлена с опцией MATE и без дополнительных пакетов.

Определение ip-адреса виртуальной машины

Прежде чем подключаться к виртуальной машине, нам нужно определить её ip-адрес.

Откроем окно управления виртуальной машины, запустим терминал и введем:

ip a

Изображение удалено.

В моем случае виртуальной машине был назначен ip-адрес:

192.168.1.50

Подключение к виртуальной машине РЕДОС с помощью PUTTY

Все настройки намного удобнее проводить не из окна управления виртуальной машиной, а с помощью консоли по протоколу SSH. Для подключения я рекомендую использовать PuTTY. Скачать программу можно с сайта - https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Для загрузки последней версии можно воспользоваться ссылкой - https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe

Запустим putty.exe , откроется окно:

Изображение удалено.

Введем ip адрес виртуальной машины, в моем случае это 192.168.1.50 и нажмем Open

Изображение удалено.

Введите свое имя пользователя и пароль и нажмите Enter

Изображение удалено.

Все команды для настройки теперь можно вводить сюда. Для того чтобы вставить текст из буфера обмена достаточно нажать на правую кнопку мыши. Чтобы скопировать текст из консоли в буфер обмена просто выделите его курсором мышки и он сразу будет скопирован – это очень удобно!

Установка XRDP

Из консоли запустим:

sudo dnf install xrdp xorgxrdp pipewire-module-xrdp

Введем пароль пользователя:

Зависимости разрешены.
================================================================================
Пакет                    Архитектура
                                     Версия                   Репозиторий Размер
================================================================================
Установка:
pipewire-module-xrdp     x86_64     0~git19-1.red80          base         31 k
xorgxrdp                 x86_64     0.10.4-1.red80           updates      74 k
xrdp                     x86_64     1:0.10.4.1-1.red80       updates     609 k
Установка зависимостей:
imlib2                   x86_64     1.11.1-1.red80           base        266 k
openh264                 x86_64     1:2.4.1-4.red80          updates     421 k
turbojpeg                x86_64     2.1.5-2.red80            base        242 k

Результат транзакции
================================================================================
Установка  6 Пакетов

Объем загрузки: 1.6 M
Объем изменений: 6.5 M
Продолжить? [д/Н]:

Введем Y и нажмем Enter

Установлен:
  imlib2-1.11.1-1.red80.x86_64                 openh264-1:2.4.1-4.red80.x86_64
  pipewire-module-xrdp-0~git19-1.red80.x86_64  turbojpeg-2.1.5-2.red80.x86_64
  xorgxrdp-0.10.4-1.red80.x86_64               xrdp-1:0.10.4.1-1.red80.x86_64

Выполнено!

Все пакеты установлены.

Включим и запустим службу:

sudo systemctl enable xrdp --now
sudo systemctl restart xrdp

Первое подключение к РЕДОС с помощью MSTSC

Вернемся к Windows и из меню пуск запустим команду

mstsc

Откроется окно, введем наш адрес:

Изображение удалено.

Нажмем подключить, откроется окно:

Изображение удалено.

Пока что нажмем Да, не ставьте никаких галочек, нам потребуется это окно в дальнейшем!

Откроется окно с ошибкой:

Изображение удалено.

Чтобы исправить её нам нужно добавить строку:

export $(dbus-launch)

В функцию

wm_start()

в файле

/usr/libexec/xrdp/startwm.sh

Для этого из консоли PUTTY запустим:

sudo sed -i '/# debian/s/^/  export $(dbus-launch)\n\n/' /usr/libexec/xrdp/startwm.sh

Перезапустим rdp

sudo systemctl restart xrdp

Попробуем снова подключиться:

Изображение удалено.

На этот раз, всё получилось

Введем имя пользователя и пароль и нажмем Ок

У нас запустится сеанс Gnome, а нам нужен сеанс MATE.

Закроем окно удаленного рабочего стола.

Устанавливаем сеанс MATE по умолчанию для XRDP

Чтобы установить основным сеанс MATE из консоли Putty запустим команду:

echo "DESKTOP=MATE" | sudo tee /etc/sysconfig/desktop

Эта команда создаст файл

/etc/sysconfig/desktop 

со строкой

DESKTOP=MATE

Перезапустим rdp

sudo systemctl restart xrdp

Попробуем еще раз подключиться, на этот раз всё хорошо:

Изображение удалено.

 

Создаем самоподписанный сертификат для XRDP

Вернемся к консоли Putty. Для организации защищенного соединения нам потребуются сертификат.

Если у вас в ЛВС уже есть центр выдачи сертификатов (CA), то вы можете просто запросить сертификат у него и использовать подписанный сертификат, тогда вам не потребуется устанавливать сертификат в список доверенных сертификатов!

Создадим его. При установке РЕДОС я отключил учетную запись root поэтому команда su сама по себе не работает, нам нужно запускать её с помощью sudo!

Создавать сертификаты и настраивать далее мы будем в папке пользователя root!

sudo su -

Создадим папки для создания сертификатов:

mkdir ssl_certs
cd ssl_certs

Создадим файл с настройками для выдачи сертификата:

touch openssl.cnf

Добавим к файлу openssl.cnf содержимое:

[ req ]
default_bits        = 2048
prompt = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions     = v3_req

[ req_distinguished_name ]
commonName = srv1.altuninvv.ru
countryName = RU
stateOrProvinceName = Magadan Region
localityName = Magadan
organizationName = AltuninVV
[ v3_req ]
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=critical,serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = srv1.altuninvv.ru
IP.1 = 192.168.1.50

Здесь вы можете заменить:

srv1.altuninvv.ru
192.168.1.50

На свои значения.

Запустим генерацию сертификата и закрытого ключа:

openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 1825 -config openssl.cnf -extensions v3_req

Здесь я указываю срок действия 5 лет. В то же время у разных организаций разные требования по срокам действия сертификатов – это важно помнить!

На запрос:

Enter PEM pass phrase:

Введем:

123456

Так как сертификаты и приватные ключи будут использоваться сервером, мы в любом случае снимем пароль с них, так как XRDP не поддерживает сохранение паролей для ключей. Поэтому пароль может быть такой простой.

Будут созданы два файла:

ls
private.key  public.cert

Снимем пароль с приватного ключа:

openssl rsa -in private.key -out private.key

Введем пароль:

123456

Настройка подключения с помощью сертификатов и TLS (SSL) в XRDP

Создадим папки для ключей в папке с настройками XRDP:

mkdir /etc/xrdp/keys

Скопируем ключи

cp private.key /etc/xrdp/keys
cp public.cert /etc/xrdp/keys

Добавим настройки в файл:

 /etc/xrdp/xrdp.ini

Внесем изменения в конфигурацию XRDP. Запустим:

sed  -i 's/certificate=/certificate=\/etc\/xrdp\/keys\/public.cert/g' /etc/xrdp/xrdp.ini
sed  -i 's/key_file=/key_file=\/etc\/xrdp\/keys\/private.key/g' /etc/xrdp/xrdp.ini
sed  -i 's/security_layer=negotiate/security_layer=tls/g' /etc/xrdp/xrdp.ini
sed  -i 's/#tls_ciphers=HIGH/tls_ciphers=HIGH/g' /etc/xrdp/xrdp.ini

Здесь мы задаем пути до файлов с сертификатами, принудительно включаем использование TLS и указываем использовать максимально возможно сложный тип шифрования.

Обязательно изменим права на файлы, чтобы XRDP мог получить доступ к файлам:

chmod 644 /etc/xrdp/keys/public.cert
chmod 640 /etc/xrdp/keys/private.key
chown :xrdp /etc/xrdp/keys/private.key

Перезапустим xrdp:

systemctl restart xrdp

Теперь если мы попробуем соединиться, то откроется окно:

Изображение удалено.

Сертификат:

Изображение удалено.

Так как сертификат самоподписанный нам нужно установить сам сертификат в хранилище доверенных сертификатов.

Установим сертификат.

Нажмем на кнопку Установить сертификат...

Изображение удалено.

Выберем Текущий пользователь

Изображение удалено.

Выберем поместить все сертификаты в следующее хранилище и нажмем Обзор:

Изображение удалено.

Выберем Доверенные корневые центры сертификации и нажмем Ок:

Изображение удалено.

Нажмем Далее

Изображение удалено.

Нажмем Готово

Изображение удалено.

На Запрос ответим Да

Изображение удалено.

Сертификат успешно установлен!

Изображение удалено.

Закроем окно с сертификатом и снова попробуем соединится.

Если перейти в полноэкранный режим то на верху появится замок:

Изображение удалено.

Нажмем на него:

Изображение удалено.

У нас включена проверка с помощью сертификатов и мы можем проверить сертификат

Проверка использования шифрования сервером XRDP

Проверим, что со стороны сервера используется TLS.

Удалим лог XRDP

rm /var/log/xrdp.log

Перезапустим XRDP

systemctl restart xrdp

Попробуем войти на сервер по RDP и после успешного входа из консоли PUTTY запустим:

cat /var/log/xrdp.log | grep TLS
[2025-10-02T19:45:20.517+1100] [INFO ] Selected TLS security
[2025-10-02T19:45:20.456+1100] [INFO ] TLS connection established from [::ffff:192.168.1.40]:49538 TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384

У нас используется шифрование соединения TLSv1.2 и шифр ECDHE-RSA-AES256-GCM-SHA384!

Заключение

Сегодня мы рассмотрели установку сервера XRDP в РЕДОС Linux и настроили его на использование шифрование соединения с использованием сертификатов:

Установили XCRDP;

Протестировали подключение к серверу с использованием mstsc;

Установили сеансом по умолчанию MATE;

Создали самоподписанный сертификат для XRDP;

Внесли изменения в конфигурацию XRDP;

Установили сертификат сервера с список доверенных корневых центров сертификации;

Проверили что соединение использует сертификат на клиенте;

Проверили использование сертификата сервером.

Категория РЕД ОС Linux

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

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 180