VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
In articolo precedente Abbiamo analizzato l'avvio di un server VNC su una macchina virtuale di qualsiasi tipo. Questa soluzione ha molti svantaggi, il principale dei quali è l'elevata richiesta di larghezza di banda dei canali di trasmissione dei dati. Oggi proveremo a connetterci a un desktop grafico su Linux tramite RDP (Remote Desktop Protocol). Il sistema VNC si basa sulla trasmissione di array di pixel tramite il protocollo RFB (Remote Framebuffer), mentre RDP consente di inviare primitivi grafici più complessi e comandi di alto livello. Di solito viene utilizzato per organizzare servizi di desktop remoto in Windows, ma sono disponibili anche server per Linux.

Contenuto:

Installazione dell'ambiente grafico
Localizzazione del server e installazione del software
Installazione e configurazione del server RDP
Configurazione del firewall
Connessione al server RDP
Gestore delle sessioni e sessioni utenti
Cambio delle disposizioni della tastiera

Installazione dell'ambiente grafico

Utilizzeremo una macchina virtuale con Ubuntu Server 18.04 LTS con due core CPU, quattro gigabyte di RAM e un disco rigido (HDD) da venti gigabyte. Una configurazione più debole è poco adatta per un desktop grafico, anche se dipende dai compiti da svolgere. Non dimenticate di usare il codice promozionale Habrahabr10 per ottenere uno sconto del 10% sull'ordine.

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
L'installazione dell'ambiente desktop con tutte le dipendenze viene eseguita con il seguente comando:

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

Come nel caso precedente, abbiamo scelto XFCE per le sue relativamente basse esigenze di risorse di calcolo.

Localizzazione del server e installazione del software

Spesso, le macchine virtuali vengono configurate solo con localizzazione in inglese. Potrebbe essere necessaria la configurazione della lingua russa, che non è difficile da impostare. Innanzitutto, installeremo le traduzioni per i programmi di sistema:

sudo apt-get install language-pack-ru

Configurazione della localizzazione:

sudo update-locale LANG=ru_RU.UTF-8

Lo stesso effetto può essere ottenuto modificando manualmente il file /etc/default/locale.

Per la localizzazione di GNOME e KDE, sono disponibili nei repository i pacchetti language-pack-gnome-ru e language-pack-kde-ru, che saranno necessari se utilizzerete programmi da questi ambienti desktop. In XFCE, le traduzioni vengono installate insieme alle applicazioni. Successivamente, è possibile installare i dizionari:

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

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

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

Inoltre, l'installazione delle traduzioni può essere necessaria per alcune applicazioni:

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

Con questa configurazione, la preparazione dell'ambiente desktop è completa, resta solo da configurare il server RDP.

Installazione e configurazione del server RDP

Nei repository di Ubuntu c'è un server Xrdp distribuito liberamente, che utilizzeremo:

sudo apt-get install xrdp

Se tutto è andato bene, il server dovrebbe avviarsi automaticamente:

sudo systemctl status xrdp

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
Il server Xrdp viene avviato con i diritti dell'utente xrdp e per impostazione predefinita utilizza il certificato /etc/ssl/private/ssl-cert-snakeoil.key, che può essere sostituito con uno proprio. Per accedere al file in lettura è necessario aggiungere l'utente al gruppo ssl-cert:

sudo adduser xrdp ssl-cert

Le impostazioni predefinite si trovano nel file /etc/default/xrdp, mentre tutti gli altri file di configurazione del server si trovano nella directory /etc/xrdp. I parametri principali sono nel file xrdp.ini, che può rimanere invariato. Il file di configurazione è ben documentato e includono anche le relative manpages:

man xrdp.ini
man xrdp

È rimasto solo da modificare lo script /etc/xrdp/startwm.sh, che viene eseguito durante l'inizializzazione della sessione utente. Inizialmente, faremo un backup dello script fornito dal pacchetto:

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

Per avviare l'ambiente desktop XFCE, è necessario uno script di questo tipo:

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

Si noti che è meglio specificare il percorso completo per i file eseguibili negli script: è una buona abitudine. Rende lo script eseguibile e a questo punto la configurazione del server Xrdp può considerarsi completa:

sudo chmod 755 /etc/xrdp/startwm.sh

Riavviamo il server:

sudo systemctl restart xrdp

Configurazione del firewall

Per impostazione predefinita, Xrdp ascolta sulla porta TCP 3389 su tutte le interfacce. A seconda della configurazione del server virtuale, potrebbe essere necessario configurare il firewall Netfilter. Su Linux, ciò avviene normalmente tramite l'utilità iptables, ma in Ubuntu è meglio usare ufw. Se l'indirizzo IP del client è noto, la configurazione si effettua con il seguente comando:

sudo ufw allow from IP_Address to any port 3389

Permettere le connessioni da qualsiasi IP è possibile in questo modo:

sudo ufw allow 3389

Il protocollo RDP supporta la crittografia, ma aprire l'accesso al server Xrdp da reti pubbliche è una cattiva idea. Se il client non ha un IP statico, per migliorare la sicurezza, il server dovrebbe ascoltare solo localhost. È meglio configurare l'accesso tramite un tunnel SSH, che reindirizzerà in modo sicuro il traffico dal computer client. Un approccio simile è stato utilizzato nel precedente articolo per il server VNC.

Connessione al server RDP

Per lavorare con l'ambiente desktop è meglio creare un utente non privilegiato separato:

sudo adduser rdpuser

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
Aggiungeremo l'utente al gruppo sudo in modo che possa eseguire compiti legati all'amministrazione. Se non è necessario, questo passaggio può essere saltato:

sudo gpasswd -a rdpuser sudo

È possibile connettersi al server utilizzando qualsiasi client RDP, incluso il client integrato del servizio desktop remoto di Windows. Se Xrdp ascolta l'interfaccia esterna, non saranno necessari ulteriori passaggi. È sufficiente inserire nell'impostazione della connessione l'indirizzo IP del VPS, il nome utente e la password. Dopo la connessione vedremo un'interfaccia simile a questa:

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
Dopo la configurazione iniziale dell'ambiente desktop, otterremo un desktop completo. Come puoi vedere, non consuma molte risorse, anche se tutto dipenderà dalle applicazioni utilizzate.

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
Se il server Xrdp ascolta solo localhost, il traffico sul computer client deve essere incapsulato in un tunnel SSH (sshd deve essere in esecuzione su VPS). Su Windows, puoi utilizzare un client SSH grafico (ad esempio, PuTTY), mentre nei sistemi UNIX è necessaria l'utilità ssh:

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

Dopo l'inizializzazione del tunnel, il client RDP si collegherà non al server remoto ma all'host locale.

Con i dispositivi mobili è più complicato: per stabilire un tunnel, i client SSH compatibili devono essere acquistati; inoltre, su iOS e iPadOS, l'esecuzione in background delle app di terze parti è difficile a causa di un'ottimizzazione energetica eccessiva. Su iPhone e iPad non è possibile stabilire un tunnel in un'app separata — è necessaria un'app combinata che sia in grado di stabilire una connessione RDP tramite SSH. Ad esempio, come Remoter Pro.

Gestore delle sessioni e sessioni utenti

La possibilità di lavoro multiutente è implementata direttamente nel server Xrdp e non richiede una configurazione aggiuntiva. Dopo l'avvio del servizio tramite systemd, un processo funziona in modalità demone, ascolta la porta 3389 e interagisce tramite localhost con il gestore delle sessioni.

ps aux |grep xrdp

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
Il gestore delle sessioni non è generalmente visibile agli utenti, poiché il nome utente e la password impostati nelle impostazioni del client vengono trasmessi automaticamente. Se ciò non è avvenuto o si è verificato un errore durante l'autenticazione, al posto del desktop verrà mostrata una finestra interattiva per l'accesso al sistema.

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04
L'avvio automatico del gestore delle sessioni è definito nel file /etc/default/xrdp, mentre la configurazione è memorizzata in /etc/xrdp/sesman.ini. Per impostazione predefinita, appare circa così:

[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
; Quando AlwaysGroupCheck=false l'accesso sarà consentito
; se il gruppo TerminalServerUsers non è definito.
AlwaysGroupCheck=false

[Sessions]

Qui non c'è niente da modificare, è sufficiente vietare l'accesso con diritti root (AllowRootLogin=false). Per ogni utente autenticato nel sistema viene avviato un processo xrdp separato: se ci si disconnette senza terminare la sessione, i processi degli utenti continueranno a funzionare per impostazione predefinita, e potrà essere possibile riconnettersi alla sessione. Le impostazioni possono essere modificate nel file /etc/xrdp/sesman.ini (sezione [Sessions]).

Cambio delle disposizioni della tastiera

Di solito non ci sono problemi con il buffer di scambio bidirezionale, mentre con la disposizione della tastiera russa sarà necessario un po' di lavoro (la locale russa deve essere già installata). Modifichiamo le impostazioni della tastiera del server Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

Alla fine del file di configurazione bisogna aggiungere le seguenti righe:

[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

Resta da salvare il file e riavviare Xrdp:

sudo systemctl restart xrdp

Come puoi vedere, allestire un server RDP su un VPS Linux non è difficile, e già articolo precedente abbiamo esaminato la configurazione di VNC. Oltre a queste tecnologie, c'è un'altra opzione interessante: il sistema X2Go che utilizza un protocollo NX 3 modificato. Ci occuperemo di questo nella prossima pubblicazione.

VPS su Linux con interfaccia grafica: avviamo un server RDP su Ubuntu 18.04

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster