VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
A előző cikkben Megvizsgáltuk a VNC szerver indítását bármilyen típusú virtuális gépen. Ennek a megoldásnak számos hátránya van, legfőbb közülük a magas sávszélesség követelmény. Ma megpróbálunk csatlakozni egy Linux grafikus asztalhoz RDP (Remote Desktop Protocol) segítségével. A VNC rendszer pixeltömbök továbbításán alapul RFB (Remote Framebuffer) protokollon, míg az RDP képes bonyolultabb grafikai primitívek és magas szintű parancsok küldésére. Általában Windows távoli asztali szolgáltatások létrehozásához használják, de Linux szerverek is elérhetők.

Tartalomjegyzék:

Grafikus környezet telepítése
A szerver oroszosítása és szoftverinstalláció
RDP szerver telepítése és beállítása
Tűzfal beállítása
Csatlakozás az RDP szerverhez
Munkamenet-kezelő és felhasználói munkamenetek
Billentyűzetkiosztások váltása

Grafikus környezet telepítése

Egy Ubuntu Server 18.04 LTS virtuális gépet fogunk használni, két számítási maggal, négy gigabájt RAM-mal és húsz gigabájt (HDD) merevlemezzel. Gyengébb konfigurációk nem ideálisak grafikus asztalhoz, bár ez függ a végzett feladatoktól. Ne feledje, hogy használja a Habrahabr10 promóciós kódot, hogy 10% kedvezményt kapjon a rendelésnél.

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
Az asztali környezet telepítése az összes függőséggel a következő parancs futtatásával történik:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Mint az előző esetben, az XFCE-t választottuk, mert viszonylag alacsony számítási erőforrás igénye van.

A szerver oroszosítása és szoftverinstalláció

Gyakran a virtuális gépek csak angol nyelvű lokalizációval érkeznek. Az asztalon szükség lehet orosz lokalizációra is, amelyet könnyen beállíthatunk. Először telepítsük a rendszerprogramok fordításait:

sudo apt-get install language-pack-ru

Állítsuk be a lokalizációt:

sudo update-locale LANG=ru_RU.UTF-8

Ugyanezt az eredményt elérhetjük, ha kézzel módosítjuk a /etc/default/locale fájlt.

A GNOME és KDE lokalizálásához a repository-ban találhatók a language-pack-gnome-ru és language-pack-kde-ru csomagok – ezek szükségesek lesznek, ha ezekből a munkaasztal környezetekből használ programokat. Az XFCE fordításai az alkalmazásokkal együtt települnek. Továbbá, telepíthetünk szótárakat is:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

Ezenkívül bizonyos alkalmazásokhoz szükség lehet a fordítások telepítésére:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

A munkakörnyezet előkészítése ezzel véget ért, már csak az RDP szerver beállítása maradt hátra.

RDP szerver telepítése és beállítása

Az Ubuntu repóiban elérhető az ingyenesen terjeszthető Xrdp szerver, amelyet igénybe fogunk venni:

sudo apt-get install xrdp

Ha minden rendben ment, a szervernek automatikusan el kell indulnia:

sudo systemctl status xrdp

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
Az Xrdp szerver az xrdp felhasználói jogokkal indul, és alapértelmezés szerint az /etc/ssl/private/ssl-cert-snakeoil.key tanúsítványt használja, amelyet saját tanúsítványra cserélhetünk. A fájl olvasási jogainak beállításához hozzá kell adni a felhasználót az ssl-cert csoporthoz:

sudo adduser xrdp ssl-cert

Az alapértelmezett beállításokat az /etc/default/xrdp fájlban találja, míg a további konfigurációs fájlok az /etc/xrdp könyvtárban találhatók. A fő paraméterek a xrdp.ini fájlban találhatók, amelyet nem szükséges módosítani. A konfiguráció jól dokumentált, és megfelelõ kézikönyv is rendelkezésre áll:

man xrdp.ini
man xrdp

Csak a /etc/xrdp/startwm.sh szkriptet kell szerkeszteni, amely a felhasználói munkamenet inicializálásakor fut. Először készítünk egy biztonsági másolatot a disztribúcióban található szkriptről:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

Az XFCE munkafolyamatajának elindításához egy hasonló tartalmú szkriptre lesz szükség:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

Vegye figyelembe: a szkriptekben jobb, ha a végrehajtható fájlok teljes útvonalát megadja — ez jó szokás. Tegyük végrehajthatóvá a szkriptet, és ezzel az Xrdp szerver beállítását befejezettnek tekinthetjük:

sudo chmod 755 /etc/xrdp/startwm.sh

Újraindítjuk a szervert:

sudo systemctl restart xrdp

Tűzfal beállítása

Alapértelmezés szerint az Xrdp a 3389 TCP-portot figyeli minden interfészen. A virtuális szerver konfigurációjától függően szükség lehet a Netfilter tűzfal beállítására. Linuxon ezt általában az iptables segédprogrammal végzik, de Ubuntu esetén jobb az ufw használata. Ha az ügyfél IP-címe ismert, a beállítást a következő paranccsal végezheti el:

sudo ufw allow from IP_Address to any port 3389

Bármely IP címből érkező kapcsolatok engedélyezése a következőképpen lehetséges:

sudo ufw allow 3389

Az RDP protokoll támogatja a titkosítást, de az Xrdp szerver nyilvános hálózatokból történő elérése rossz ötlet. Ha az ügyfélnek nincs fix IP-címe, a biztonság érdekében a szervernek csak a localhost-on kell figyelnie. A hozzáférést jobb SSH alagúton keresztül megoldani, amely biztonságosan átirányítja a forgalmat az ügyfél számítógépéről. Hasonló megközelítést alkalmaztunk az előző cikkben a VNC szerver számára.

Csatlakozás az RDP szerverhez

A munkafolyamataj környezethez jobb egy külön nem privilegizált felhasználót létrehozni:

sudo adduser rdpuser

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
Adjuk hozzá a felhasználót a sudo csoporthoz, hogy el tudja látni az adminisztrációval kapcsolatos feladatokat. Ha nincs szükség erre, ez a lépés kihagyható:

sudo gpasswd -a rdpuser sudo

A szerverhez bármilyen RDP kliens, köztük a Windows távoli asztali szolgáltatásának beépített kliensével is csatlakozhatunk. Ha az Xrdp a külső interfészen hallgat, semmilyen további intézkedésre nincs szükség. Elég megadni a VPS kapcsolatbeállításainál az IP-címet, a felhasználónevet és a jelszót. A csatlakozás után a következő képet láthatjuk:

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
Az asztali környezet elsődleges beállítása után egy teljes értékű asztalt kapunk. Ahogy látja, nem fogyaszt olyan sok erőforrást, bár a továbbiakban minden az alkalmazásoktól függ.

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
Ha az Xrdp szerver csak localhostot hallgat, akkor a kliens számítógépén a forgalmat SSH alagútba kell csomagolni (a VPS-en futnia kell az sshd-nek). Windows alatt grafikus SSH klienst (például PuTTY) használhatunk, míg UNIX-rendszerekben az ssh segédprogramra van szükség:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

Az alagút inicializálása után az RDP kliens már nem a távoli szerverhez, hanem a helyi hoszthoz fog csatlakozni.

Mobil eszközökkel nehezebb a helyzet: az alagutat létre tudó SSH klienseket meg kell vásárolni, ráadásul az iOS és iPadOS alatt a háttérben futó harmadik féltől származó alkalmazások működése nehézkes a túl jó energiafelhasználás-optimalizálás miatt. Az iPhone és az iPad esetén külön alkalmazásban alagutat létrehozni nem lehet — szükség van egy kombinált alkalmazásra, amely saját maga képes RDP kapcsolatot létesíteni SSH-n keresztül. Például ilyen a Remoter Pro.

Munkamenet-kezelő és felhasználói munkamenetek

A többfelhasználós munka lehetősége közvetlenül az Xrdp szerverben valósul meg, és nem igényel további beállítást. A szolgáltatás elindítása után a systemd alatt egy folyamat démon módban fut, hallgat a 3389-es porton, és localhoston keresztül interakcióba lép a munkamenetkezelővel.

ps aux |grep xrdp

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
A munkamenetkezelő általában nem látható a felhasználók számára, mert a kliens beállításaiban megadott bejelentkezési név és jelszó automatikusan átadásra kerül neki. Ha ez nem történt meg, vagy ha hitelesítési hiba lépett fel, akkor a munkaasztal helyett egy interaktív ablak jelenik meg a bejelentkezéshez.

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04
A munkamenetkezelő automatikus indítása az /etc/default/xrdp fájlban van megadva, a konfiguráció pedig az /etc/xrdp/sesman.ini fájlban található. Alapértelmezetten így néz ki:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; Amikor AlwaysGroupCheck=false, a hozzáférés engedélyezve lesz
; ha a TerminalServerUsers csoport nincs meghatározva.
AlwaysGroupCheck=false

[Sessions]

Itt semmit sem kell változtatni, csak le kell tiltani a root jogokkal való bejelentkezést (AllowRootLogin=false). Minden egyes rendszeren belépő felhasználónak külön xrdp folyamatot indítanak: ha az ülést megszakítják a session befejezése nélkül, a felhasználói folyamatok alapértelmezetten folytatódnak, és újra csatlakozhatunk az üléshez. A beállításokat a fájlban lehet módosítani /etc/xrdp/sesman.ini (Sessions szekció).

Billentyűzetkiosztások váltása

A kétoldalas vágólappal általában nincsenek problémák, de a orosz billentyűzetkiosztásnál egy kicsit pepecselni kell (orosz lokalizációnak már telepítve kell lennie). Szerkesztjük az Xrdp szerver billentyűzet beállításait:

sudo nano /etc/xrdp/xrdp_keyboard.ini

A konfigurációs fájl végéhez a következő sorokat kell hozzáadni:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

Hátra van még a fájl mentése és az Xrdp újraindítása:

sudo systemctl restart xrdp

Ahogy látja, RDP szerver indítása Linux VPS-en nem nehéz, és előző cikkben már megtettük a VNC beállítását. Ezen technológiák mellett van még egy érdekes alternatíva: a NX 3 módosított protokollt használó X2Go rendszer. Ezt a következő publikációban megvizsgáljuk.

VPS on Linux with a graphical interface: running an RDP server on Ubuntu 18.04

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster