VPS en Linux con una interfaz gráfica: ejecutando un servidor RDP en Ubuntu 18.04



En el artículo anterior, cubrimos la ejecución de un servidor VNC en cualquier tipo de máquina virtual. Esta opción tiene muchas desventajas, la principal son los altos requisitos para el ancho de banda de los canales de transmisión de datos. Hoy intentaremos conectarnos a un escritorio gráfico en Linux usando RDP (Protocolo de escritorio remoto). VNC se basa en la transmisión de matrices de píxeles mediante el protocolo RFB (Remote Framebuffer), mientras que RDP permite enviar primitivas gráficas más complejas y comandos de alto nivel. Se usa comúnmente para organizar los servicios de escritorio remoto en Windows, pero también hay disponibles servidores para Linux.



Tabla de contenido:



Instalación del entorno gráfico Instalación del

software y rusificación del servidor

Instalación y configuración del servidor RDP

Configuración del cortafuegos

Conexión al servidor RDP Sesiones del

administrador de sesiones y del usuario

Cambio de distribución del teclado



Instalación de un entorno gráfico



Tomaremos una máquina virtual que ejecuta Ubuntu Server 18.04 LTS con dos núcleos de procesamiento, cuatro gigabytes de RAM y una unidad de disco duro (HDD) de veinte gigabytes. Una configuración más débil no es adecuada para un escritorio gráfico, aunque depende de las tareas que se resuelvan. No olvide utilizar el código de promoción Habrahabr10 para obtener un 10% de descuento al realizar el pedido.





La instalación del entorno de escritorio con todas las dependencias se realiza con el siguiente comando:



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


Como en el caso anterior, elegimos XFCE debido a los requisitos computacionales relativamente bajos.



Rusificación del servidor e instalación de software



Las máquinas virtuales a menudo se implementan solo con localización en inglés. En el escritorio, es posible que necesite ruso, que no es difícil de configurar. Primero, instalemos traducciones para programas del sistema:



sudo apt-get install language-pack-ru


Configuremos la localización:



sudo update-locale LANG=ru_RU.UTF-8


Puede lograr el mismo efecto editando manualmente / etc / default / locale.



Para localizar GNOME y KDE, el repositorio contiene language-pack-gnome-ru y language-pack-kde-ru; los necesitará si va a utilizar programas de estos entornos de escritorio. En XFCE, las traducciones se instalan junto con las aplicaciones. Entonces puedes instalar diccionarios:



#    
sudo apt-get install hunspell hunspell-ru

#   LibreOffice
sudo apt-get install mythes-ru

# -    DICT
sudo apt-get install mueller7-dict


Además, la instalación de traducciones puede ser necesaria para algunas aplicaciones:



#  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


Esto completa la preparación del entorno de escritorio, queda configurar el servidor RDP.



Instalación y configuración del servidor RDP



Hay un servidor Xrdp gratuito en los repositorios de Ubuntu, que usaremos:



sudo apt-get install xrdp


Si todo salió bien, el servidor debería iniciarse automáticamente:



sudo systemctl status xrdp




El servidor Xrdp se inicia como usuario xrdp y, de forma predeterminada, toma el certificado /etc/ssl/private/ssl-cert-snakeoil.key, que puede reemplazar por el suyo. Para leer el archivo, agregue el usuario al grupo ssl-cert:



sudo adduser xrdp ssl-cert


La configuración predeterminada se puede encontrar en el archivo / etc / default / xrdp, mientras que todos los demás archivos de configuración del servidor se encuentran en el directorio / etc / xrdp. Los parámetros principales están en el archivo xrdp.ini, que se puede dejar sin cambios. La configuración está bien documentada y hay páginas de manual correspondientes en el kit:



man xrdp.ini
man xrdp


Solo queda editar el script /etc/xrdp/startwm.sh, que se ejecuta al inicializar la sesión del usuario. Primero, hagamos una copia de seguridad del script del kit de distribución:



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


Para iniciar el entorno de escritorio XFCE, necesita un script similar al siguiente:



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


Tenga en cuenta: es mejor escribir la ruta completa a los archivos ejecutables en scripts; este es un buen hábito. Hagamos que el script sea ejecutable y la configuración del servidor Xrdp pueda considerarse completa:



sudo chmod 755 /etc/xrdp/startwm.sh


Reiniciamos el servidor:



sudo systemctl restart xrdp


Configuración de firewall



De forma predeterminada, Xrdp escucha en el puerto TCP 3389 en todas las interfaces. Según la configuración del servidor virtual, es posible que deba configurar el firewall de Netfilter. En Linux, esto generalmente se hace usando la utilidad iptables, pero en Ubuntu es mejor usar ufw. Si se conoce la dirección IP del cliente, la configuración se realiza con el siguiente comando:



sudo ufw allow from IP_Address to any port 3389


Permita conexiones desde cualquier IP de la siguiente manera:



sudo ufw allow 3389


RDP admite el cifrado, pero es una mala idea exponer el servidor Xrdp de las redes públicas. Si el cliente no tiene una IP fija, el servidor solo debe escuchar localhost para aumentar la seguridad. Es mejor acceder a él a través de un túnel SSH, que redirigirá de forma segura el tráfico desde la computadora cliente. Usamos un enfoque similar en el artículo anterior para el servidor VNC.



Conexión al servidor RDP



Para trabajar con el entorno de escritorio, es mejor crear un usuario sin privilegios separado:



sudo adduser rdpuser




Agreguemos al usuario al grupo sudo para que pueda resolver tareas relacionadas con la administración. Si no existe tal necesidad, puede omitir este paso:



sudo gpasswd -a rdpuser sudo


Puede conectarse al servidor mediante cualquier cliente RDP, incluido el cliente de Servicios de escritorio remoto de Windows integrado. Si Xrdp está escuchando en una interfaz externa, no se necesitan gestos adicionales. Basta con especificar la dirección IP del VPS, el nombre de usuario y la contraseña en la configuración de conexión. Después de conectar, veremos algo como esto:





Después de la configuración inicial del entorno de escritorio, obtendremos un escritorio completo. Como ves, no consume tantos recursos, aunque además todo dependerá de las aplicaciones utilizadas.





Si el servidor Xrdp solo escucha localhost, el tráfico en la computadora cliente deberá empaquetarse en un túnel SSH (sshd debe estar ejecutándose en el VPS). En Windows, puede usar un cliente SSH gráfico (por ejemplo, PuTTY) y en sistemas UNIX, necesita la utilidad ssh:



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


Después de inicializar el túnel, el cliente RDP ya no se conectará al servidor remoto, sino al host local.



Con los dispositivos móviles, es más difícil: habrá que comprar clientes SSH capaces de subir el túnel, además, en iOS y iPadOS, el trabajo en segundo plano de las aplicaciones de terceros es complicado debido a una optimización energética demasiado buena. En el iPhone y el iPad, no funcionará subir el túnel en una aplicación separada; necesita una aplicación combinada, que a su vez sea capaz de establecer una conexión RDP a través de SSH. Como, por ejemplo, Remoter Pro .



Sesiones de usuario y administrador de sesiones



La capacidad multiusuario se implementa directamente en el servidor Xrdp y no requiere configuración adicional. Después de iniciar el servicio a través de systemd, un proceso se ejecuta en modo daemon, escucha en el puerto 3389 y se comunica a través de localhost con el administrador de sesiones.



ps aux |grep xrdp




sudo netstat -ap |grep xrdp




El administrador de sesiones generalmente no es visible para los usuarios, porque el nombre de usuario y la contraseña especificados en la configuración del cliente se transfieren automáticamente. Si esto no sucedió o se produjo un error durante la autenticación, aparecerá una ventana de inicio de sesión interactiva en lugar del escritorio.





El inicio automático del administrador de sesiones se registra en el archivo / etc / default / xrdp y la configuración se almacena en /etc/xrdp/sesman.ini. Por defecto, se ve así:



[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
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]


No puede dejar nada aquí, solo necesita deshabilitar el inicio de sesión de root (AllowRootLogin = false). Para cada usuario que inicie sesión en el sistema, se inicia un proceso xrdp independiente: si se desconecta sin finalizar la sesión, los procesos del usuario seguirán funcionando de forma predeterminada y podrá volver a conectarse a la sesión. La configuración se puede cambiar en el archivo /etc/xrdp/sesman.ini (sección [Sesiones]).



Cambiar la distribución del teclado



Con un portapapeles de dos caras, por lo general no surgen problemas, pero con la distribución del teclado ruso tendrás que modificar un poco (la configuración regional rusa ya debe estar instalada ). Editemos la configuración del teclado del servidor Xrdp:



sudo nano /etc/xrdp/xrdp_keyboard.ini


Las siguientes líneas deben agregarse al final del archivo de configuración:



[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


Queda por guardar el archivo y reiniciar Xrdp:



sudo systemctl restart xrdp


Como puede ver, no es difícil configurar un servidor RDP en un VPS Linux, y en el artículo anterior ya hemos discutido la configuración de VNC. Además de estas tecnologías, hay otra opción interesante: el sistema X2Go utilizando un protocolo NX 3 modificado. Lo trataremos en la próxima publicación.






All Articles