Как установить и настроить 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 (подключаемые модули аутентификации) и запускает сеанс 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/RFB | Протокол NX | Проприетарный |
| Нативный клиент Windows | Да (встроенный MSTSC) | Нет (требуется клиент) | Нет (требуется клиент) | Нет (требуется клиент) |
| Шифрование TLS | Да (нативное) | Опционально (через stunnel) | Да | Да |
| Поддержка нескольких сеансов | Да | Нет (один дисплей) | Да | Да |
| Совместное использование буфера обмена | Да | Да | Да | Да |
| Перенаправление звука | Да (через PulseAudio) | Ограниченное | Да | Да |
| Производительность по WAN | Хорошая | Плохая | Отличная | Хорошая |
| Открытый исходный код | Да (Apache 2.0) | Да | Частично | Нет |
| Порт | 3389 | 5900 | 4000 | 5938 |
Для команд, уже использующих инфраструктуру 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 или физическом сервере со стабильным интернет-соединением.
Шаг 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. Для производственных сред или любого сервера, доступного из интернета, замените его действительным сертификатом от доверенного центра сертификации. Если ваш сервер имеет публичный домен, вы можете использовать сертификат от вашего провайдера 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Если вы настраиваете это для нескольких пользователей на выделенном сервере, автоматизируйте этот шаг с помощью цикла оболочки или инструмента управления конфигурацией, такого как 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
- Нажмите
Win + R, введитеmstscи нажмите Enter, чтобы открыть подключение к удалённому рабочему столу. - В поле Компьютер введите IP-адрес вашего сервера Ubuntu (например,
203.0.113.45). - Нажмите Подключить.
- На экране входа XRDP выберите тип сеанса (обычно
XvncилиXorg), введите имя пользователя и пароль Ubuntu и нажмите OK.
Из Linux (Remmina)
- Откройте Remmina и создайте новый профиль подключения.
- Установите протокол RDP.
- Введите IP-адрес сервера, имя пользователя и пароль.
- Установите глубину цвета True color (32 bpp) для наилучшего качества изображения.
- Подключитесь.
Из 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: Удалите файлы
/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/ в домашнем каталоге пользователя.
Включение перенаправления звука
Установите модуль RDP для PulseAudio:
sudo apt install pulseaudio-module-xrdp -yВыйдите из системы и подключитесь снова. Звуковой вывод с удалённого рабочего стола будет перенаправлен на динамики вашего локального клиента.
Одновременные сеансы нескольких пользователей
XRDP поддерживает несколько одновременных сеансов из коробки. Каждый аутентифицированный пользователь получает изолированный сеанс X11. Для проверки активных сеансов:
sudo xrdp-seslistДля сред с большим количеством одновременных пользователей — таких как рабочие станции разработчиков или учебные среды — выделенный сервер обеспечивает необходимый запас CPU и RAM для поддержания нескольких графических сеансов без конкуренции.
Ключевые выводы и контрольный список решений
Перед развёртыванием XRDP в производственной среде проверьте каждый из следующих пунктов:
- Среда рабочего стола установлена и
~/.xsessionнастроен для каждого пользователя (рекомендуется XFCE) - Пользователь
xrdpдобавлен в группуssl-cert— пропуск этого шага вызывает ошибки TLS - Wayland отключён при использовании GNOME (
/etc/gdm3/custom.conf) - Правила брандмауэра ограничивают порт 3389 только доверенными IP-адресами — никогда не открывайте RDP на 0.0.0.0 на публичном сервере
- Самоподписанный сертификат заменён действительным сертификатом, выданным центром сертификации, для производственных развёртываний
- 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.
