Задача: Развернуть/Настроить серверную часть на Lubuntu 18.04 Desktop amd64
соединения/взаимодействия посредством RDP
в дополнении к уже существующему VNC. XRDP
предоставляет графический вход на удаленные компьютеры с помощью RDP (Microsoft Remote Desktop Protocol).
XRDP
принимает соединения от различных RDP
клиентов: FreeRDP, RDesktop, NeutrinoRDP
и Microsoft Remote Desktop Client (для Windows, MacOS
, прошивки и Android
).
Предварительные действия:
- В качестве тестового полигона где прорабатываю от и до по реализации задачи использую гипервизор Debian 10 + Proxmox 6
- Образ
Lubuntu 18.04 Desktop
был установлен по заметке.
Шаг №1:
Обновляю систему Lubuntu 18.04 Desktop
до самого актуального состояния по установленным пакетам на текущий момент:
ekzorchik@srv-dbionic:~$ sudo rm -f /var/lib/dpkg/lock-frontend ekzorchik@srv-dbionic:~$ sudo rm -f /var/lib/dpkg/lock ekzorchik@srv-dbionic:~$ sudo rm -Rf /var/lib/apt/lists/ ekzorchik@srv-dbionic:~$ sudo apt-get update && sudo apt-get upgrade -y ekzorchik@srv-dbionic:~$ uname -a && lsb_release -a Linux srv-dbionic 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.4 LTS Release: 18.04 Codename: bionic
Шаг №2:
Устанавливаю сервер xrdp:
ekzorchik@srv-dbionic:~$ sudo apt-get install -y xrdp ekzorchik@srv-dbionic:~$ apt-cache show xrdp | grep Version Version: 0.9.5-2 ekzorchik@srv-dbionic:~$ sudo systemctl status xrdp | head -n3 ● xrdp.service - xrdp daemon Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-07-31 22:58:17 MSK; 52s ago ekzorchik@srv-dbionic:~$
Шаг №3:
Настройки по умолчанию можно найти в файле /etc/default/xrdp
, а все прочие конфигурационные файлы сервера лежат в каталоге /etc/xrdp
. Основные параметры находятся в файле xrdp.ini
, который можно не менять. Конфиг хорошо документирован, к тому же в комплекте имеется соответствующие manpages: man xrdp.ini & man xrdp
Шаг №4:
Осталось только отредактировать скрипт /etc/xrdp/startwm.sh
, который исполняется при инициализации пользовательской сессии.
ekzorchik@srv-dbionic:~$ sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.backup ekzorchik@srv-dbionic:~$ sudo nano /etc/xrdp/startwm.sh #!/bin/sh # xrdp X session start script (c) 2015, 2017 mirabilos # published under The MirOS Licence if test -r /etc/profile; then . /etc/profile fi if test -r /etc/default/locale; then . /etc/default/locale test -z "${LANG+x}" || export LANG test -z "${LANGUAGE+x}" || export LANGUAGE test -z "${LC_ADDRESS+x}" || export LC_ADDRESS test -z "${LC_ALL+x}" || export LC_ALL test -z "${LC_COLLATE+x}" || export LC_COLLATE test -z "${LC_CTYPE+x}" || export LC_CTYPE test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT test -z "${LC_MESSAGES+x}" || export LC_MESSAGES test -z "${LC_MONETARY+x}" || export LC_MONETARY test -z "${LC_NAME+x}" || export LC_NAME test -z "${LC_NUMERIC+x}" || export LC_NUMERIC test -z "${LC_PAPER+x}" || export LC_PAPER test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE test -z "${LC_TIME+x}" || export LC_TIME test -z "${LOCPATH+x}" || export LOCPATH fi if test -r /etc/profile; then . /etc/profile fi #test -x /home/ekzorchik/.xsession && exec /home/ekzorchik/.xsession #exec /bin/sh /home/ekzorchik/.xsession lxsession -s Lubuntu -e LXDE
На заметку: В обязательном порядке добавьте в конце пустую строку в файле startwm.sh
Шаг №5:
Дабы настройки конфигурационного файла startwm.sh
применились нужно систему отправить в перезагрузку, а после проверить, что сервис xrdp
поднят:
ekzorchik@srv-dbionic:~$ sudo reboot ekzorchik@srv-dbionic:~$ sudo netstat -tulpn | grep :3389 tcp6 0 0 :::3389 :::* LISTEN 1109/xrdp
Шаг №6:
Проверяю, как выглядит подключение к этой системе Lubuntu 18.04 Desktop amd64
через протокол RDP
. В качестве клиентской системы у меня будет выступать моя рабочая система Ubuntu 18.04 Desktop amd64
ноутбука Lenovo E555
, а клиент где настраивается подключение — это Remmina (1.2.0-rcgit-29)
Шаг №7:
Сервер Xrdp
запускается с правами пользователя xrdp
и по умолчанию берет cертификат /etc/ssl/private/ssl-cert-snakeoil.key
, который можно заменить собственным. Для доступа на чтение файла нужно добавить пользователя в группу ssl-cert:
ekzorchik@srv-dbionic:~$ sudo adduser xrdp ssl-cert Adding user `xrdp' to group `ssl-cert' ... Adding user xrdp to group ssl-cert Done. ekzorchik@srv-dbionic:~$
после нажимаю "Сохранить
"
, а затем по соединению через двойной щелчкок мышью произвожу соединение:
и вот я успешно подключился к Lubuntu 18.04 Desktop
через RDP
протокол:
Шаг №8:
Так, а если подключаться с Windows
системы, к примеру Windows 10 Pro (Version 10.0.18362.959)
через mstsc /v:172.33.33.115
Win + X - Командная строка -
C:\Users\ekzorchik> mstsc /v:172.33.33.115
или
Win + R -> mstsc /v:172.33.33.115
В первый раз подключаясь отмечаю галочкой "Больше не выводить запрос о подключениях к этому компьютеру"
и нажимаю "Да"
. Кстати если посмотреть сертификат то видно что он самоподписанный сроком на 10
лет и создался он когда был установлен пакет xrdp.
и вот оно успешное RDP
соединение из Windows 10
с Lubuntu 18.04 Desktop
Шаг №9:
Защита сервера — а защита строится на том если Ваша система Lubuntu 18.04
имеет статический WAN
— адрес, то Вам проще — нужно всего лишь установить надстройку над правилами iptables: firewalld (или ufw)
и настроить откуда принимать соединения. Я так делаю.
sudo ufw disable Firewall stopped and disabled on system startup sudo apt-get install -y firewalld sudo systemctl enable firewalld sudo systemctl start firewalld ip r | awk '{print $5}' | head -n1 eth0 sudo firewall-cmd --zone public --change-interface=eth0 --permanent sudo firewall-cmd --add-rich-rule 'rule family="ipv4" port port="3389" protocol="tcp" source address="172.33.33.16/32" accept' --permanent sudo firewall-cmd --remove-service=dhcpv6-client --permanent sudo firewall-cmd --reload sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="172.33.33.16/32" port port="3389" protocol="tcp" accept sudo firewall-cmd --state running
После выше проделанного к серверу/системе можно подключиться откуда угодно через SSH
соединение, а по RDP
только с системы где IP
-адрес — это 172.33.33.16
При подключении с системы не указанной в разрешенных — будет отбивка, что не удалось подключиться к этому компьютеру по одной из следующих причин:
Чтобы удалить правило откуда можно подключаться:
sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" port port="3389" protocol="tcp" source address="172.33.33.16/32" accept' --permanent success sudo firewall-cmd --add-port=3389/tcp --permanent success sudo firewall-cmd --reload
Шаг №10:
Если внешний IP
у системы Lubuntu 18.04 Desktop
динамический (если она в интернете), то просто открываем возможность подключения на порт 3389/tcp.
Вот только это очень плохая рекомендация, а потому стоит изменить порт подключения для сервиса xrdp
и настроить правило на доступ только через этот новый порт:
ekzorchik@srv-dbionic:~$ sudo nano /etc/xrdp/xrdp.ini #было: port=3389 #изменить на port=3389 #остальные параметры оставить не тронутыми ekzorchik@srv-dbionic:~$ sudo systemctl restart xrdp ekzorchik@srv-dbionic:~$ sudo netstat -tulpn | grep :33389 tcp6 0 0 :::33389 :::* LISTEN 3131/xrdp ekzorchik@srv-dbionic:~$ sudo firewall-cmd --remove-port=3389/tcp --permanent success ekzorchik@srv-dbionic:~$ sudo firewall-cmd --add-port=33389/tcp --permanent success ekzorchik@srv-dbionic:~$ sudo firewall-cmd --reload
Теперь настройки подключения в Remmina
будут выглядеть следующим образом:
Шаг №11:
Кстати если в настройках соединения через клиент Remmina
поставить галочку "Общая папка"
и указать ее в основной системе, к примеру "Documents"
то при подключении к системе Lubuntu 18.04 Desktop
посредством протокола RDP
на рабочем столе появится ссылка на доступ к общей папке и можно обмениваться файлами между основной системы и подключаемой.
Итого, как по мне возможность подключения по RDP
существенно быстрее в плане работы чем если бы я использовал x11vnc
, как это я описывал в заметке «Настройка x11vnc для Lubuntu 18.04 Desktop» . Но все же я буду использовать оба способа графического взаимодействия. На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.