VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
In vorig artikel We hebben de opzet van een VNC-server op een virtuele machine van elk type besproken. Deze optie heeft veel nadelen, waarvan de belangrijkste zijn dat de eisen aan de bandbreedte van gegevensoverdracht hoog zijn. Vandaag zullen we proberen verbinding te maken met de grafische desktop op Linux via RDP (Remote Desktop Protocol). Het VNC-systeem is gebaseerd op het verzenden van pixelarrays via het RFB-protocol (Remote Framebuffer), terwijl RDP complexere grafische primitieve en high-level opdrachten kan verzenden. Het wordt meestal gebruikt voor het opzetten van remote desktop-diensten in Windows, maar er zijn ook servers voor Linux beschikbaar.

Inhoudsopgave:

Installatie van de grafische omgeving
Russificatie van de server en installatie van software
Installatie en configuratie van de RDP-server
Configuratie van de firewall
Verbinden met de RDP-server
Sessiebeheerder en gebruikerssessies
Gesprekken van de toetsenbordindelingen wisselen

Installatie van de grafische omgeving

We nemen een virtuele machine met Ubuntu Server 18.04 LTS met twee rekenkernen, vier gigabyte RAM en een harde schijf (HDD) van twintig gigabyte. Een zwakkere configuratie is minder geschikt voor een grafische desktop, hoewel dit afhangt van de taken die moeten worden uitgevoerd. Vergeet niet de kortingscode Habrahabr10 te gebruiken voor 10% korting op je bestelling.

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
De installatie van de desktopomgeving met alle afhankelijkheden wordt uitgevoerd met de volgende opdracht:

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

Net als in het vorige geval hebben we XFCE gekozen vanwege de relatief lage eisen aan de rekencapaciteit.

Russificatie van de server en installatie van software

Vaak worden virtuele machines alleen met een Engelse localisatie uitgerold. Op de desktop kan een Russische nodig zijn, welke eenvoudig is in te stellen. Laten we eerst de vertalingen voor systeemprogramma's installeren:

sudo apt-get install language-pack-ru

Laten we de localisatie instellen:

sudo update-locale LANG=ru_RU.UTF-8

Hetzelfde effect kan worden bereikt door handmatig het bestand /etc/default/locale te bewerken.

Voor de localisatie van GNOME en KDE zijn er pakketten language-pack-gnome-ru en language-pack-kde-ru in de repository - deze zijn nodig als je programma's uit deze desktopomgevingen gebruikt. In XFCE worden vertalingen samen met de applicaties geïnstalleerd. Vervolgens kunnen we woordenboeken installeren:

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

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

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

Bovendien kan de installatie van vertalingen nodig zijn voor sommige applicatieprogramma's:

# Браузер 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

De voorbereiding van de desktopomgeving is afgerond, nu moet de RDP-server worden geconfigureerd.

Installatie en configuratie van de RDP-server

In de Ubuntu-repositories is er een gratis beschikbare Xrdp-server die we zullen gebruiken:

sudo apt-get install xrdp

Als alles goed is gegaan, moet de server automatisch opstarten:

sudo systemctl status xrdp

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
De Xrdp-server draait onder de gebruiker xrdp en gebruikt standaard het certificaat /etc/ssl/private/ssl-cert-snakeoil.key, dat je kunt vervangen door een eigen certificaat. Om het bestand leesbaar te maken, moet de gebruiker aan de groep ssl-cert worden toegevoegd:

sudo adduser xrdp ssl-cert

De standaardinstellingen zijn te vinden in het bestand /etc/default/xrdp, terwijl alle andere configuratiebestanden van de server zich in de map /etc/xrdp bevinden. De belangrijkste parameters bevinden zich in het bestand xrdp.ini, dat je het beste niet kunt wijzigen. De configuratie is goed gedocumenteerd en er zijn bijpassende manpages beschikbaar:

man xrdp.ini
man xrdp

Je moet alleen het script /etc/xrdp/startwm.sh bewerken, dat wordt uitgevoerd bij het initialiseren van de gebruikerssessie. Maak eerst een back-up van het distributiescript:

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

Om de desktopomgeving XFCE te starten, heb je een script nodig dat ongeveer de volgende inhoud heeft:

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

Let op: in scripts is het beter om het volledige pad naar uitvoerbare bestanden op te geven — dit is een goede gewoonte. Maak het script uitvoerbaar en met deze stap is de configuratie van de Xrdp-server voltooid:

sudo chmod 755 /etc/xrdp/startwm.sh

Herstart de server:

sudo systemctl restart xrdp

Configuratie van de firewall

Standaard luistert Xrdp op TCP-poort 3389 op alle interfaces. Afhankelijk van de configuratie van de virtuele server kan het nodig zijn om de netfilter firewall in te stellen. In Linux wordt dit meestal gedaan met behulp van de iptables-tool, maar in Ubuntu is het beter om ufw te gebruiken. Wanneer het IP-adres van de client bekend is, kan de configuratie met de volgende opdracht worden uitgevoerd:

sudo ufw allow from IP_Address to any port 3389

Verbinden vanaf een willekeurig IP kan als volgt worden toegestaan:

sudo ufw allow 3389

Het RDP-protocol ondersteunt encryptie, maar toegang tot de Xrdp-server vanuit openbare netwerken open te stellen is geen goed idee. Als de client geen vast IP heeft, moet de server alleen op localhost luisteren voor een hoger beveiligingsniveau. Het is beter om toegang via een SSH-tunnel in te stellen, die het verkeer veilig van de computer van de client doorverwijst. Een soortgelijke aanpak hebben we gebruikt in het vorige artikel voor de VNC-server.

Verbinden met de RDP-server

Voor een desktopomgeving is het beter om een aparte niet-beheerdersgebruiker aan te maken:

sudo adduser rdpuser

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
Voeg de gebruiker toe aan de sudo-groep, zodat hij administratieve taken kan uitvoeren. Als dit niet nodig is, kan deze stap worden overgeslagen:

sudo gpasswd -a rdpuser sudo

Je kunt verbinding maken met de server met behulp van elke RDP-client, inclusief de ingebouwde client van de Windows Remote Desktop-service. Als Xrdp naar de externe interface luistert, zijn er geen extra stappen nodig. Het is voldoende om het IP-adres van de VPS, de gebruikersnaam en het wachtwoord in de verbindingsinstellingen op te geven. Na het verbinden krijgen we ongeveer deze weergave:

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
Na de initiële configuratie van de desktopomgeving krijgen we een volledige desktop. Zoals je ziet, verbruikt hij niet veel middelen, hoewel alles verder afhangt van de gebruikte applicaties.

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
Als de Xrdp-server alleen naar localhost luistert, moet het verkeer op de clientcomputer in een SSH-tunnel worden verpakt (sshd moet op de VPS draaien). Onder Windows kan een grafische SSH-client worden gebruikt (bijvoorbeeld PuTTY), en in UNIX-systemen is de ssh-tool nodig:

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

Na het initialiseren van de tunnel maakt de RDP-client verbinding met de lokale host in plaats van met de externe server.

Het is lastiger met mobiele apparaten: clients die in staat zijn om een tunnel op te zetten, moeten worden aangeschaft, bovendien is het moeilijk om op iOS en iPadOS achtergrondwerk voor externe toepassingen uit te voeren vanwege de goede optimalisatie van het energieverbruik. Op de iPhone en iPad kan een tunnel niet in een aparte applicatie worden opgezet — er is een alles-in-één-app nodig die zelf RDP-verbindingen via SSH kan maken. Bijvoorbeeld, zoals Remoter Pro.

Sessiebeheerder en gebruikerssessies

De mogelijkheid voor multigebruikersamenwerking is direct in de Xrdp-server geïmplementeerd en vereist geen extra configuratie. Na het starten van de service via systemd draait één proces in daemonmodus, luistert naar poort 3389 en communiceert via localhost met de sessiebeheerder.

ps aux |grep xrdp

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten

sudo netstat -ap |grep xrdp

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
De sessiebeheerder is voor gebruikers meestal niet zichtbaar, omdat de in de clientinstellingen opgegeven gebruikersnaam en het wachtwoord automatisch aan hem worden doorgegeven. Als dit niet gebeurde of er een fout optrad bij de authenticatie, verschijnt in plaats van de desktop een interactief inlogvenster.

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten
De automatische start van de sessiemanager staat in het bestand /etc/default/xrdp, en de configuratie wordt opgeslagen in /etc/xrdp/sesman.ini. Standaard ziet deze er ongeveer zo uit:

[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
; Wanneer AlwaysGroupCheck=false is, wordt toegang toegestaan
; als de groep TerminalServerUsers niet is gedefinieerd.
AlwaysGroupCheck=false

[Sessions]

Hier hoeft niets te worden veranderd, behalve het verbieden van inloggen met rootrechten (AllowRootLogin=false). Voor elke gebruiker die zich in het systeem authenticiseert, wordt een aparte xrdp-proces gestart: als je de sessie loskoppelt zonder te beëindigen, blijven de gebruikersprocessen standaard werken en kan opnieuw verbinding worden gemaakt met de sessie. De instellingen kunnen worden gewijzigd in het bestand /etc/xrdp/sesman.ini (sectie [Sessions]).

Gesprekken van de toetsenbordindelingen wisselen

Met een bidirectionele klembord werkt meestal prima, maar met de Russische toetsenbordindeling moet je wat spelen (de Russische locale moet al geïnstalleerd). We zullen de toetsenbordinstellingen van de Xrdp-server bewerken:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Aan het einde van het configuratiesbestand moeten de volgende regels worden toegevoegd:

[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

Sla het bestand op en herstart Xrdp:

sudo systemctl restart xrdp

Zoals je ziet, is het eenvoudig om een RDP-server op een Linux VPS in te stellen, en in vorig artikel hebben we al de configuratie van VNC behandeld. Naast deze technologieën is er nog een interessante optie: het systeem X2Go, dat een gemodificeerde NX 3-protocol gebruikt. Hierover zullen we in de volgende publicatie meer bespreken.

VPS op Linux met grafische interface: RDP-server op Ubuntu 18.04 opzetten

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster