15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
12.12.2023

Как да инсталирате и конфигурирате XRDP на Ubuntu 22.04

XRDP е реализация с отворен код на сървъра за протокол за отдалечен работен плот (RDP) на Microsoft за Linux. Той позволява на всеки RDP-съвместим клиент — включително Windows Remote Desktop Connection, Remmina и FreeRDP — да установи пълна графична сесия на работния плот на отдалечена Linux машина. На Ubuntu 22.04, XRDP действа като мост между RDP клиента и основна X11 или Xorg дисплейна сесия, предоставяйки отзивчиво, криптирано изживяване с отдалечен работен плот без необходимост от VNC или собствен софтуер.

Това ръководство обхваща пълната инсталация, конфигурацията на SSL сертификат, защитата на защитната стена, интеграцията на средата на работния плот и процедурата за свързване за XRDP на Ubuntu 22.04 LTS — включително крайни случаи и проблеми след инсталацията, които повечето уроци пропускат.

Какво е XRDP и как работи

XRDP работи по модел клиент-сървър. Демонът xrdp слуша на TCP порт 3389 и обработва RDP ръкостискането, договарянето на сесията и транспортното криптиране чрез TLS. Вътрешно той стартира мениджър на сесии xrdp-sesman, който удостоверява потребителите чрез PAM (Pluggable Authentication Modules) и стартира X11 сесия чрез конфигурируем бекенд — обикновено Xvfb (виртуален фреймбуфер) или директна Xorg сесия.

Ключовите архитектурни компоненти са:

  • xrdp демон — обработва договарянето на RDP протокола и TLS терминацията
  • xrdp-sesman — управлява жизнения цикъл на потребителската сесия и PAM удостоверяването
  • X11 бекенд — предоставя графичния фреймбуфер (Xvfb, Xorg или X11rdp)
  • chansrv — обработва споделянето на клипборда, пренасочването на звука и картографирането на дискове

Тази архитектура означава, че XRDP не замества вашия мениджър на дисплея — той работи заедно с него, създавайки изолирани графични сесии за всеки удостоверен потребител.

XRDP срещу алтернативи: Сравнение на протоколи и функции

ФункцияXRDP (RDP)x11vnc (VNC)NoMachine (NX)TeamViewer
ПротоколRDP (Microsoft стандарт)VNC/RFBNX протоколСобствен
Вграден Windows клиентДа (вграден MSTSC)Не (изисква клиент)Не (изисква клиент)Не (изисква клиент)
TLS криптиранеДа (вградено)По избор (чрез stunnel)ДаДа
Поддръжка на множество сесииДаНе (единичен дисплей)ДаДа
Споделяне на клипбордДаДаДаДа
Пренасочване на звукДа (чрез PulseAudio)ОграниченоДаДа
Производителност по WANДобраСлабаОтличнаДобра
Отворен кодДа (Apache 2.0)ДаЧастичноНе
Порт3389590040005938

За екипи, които вече използват Windows инфраструктура, XRDP е най-оперативно ефективният избор, тъй като не изисква допълнителен клиентски софтуер на Windows машини.

Предварителни изисквания

Преди да продължите, уверете се в следното:

  • Работещ Ubuntu 22.04 LTS сървър или десктоп инстанция
  • Потребителски акаунт с привилегии sudo
  • Инсталирана среда на работния плот (GNOME, XFCE или MATE — подробности по-долу)
  • SSH достъп до сървъра за първоначална конфигурация
  • UFW или iptables, налични за управление на защитната стена

Ако използвате безглав VPS без предварително инсталирана среда на работния плот, трябва да инсталирате такава, преди XRDP да може да предостави графична сесия. Минималната инсталация на XFCE е силно препоръчителна за използване на отдалечен работен плот поради ниския й разход на памет.

Стъпка 1 — Актуализиране на системните пакети

Винаги синхронизирайте индекса на пакетите си и прилагайте чакащи надстройки преди инсталиране на нов софтуер. Това предотвратява конфликти на зависимости и гарантира, че получавате най-новата кръпната версия на XRDP.

sudo apt update && sudo apt upgrade -y

Рестартирайте, ако е приложена актуализация на ядрото:

sudo reboot

Стъпка 2 — Инсталиране на среда на работния плот (само за безглави сървъри)

Ако вашата Ubuntu 22.04 инстанция няма GUI, инсталирайте лека среда на работния плот. XFCE4 е най-надеждният избор за XRDP на безглави сървъри — GNOME сесиите през XRDP на Ubuntu 22.04 имат известни проблеми с рендирането, свързани с конфликти между Wayland/GDM3.

sudo apt install xfce4 xfce4-goodies -y

Алтернативно, за MATE:

sudo apt install ubuntu-mate-desktop -y

Критична бележка за потребителите на GNOME: Ubuntu 22.04 по подразбиране използва Wayland сесия. XRDP не поддържа Wayland нативно. Ако възнамерявате да използвате GNOME, трябва да принудите Xorg сесии, като редактирате /etc/gdm3/custom.conf и разкоментирате WaylandEnable=false. Дори тогава, GNOME през XRDP на 22.04 често показва черен екран при влизане — XFCE елиминира изцяло този клас проблеми.

Стъпка 3 — Инсталиране на XRDP

Инсталирайте XRDP от официалните хранилища на Ubuntu:

sudo apt install xrdp -y

Мениджърът на пакети ще инсталира xrdp заедно с неговата зависимост xorgxrdp, която предоставя бекенда на драйвера за дисплей, базиран на Xorg. Инсталацията обикновено завършва за по-малко от две минути на стандартен VPS с cPanel или bare-metal сървър със стабилна интернет връзка.

Стъпка 4 — Активиране и стартиране на услугата XRDP

Активирайте XRDP да стартира автоматично при зареждане, след което го стартирайте незабавно:

sudo systemctl enable xrdp
sudo systemctl start xrdp

Проверете дали услугата е активна и слуша:

sudo systemctl status xrdp

Очакваният изход включва Active: active (running) и ред, потвърждаващ, че процесът слуша. За изрично потвърждение на свързването с порта:

sudo ss -tlnp | grep 3389

Трябва да видите изход, подобен на:

LISTEN  0  10  0.0.0.0:3389  0.0.0.0:*  users:(("xrdp",pid=XXXX,fd=12))

Ако портът не е свързан, проверете /var/log/xrdp.log за грешки при стартиране, преди да продължите.

Стъпка 5 — Конфигуриране на разрешенията за SSL сертификат

По време на инсталацията, XRDP създава специален системен потребител с име xrdp. Демонът използва ключа на сертификата в /etc/ssl/private/ssl-cert-snakeoil.key за TLS криптиране на сесията. По подразбиране, този файл е собственост на групата ssl-cert, а потребителят xrdp не принадлежи към нея — което причинява неуспехи при TLS ръкостискане или преминаване към некриптирани сесии.

Добавете потребителя xrdp към групата ssl-cert:

sudo usermod -a -G ssl-cert xrdp

Рестартирайте XRDP, за да приложите промяната в членството в групата:

sudo systemctl restart xrdp

Бележка за производство: Сертификатът ssl-cert-snakeoil е самоподписан сертификат, генериран от пакета ssl-cert. За производствени среди или всеки сървър, изложен в интернет, заменете го с валиден сертификат от доверен CA. Ако вашият сървър има публичен домейн, можете да използвате сертификат от вашия доставчик на SSL сертификати и да конфигурирате XRDP да го референцира чрез директивите certificate и key_file в /etc/xrdp/xrdp.ini.

За използване на персонализиран сертификат:

sudo nano /etc/xrdp/xrdp.ini

Намерете и актуализирайте тези редове:

certificate=/etc/ssl/certs/your-domain.crt
key_file=/etc/ssl/private/your-domain.key

Стъпка 6 — Конфигуриране на сесията на работния плот за XRDP

XRDP чете конфигурационен файл на сесията за всеки потребител в ~/.xsession или ~/.Xclients, за да определи коя среда на работния плот да стартира. Без този файл, много конфигурации на Ubuntu 22.04 показват сив или черен екран след удостоверяване.

За XFCE, създайте файла на сесията за вашия потребител:

echo "xfce4-session" > ~/.xsession
chmod +x ~/.xsession

За MATE:

echo "mate-session" > ~/.xsession
chmod +x ~/.xsession

Ако конфигурирате това за множество потребители на Dedicated Server, автоматизирайте тази стъпка с shell цикъл или инструмент за управление на конфигурации като Ansible.

Стъпка 7 — Конфигуриране на защитната стена

XRDP слуша на TCP порт 3389. Трябва изрично да разрешите този порт през UFW. Въпреки това, излагането на RDP директно в интернет на 0.0.0.0 е значителен риск за сигурността — RDP е една от най-активно атакуваните с груба сила услуги в интернет.

Препоръчителен подход: ограничете достъпа до конкретен IP диапазон или VPN подмрежа.

Разрешете достъп само от конкретна доверена подмрежа:

sudo ufw allow from 192.168.1.0/24 to any port 3389

Ако се свързвате от един известен IP адрес:

sudo ufw allow from YOUR.IP.ADDRESS to any port 3389

Ако трябва временно да разрешите по-широк достъп (не се препоръчва за производство):

sudo ufw allow 3389/tcp

Презаредете и проверете правилата на защитната стена:

sudo ufw reload
sudo ufw status verbose

Препоръки за укрепване на сигурността:

  • Сменете порта по подразбиране: Редактирайте /etc/xrdp/xrdp.ini и задайте port=33890 (или друг нестандартен порт), след което актуализирайте вашето UFW правило съответно. Това драстично намалява шума от автоматизирано сканиране.
  • Използвайте fail2ban: Инсталирайте и конфигурирайте fail2ban с клетката xrdp, за да блокирате IP адреси след многократни неуспешни опити за удостоверяване.
  • Тунелирайте през SSH: За максимална сигурност, свържете XRDP само към 127.0.0.1 и достъпвайте го чрез SSH тунел. Това елиминира изцяло директното излагане в интернет.

За свързване на XRDP само към localhost:

sudo nano /etc/xrdp/xrdp.ini

Задайте:

address=127.0.0.1

След това се свържете чрез SSH тунел от вашия клиент:

ssh -L 3389:127.0.0.1:3389 user@your-server-ip -N

Насочете вашия RDP клиент към 127.0.0.1:3389.

Стъпка 8 — Свързване към отдалечения работен плот XRDP

От Windows

  1. Натиснете Win + R, въведете mstsc и натиснете Enter, за да отворите Връзка с отдалечен работен плот.
  2. В полето Компютър, въведете IP адреса на вашия Ubuntu сървър (напр. 203.0.113.45).
  3. Кликнете Свързване.
  4. На екрана за влизане в XRDP, изберете типа сесия (обикновено Xvnc или Xorg), въведете вашето Ubuntu потребителско име и парола и кликнете OK.

От Linux (Remmina)

  1. Отворете Remmina и създайте нов профил за връзка.
  2. Задайте протокола на RDP.
  3. Въведете IP адреса на сървъра, вашето потребителско име и парола.
  4. Задайте дълбочината на цвета на True color (32 bpp) за най-добро визуално качество.
  5. Свържете се.

От macOS

Използвайте Microsoft Remote Desktop от Mac App Store — той поддържа RDP нативно и работи безпроблемно с XRDP.

Отстраняване на често срещани проблеми с XRDP на Ubuntu 22.04

Черен екран след влизане

Това е най-честият проблем на Ubuntu 22.04. Причини и решения:

  • Липсващ файл ~/.xsession: Създайте го, както е показано в Стъпка 6.
  • Конфликт на Wayland сесия: Деактивирайте Wayland в /etc/gdm3/custom.conf.
  • Остарял X lock файл: Изтрийте файловете /tmp/.X*-lock и рестартирайте XRDP.

Неуспешно удостоверяване въпреки правилните идентификационни данни

  • Проверете дали PAM не блокира процеса xrdp-sesman: проверете /var/log/xrdp-sesman.log.
  • Уверете се, че потребителският акаунт не е заключен: sudo passwd -S username.
  • Потвърдете, че потребителят не е задължен да смени паролата си при следващото влизане.

Слаба производителност или висока латентност

  • Намалете дълбочината на цвета в настройките на RDP клиента (16-битов вместо 32-битов).
  • Активирайте RemoteFX или H.264 кодек в /etc/xrdp/xrdp.ini, ако вашият клиент го поддържа.
  • Превключете от бекенд Xvnc към Xorg в селектора на XRDP сесии за по-добра производителност на сървъри с хардуерно ускорение.

Порт 3389 не е достъпен

  • Потвърдете, че XRDP работи: sudo systemctl status xrdp
  • Потвърдете, че UFW не блокира: sudo ufw status
  • Проверете групите за сигурност на доставчика на облак или мрежовите ACL — много доставчици на VPS имат допълнителен слой на защитна стена на ниво хипервайзор, който е независим от UFW.

Разширени опции за конфигурация

Активиране на споделянето на клипборда

Пренасочването на клипборда между RDP клиента и отдалечения работен плот изисква канална услуга xrdp-chansrv. Тя стартира автоматично със сесията, но ако клипбордът не работи, проверете дали процесът работи:

ps aux | grep xrdp-chansrv

Ако не работи, проверете за грешки в лог файловете ~/.xrdp/ в домашната директория на потребителя.

Активиране на пренасочването на звука

Инсталирайте PulseAudio RDP модула:

sudo apt install pulseaudio-module-xrdp -y

Излезте и се свържете отново. Аудио изходът от отдалечения работен плот ще бъде пренасочен към локалните ви клиентски високоговорители.

Едновременни сесии на множество потребители

XRDP поддържа множество едновременни сесии по подразбиране. Всеки удостоверен потребител получава изолирана X11 сесия. За проверка на активните сесии:

sudo xrdp-seslist

За среди с много едновременни потребители — като работни станции за разработчици или среди за обучение — Dedicated Server предоставя необходимото пространство за CPU и RAM за поддържане на множество графични сесии без конкуренция.

Основни изводи и контролен списък за решения

Преди да внедрите XRDP в производство, проверете всяко от следните:

  • Инсталирана среда на работния плот и ~/.xsession конфигуриран за всеки потребител (препоръчва се XFCE)
  • Потребителят xrdp добавен към групата ssl-cert — пропускането на това причинява TLS грешки
  • Wayland деактивиран при използване на GNOME (/etc/gdm3/custom.conf)
  • Правилата на защитната стена ограничават порт 3389 само до доверени IP адреси — никога не излагайте RDP на 0.0.0.0 на публичен сървър
  • Самоподписаният сертификат заменен с валиден сертификат, издаден от CA, за производствени внедрявания
  • fail2ban конфигуриран с XRDP клетка за смекчаване на атаки с груба сила
  • SSH тунелът разгледан като алтернатива на директното излагане на порт за среди с висока сигурност
  • Проверена защитна стена на ниво хипервайзор — групите за сигурност на доставчика на облак са независими от UFW
  • Лог файловете наблюдавани в /var/log/xrdp.log и /var/log/xrdp-sesman.log за грешки в сесията

Често задавани въпроси

Поддържа ли XRDP Ubuntu 22.04 с Wayland?

Не. XRDP изисква X11/Xorg сесия. Ubuntu 22.04 по подразбиране използва Wayland под GNOME. Трябва или да деактивирате Wayland в /etc/gdm3/custom.conf, или да използвате среда на работния плот, която по подразбиране използва Xorg, като XFCE или MATE.

Каква е разликата между типовете сесии Xvnc и Xorg в XRDP?

Бекендът Xvnc създава виртуален фреймбуфер, използвайки VNC вътрешно, което е съвместимо с повечето конфигурации, но има по-висок CPU разход. Бекендът Xorg използва драйвера xorgxrdp за директно Xorg рендиране, предлагайки по-добра производителност и поддръжка на хардуерно ускорение. Използвайте Xorg, когато е налично.

Могат ли множество потребители да се свързват към XRDP едновременно?

Да. XRDP създава отделна, изолирана X11 сесия за всеки удостоверен потребител. Сесиите са независими и не си пречат, което прави XRDP подходящ за многопотребителски отдалечен достъп на един сървър.

Безопасно ли е да се излага XRDP порт 3389 директно в интернет?

Не. RDP е един от най-силно атакуваните протоколи за атаки с груба сила и експлойти. Винаги ограничавайте порт 3389 до известни IP адреси чрез правила на защитната стена, използвайте fail2ban и обмислете тунелиране на XRDP през SSH за всяко внедряване, изложено в интернет.

Как да деинсталирам XRDP от Ubuntu 22.04?

Изпълнете sudo apt purge xrdp -y && sudo apt autoremove -y. Това премахва пакетите XRDP и техните зависимости. Също така изтрийте остатъчните конфигурационни файлове с sudo rm -rf /etc/xrdp и премахнете UFW правилото с sudo ufw delete allow 3389/tcp.

15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало