Андрей Смирнов
Время чтения: ~14 мин.
Просмотров: 14

Как подключиться к Ubuntu по RDP

Особенно нетерпеливых отсылаю сразу в конец статьи где будет ссылка на готовый .deb-пакет для установки. А для всех остальных…

Что это такое и для чего это нужно

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

История номер один. (основано на реальных событиях)

Предположим бухгалтеру, в конце отчетного периода, когда все «на ушах», на эл.почту приходит страшное письмо от «Налоговой Полиции» в котором говорится о том, что её фирма попала под жуткую проверку и ей следует немедленно ознакомиться с официальным документом который находится в прикреплённом к письму файле. В панике бухгалтер пытается открыть прикреплённый файл и… все компьютеры фирмы подключенные в данный момент к внутренней локальной сети получают порцию вируса щифровальщика который парализует работу фирмы не не один день. В случае с реализацией доступа через терминал на всех! компьютерах блокируется прямой доступ в интернет. Если работнику понадобилось в сеть для серфинга (почта, скайп, мессенджер) то он просто щелкает по иконке на рабочем столе и попадает на альтернативный рабочий стол где он может делать всё что угодно. В случае заражения при просмотре почты или любым другим способом вирус попадает на одинокую локальную машину (терминальный сеанс) которая не имеет доступа к сети предприятия и другим компьютерам. Так же в данном сеансе не хранятся важные документы и бухгалтерские базы данных. Поэтому ущерба, даже при полном удалении информации внутри сеанса, не будет абсолютно ни какого. Так же терминальную сессию можно просто свернуть в трей и открывать по мере необходимости, если пикнуло сообщение от мессенджера или поступил скайп звонок.

История номер два. (основано на реальных событиях)

Предположим один из сотрудников принес на флешке взломанную лицензионную программу которую поставил к себе на компьютер, в данном случае не рассматриваем доменные структуры AD, речь идет о небольших фирмах где не содержат штат сетевиков. После установки данной программы она спокойно может пожаловаться разработчикам через интернет что на компьютере по такому то IP кто то поставил взломанную версию и спокойно пользуется. Дальше дело техники. Причем разборки могут быть очень серьёзные. При реализации варианта терминал сервера данный вариант так же не проходит так как у локального компьютера просто нет доступа к сети и любая программа шпион не сможет вынести сор из избы.

Предисловие

Данное руководство, в первую очередь, ориентировано на начинающих системных администраторов желающих разобраться в сути вопроса. Так что для продвинутых в тексте может оказаться много лишнего. В руководстве постараюсь максимально подробно описать процесс настройки linux терминального сервера использующегося для безопасного интернет серфинга и описать решение известных проблем. Для того чтобы все прошло успешно настоятельно советую, для начала, использовать те же самые версии ПО что и в данном описании. Потом, на основе полученного опыта, вы сможете реализовать данный проект на удобном Вам оборудовании и ПО. Сборка и тестирование производилось на виртуальной машине от virtualbox. При использовании чистого железа так же могут возникнуть проблемы с настройками драйверов. Из программного обеспечения были использованы Ubuntu 16.04 LTS server / x11RDP 7.6 / xRPD 0.9.2. На других версиях данное решение не тестировалось и не проверялось.

XRDP

XRDP является специальным прокси-сервером который прослушивает RDP port 3389 на предмет внешних запросов. Принимает на него подключения и далее, в зависимости от настроек, переадресовывает их на внутренние порты OS. Для установки скомпилируем необходимые пакеты:

sudo apt install -y git autoconf libtool pkg-config libxrandr-dev nasm libssl-dev libpam0g-dev  libxfixes-dev  libx11-dev  libxfixes-dev libssl-dev libxrandr-dev libjpeg-dev flex  bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev make libfuse-dev

По умолчанию в репозиториях UBUNTU 16.04 находится пакет xRDP v0.6.0 в котором я не смог найти решения для рализации передачи звука. Поэтому собирать новую версию xRDP будем из исходников. На многих сайтах советуют клонировать свежую версию при помощи git:

git clone git://github.com/FreeRDP/xrdp.git

Но, в данном случае, возникает риск того что, на момент тестирования, вы можете столкнуться с совершенно новой версией имеющей значительные отличия от v0.9.2 и что то может пойти не так. Поэтому скачиваем и распаковываем фиксированный пакет XRDP v0.9.2 с сайта разработчиков.

cd~  wget https://github.com/neutrinolabs/xrdp/archive/v0.9.2.zip unzip v0.9.2 mv xrdp-0.9.2 xrdp 

Перейдем в каталог с XRPD и начнем компиляцию:

cd ~/xrdp ./bootstrap

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

cat ~/xrdp/sesman/chansrv/pulse/pulse-notes.ubuntu.txt

Установим библиотеки необходимые для переадресации звука.

sudo apt-get install -y libjson0-dev libsndfile1-dev

Добавляем ключ активирующий звук —enable-load_pulse_modules при конфигурации пакета, собираем и устанавливаем.

./configure --enable-load_pulse_modules --enable-jpeg --enable-fuse --disable-ipv6 make sudo make install 

Теперь скопируем ключ защиты. В данном файле содержится пара ключей RSA, используемая для аутентификации удаленного клиента. Открытый ключ является самозаверяющим. Если этого не сделать то при подключении получим ошибку протокола RDP.

sudo mkdir /usr/share/doc/xrdp sudo cp /etc/xrdp/rsakeys.ini /usr/share/doc/xrdp/rsakeys.ini

Добавляем XRDP в автозагрузку. Для автозагрузки будем использовать systemd:

sudo sed -i.bak 's/EnvironmentFile/#EnvironmentFile/g' /lib/systemd/system/xrdp.service sudo sed -i.bak 's/sbin/xrdp/local/sbin/xrdp/g' /lib/systemd/system/xrdp.service sudo sed -i.bak 's/EnvironmentFile/#EnvironmentFile/g' /lib/systemd/system/xrdp-sesman.service sudo sed -i.bak 's/sbin/xrdp/local/sbin/xrdp/g' /lib/systemd/system/xrdp-sesman.service sudo systemctl daemon-reload sudo systemctl enable xrdp.service 

Перезагружаемся.

sudo reboot

Проверим прошла ли установка:

xrdp -v

$ xrdp: A Remote Desktop Protocol server. Copyright © Jay Sorg 2004-2014 See www.xrdp.org for more information. Version 0.9.2

Если все сделано верно то теперь можно попробовать подключиться к серверу при помощи любого RDP клиента с другого компьютера. Или установить на этой же тестовой машине клиент freerdp:

sudo apt install -y freerdp-x11

И подключится локально внутри системы.

xfreerdp /v:127.0.0.1

Дальше стартовой заставки дело не пойдет потому что у нас пока не установлена серверная часть ПО которой прокси сервер XRDP был бы должен передать управление.

x11RDP

В качестве серверной части могут быть использованы серверные модули поддерживающие разные протоколы передачи данных. В данном варианте будем использовать x11RDP v7.6.

Небольшое отступление

Все дело в том, что установленный нами ранее прокси XRDP 0.9.2 не может, без доработок, перебрасывать подключения к предыдущей версии сервера x11RDP v7.1 на котором, в свою очередь, отсутствует известная проблема с переключением раскладок клавиатуры ru/en как при создании нового сеанса так и при переподключении к старой сессии. А при использовании старой версии прокси XRDP 0.6.0 с которой работает сервер x11RDP v7.1 мы не сможем осуществить переброс звука так как XRDP 0.6.0 не поддерживает ключ —enable-load_pulse_modules. Для установки x11RDP v 7.6 вернемся в каталог:

cd ~/xrdp/xorg/X11R7.6

Создадим каталог для установки пакета и произведем сборку.

sudo mkdir /opt/X11rdp time sudo ./buildx.sh /opt/X11rdp 

Сборка происходит достаточно долго 15-30 мин. Команда time позволит нам увидеть, по окончании процесса процесса, сколько было затрачено времени. Создадим симлики:

sudo ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp sudo ln -s /usr/share/fonts/X11 /opt/X11rdp/lib/X11/fonts 

Теперь у нас есть и RDP прокси и RDP сервер которому прокси передаст управление. Но нет графического приложения которое RDP сервер сможет вывести на экран. Для дальнейшего тестирования, чтобы убедиться что все установки прошли успешно, установим графический эмулятор терминала xterm.

sudo apt -y install xterm

И попробуем подключиться к серверу со стороны, или локально если ранее установили freerdp.

xfreerdp /v:127.0.0.1

Теперь из меню необходимо выбрать x11RDP чтобы указать прокси какому именно серверу должно быть передано управление и ввести логин и пароль к ubuntu серверу. Если все верно то на экране мы увидим графический интерфейс терминала xterm.

Настройка языковой консоли и режима переключения языков

Почти все основные настройки клавиатуры в ubuntu осуществляются при прмощи пакета setxkbmap. Для начала закроем терминальную сессию и вернемся в консоль нашего ubuntu сервера посмотрим что творится с клавиатурой.

setxkbmap -print –verbose 

Теперь подключимся к серверу терминалов и в терминале xterm выполним ту же команду:

setxkbmap -print –verbose

Обратим внимание на несоответствие в показаниях. На нашем ubuntu сервере все нормально:

symbols: pc+us+ru:2+group(alt_shift_toggle)

Есть русская консоль и определены клавиши переключения языка alt_shift. На сервере терминалов противоположность:

symbols: pc+us+inet(pc105)

Есть только английский язык и клавиши переключения языка не определены. Есть еще одна странность. Локально, на сервере ubuntu, модель клавиатуры определилась как pc104:

geometry: pc(pc104)

А на сервере терминалов как pc105:

geometry: pc(pc105)

Если вы решили производить тестирование не на виртуальной машине, а на чистом железе то результат может отличаться в зависимости от типа использованного оборудования. Вернемся к ubuntu серверу и посмотрим что установлено в конфигурационных файлах системы по умолчанию

cat /etc/default/keyboard

Установим hwinfo (сборщик информации об аппаратной части системы) и посмотрим информацию о железе:

sudo apt install -y hwinfo sudo hwinfo | grep XkbModel 

$ XkbModel: pc104

В итоге аппаратно модель клавиатуры, в нашем случае определяется как pc104, в файлах конфигурации системы прописано обращение к устройству pc105. На локальном сервере определяется pc104, на сервере терминалов pc105. Из за данного несоответствия, в частности, возникает несколько глюков. Многие пишут что не могут справиться с настройкой локали на терминальном сервере. У некоторых пропадает русификация после переподключении к отвалившейся сессии и те пе. Откроем в любом текстовом редакторе (я использую в примере редактор nano) файл конфигурации системы и исправим тип клавиатуры по умолчанию в соответствии с данными полученными от hwinfo:

sudo nano /etc/default/keyboard

XKBMODEL=«pc104» Файл клавиатурных настроек программы XRDP 0.9.2 находится в файле /etc/xrdp/xrdp_keyboard.ini. Эти данные прокси передает xRDP серверу как данные клиента который производит подключение. Откроем его и добавим в конец данного файла блок поддержки русской локали. → Источник Предварительно исправив модель клавиатуры на верную model=pc104 (в оригнальной версии установлена pc105):

sudo nano /etc/xrdp/xrdp_keyboard.ini 

Добавляем в конец файла: Перезагружаемся. Подключаемся к терминальному серверу. Проверяем клавиатурные настройки:

setxkbmap -print -verbose

Все в порядке, клавиатура определяется верно:geometry: pc(pc104) и появился русский язык с переключением по alt_shift. Закрываем сеанс оставляя его работать в фоне и переподключаемся к нему же снова чтобы проверить что не возникает известной проблемы при которой локаль пропадает при переподключении к уже открытому ранее сеансу.

ЗВУК

В ubuntu старше 10.10, по умолчанию, за вывод звука отвечает сервер pulseaudio. В десктопных дистрибутивах он уже установлен. В серверных нет. Поэтому установим его.

sudo apt install -y pulseaudio

Посмотрим и запишем номер версии пакета который по умолчанию установился в нашу систему:

pulseaudio –version

$ pulseaudio 8.0

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

cat ~/xrdp/sesman/chansrv/pulse/pulse-notes.ubuntu.txt

Для начала скачаем исходники pulseaudio. Сделать это можно двумя способами. 1. Скачать общую версию с сайта разработчиков (freedesktop.org/software/pulseaudio/releases/) скачивать надо именно ту версию которую мы определили ранее. В нашем случае pulseaudio 8.0 2. Более правильно — подключить deb-src репозитории системы и получить исходники которые использовали авторы данного ubuntu дистрибутива. По умолчаню ссылки на исходники в ubuntu отключены. Для подключения отредактируем файл списка репозиториев:

sudo nano /etc/apt/sources.list

Необходимо удалить значки # перед всеми списками deb-src репозиториев. Было:

deb ru.archive.ubuntu.com/ubuntu xenial universe #deb-src ru.archive.ubuntu.com/ubuntu xenial universe deb ru.archive.ubuntu.com/ubuntu xenial-updates universe #deb-src ru.archive.ubuntu.com/ubuntu xenial-updates universe

Стало:

deb ru.archive.ubuntu.com/ubuntu xenial universe deb-src ru.archive.ubuntu.com/ubuntu xenial universe deb ru.archive.ubuntu.com/ubuntu xenial-updates universe deb-src ru.archive.ubuntu.com/ubuntu xenial-updates universe

В противном случае получим ошибку:

$ E: Вы должны заполнить sources.list, поместив туда URI источников пакетов

Скачиваем исходники:

cd ~ sudo apt update apt-get source pulseaudio sudo apt-get build-dep pulseaudio cd ~/pulse* time dpkg-buildpackage -rfakeroot -uc -b 

Переходим в установочный каталог XRDP:

cd ~/xrdp/sesman/chansrv/pulse/

Исправляем make файл.

sudo nano Makefile

В строчке:

PULSE_DIR = /home/lk/pulseaudio-1.1

Меняем путь на наш каталог с библиотеками pulseaudio.Причем, обратите внимание, конструкции типа ~/pulseaudio* в данном случае не проходят. Необходимо точно прописать адрес каталога.

PULSE_DIR = /home/admin/pulseaudio-8.0

Замените admin на имя пользователя в Вашей системе. Сохраняем исправленный файл и делаем:

sudo make

Если все выполнено верно в каталоге будут скомпилированы 2 новых библиотекиmodule-xrdp-sink.so и module-xrdp-source.so. Осталось только скопировать их в рабочий каталог с библиотеками сервера pulseaudio:

sudo chmod 644 *.so sudo cp *.so /usr/lib/pulse*/modules

После перезапуска звук будет активирован. Осталось установить любую удобную графическую оболочку. Для терминального сервера желательно что то не ресурсоемкое. XFCE Минимальный набор элементов:

sudo apt-get install xfce4

Полный набор элементов:

sudo apt-get install xubuntu-desktop 

LXDE Минимальный набор элементов:

sudo apt-get install lxde-core

Полный набор элементов:

sudo apt-get install lxde

В зависимости от версии установленной графической оболочки, для её запуска возможно понадобится настроить файл .xsession Для LXDE

echo lxsession > ~/.xsession

Для XFCE

echo xfce4-session > ~/.xsession

Готовый пакет для установки

github.com/suminona/xrdp-ru-audio в который включены: XRDP v0.9.2 + скомпилированные библиотеки pulseaudio 8.0 + исправленный keyboard.ini файл для поддержки русификации. Те же кто не хочет сам собирать бакенд x11RDP v7.6 по этой же ссылке могут скачать готовый deb пакет бакенда xorg v.0.2.0. Порядок установки для совсем ленивых

sudo apt-get -y install pulseaudio sudo dpkg -i xrdp-v0.9.2-rus-audio.deb sudo dpkg -i xorgxrdp-0.2.0.deb sudo apt install -y xfce4 chromium-browser sudo reboot

Повторюсь что пакеты собирались практически на коленках и работа протестирована только на ubuntu 16.04 server. Работоспособность данных .deb-пакетов на других системах не гарантирована.

В инструкции описано как настроить сервер xRDP для подключения к Ubuntu 18.04 с легковесным окружением Xfce или MATE по протоколу RDP. Это может быть очень удобно при соединении из операционных систем семейства Windows без использования специальных инструментов.

Что такое xRDP?

xRDP — это бесплатная реализация RDP (протокола удаленного рабочего стола) Microsoft с открытым исходным кодом, которая позволяет операционным системам, отличным от Microsoft Windows (таким как Linux и BSD), предоставлять полностью функциональный RDP-совместимый удаленный рабочий стол.

Установка и настройка

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

sudo apt-get update

Установите и включите утилиту xRDP:

sudo apt-get install xrdp sudo systemctl enable xrdp

Установите окружение на выбор, xfce или mate, и разрешите xRDP его использовать: xfce:

sudo apt-get install xfce4 xfce4-terminal sudo sed -i.bak '/fi/a #xrdp multiple users configuration n xfce-session n' /etc/xrdp/startwm.sh

mate:

sudo apt-get install mate-core mate-desktop-environment mate-notification-daemon sudo sed -i.bak '/fi/a #xrdp multiple users configuration n mate-session n' /etc/xrdp/startwm.sh

Откройте порт RDP для возможности удаленного подключения:

sudo ufw allow 3389/tcp

Перезагрузите xRDP сервер, чтобы изменения вступили в силу:

sudo /etc/init.d/xrdp restart

Подключение к рабочему столу

Для подключения откройте приложение Windows Подключение к удаленному рабочему столу. Введите IP-адрес сервера и имя пользователя и нажмите Подключить:

1.png

При подключении появится предупреждение безопасности, это связано с тем, что происходит соединение с ОС семейства Linux. Нажмите Да:

2.png

В открывшемся окне в качестве сессии выборе Xorg, введите пароль для пользователя, нажмите OK:

3.png

В результате произойдет подключение к рабочему столу.

Рабочий стол окружения Xfce:

4.png

Десктоп с окружением MATE:

5.png

Облачные VPS/VDS

Создайте сервер всего за 1 минуту!

от8 руб/месяц

Если по какой-либо причине тебе потребовалось получить доступ к удаленной машине с Ubuntu именно через RDP, то не отчаивайся — все возможно! Для этого существует инструмент под названием xrdp. В данной инструкции я расскажу, как можно подключиться к Ubuntu через RDP из Windows.

Установка необходимых пакетов

Нам потребуется установить в систему два пакета — xrdp и xorgxrdp, но второй итак находится в зависимостях первого, поэтому достаточно выполнить одну команду:

Настройка xrdp

Также в домашнем каталоге пользователя, от имени которого будет происходить вход в систему должен быть расположен файл .xsession в котором указана команда запуска оболочки, в нашем примере это startxfce4 (для запуска xfce). После создания этого файла выполни команду sudo systemctl restart xrdp для обновления конфигурации xrdp (если он уже был запущен).

Запуск xrdp

Подключение из Windows

Открываем меню подключения к удаленному рабочему столу. Универсальный способ сделать это — через «Выполнить» — нажимаем Win+R и в открывшемся окне набираем mstsc:

В открывшемся окне указываем IP адрес машины с Ubuntu и жмем «Подключить»:

В появившемся приглашении указываем данные учетной записи в Ubuntu от имени которой будет происходить подключение:

И, после нажатия «Ok», попадаем в систему:

В данном примере была использована Ubuntu 18.04 и Windows 10.

Используемые источники:

  • https://habr.com/post/329066/
  • https://serverspace.by/support/help/kak-nastroit-xrdp-server-na-ubuntu-18-04/
  • https://maddot.ru/kak-podklyuchitsya-k-ubuntu-po-rdp.html

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации