XDRP en CENTOS 8: Instalación

¿Que es XRDP?
Antes de instalar un servidor XRDP en Centos 8 tendremos que tener claro que XRDP no es más que un clón gratuito del software de acceso remoto de Windows (RDP). Este software funciona en la mayor parte de las distribuciones de Linux y UNIX (esto incluye a FreeBSD, Net-BSD, OpenBSD, HP-UX, AIX, Solaris, etc.).
¿Quien creó XRDP?
XRDP fue creado mediados del año 2004 por el programador Jay Sorg basándose para ello en el software rdesktop y FreeRDP los cuales ya habían implementado una solución libre de acceso RDP. El servidor XRDP en Centos 8 implementa la última versión del mismo: La 0.9
Instalación de XDRP en CENTOS 8
Cabe señalar que esta guía se ha realizado para la instalación de un servidor XRDP en Centos 8, pero la misma también valdría para cualquier sistema Linux derivado o parecido: Linux Rehat 8, Oracle Linux 8, Fedora, Scientific Linux 8, etc.
Para realizar la instalación del servidor XRDP en Centos 8, lo primero que tendremos que hacer es entrar en la consola de comandos del servidor (con permiso de administrador – root -) y teclear lo siguiente:
sudo dnf -y install xrdp sudo systemctl enable xrdp sudo systemctl start xrdp
Si recibimos un mensaje de error, el mismo puede ser debido a que no tenemos instalado el repositorio EPEL. Para instalarlo, tedremos que poner los siguientes comandos:
dnf -y install epel-release
No hay ni que decir, que es estrictamente necesario también tener instalado un entorno gráfico. El cual, lo podremos instalar de la siguiente forma:
sudo dnf groupinstall «Server with GUI»
Ajustes del servidor XDRP en CENTOS 8
Para poder arrancar nuestro servidor XRDP en CENTOS 8 utilizando el entorno de escritorio GNOME, tendremos que modificar el fichero /etc/xrdp/xrdp.ini . Para realizar esto tendremos que introducir el siguiente comando:
sudo bash -c 'echo "exec gnome-session" >> /etc/xrdp/xrdp.ini'
Configuración del firewall
Para abrir el firewall y que el mismo permita acceder al puerto XRDP en CENTOS 8 (puerto 3389) hay que introducir los siguientes comandos en la consola:
sudo firewall-cmd --zone=public --permanent --add-port=3389/tcp sudo firewall-cmd --reload
Activación del servicio
Ahora vamos a activar y a arrancar el servicio.
sudo systemctl enable xrdp sudo systemctl start xrdp
Configuración de SElinux
SELinux es un sistema de seguridad que por defecto viene activo en Centos y en todas sus distribuciones hermanas: Red Hat, Oracle Linux, Scientific Linux y Fedora.
El mismo fue creado por la famosa NSA norteamericana.
En teoría SElinux se encarga de vigilar continuamente el sistema y bloquea cualquier actividad sospechosa. El problema es que para SElinux todo es sospechoso, así que hay que decirle al mismo que servicios queremos permitir.
Esto lo podremos hacer mediante los siguientes comandos:
chcon --type=bin_t /usr/sbin/xrdp chcon --type=bin_t /usr/sbin/xrdp-sesman
Una vez hecho esto tendremos que reiniciar la máquina para que coja los cambios, ya que por mi experiencia he comprobado que a veces no basta con reiniciar el servicio.
Cambio de puerto XRDP en CENTOS 8
Dejar el puerto 3389 abierto en Internet a todo el mundo es algo bastante arriesgado. Existen cientos de programas informáticos automatizados que intentan explotar las vulnerabilidades del sistema XRDP, muchos de los cuales son muy usados por los crackers.
Existen algunos programas como Fail2Ban los cuales nos permiten proteger el sistema frente a ataques de fuerza bruta. Desgraciadamente, debido a la naturaleza del protocolo RDP estos programas no suelen funcionar muy bien con XRDP.
Una recomendación es cambiar el puerto donde XRDP está escuchando. De esta forma podremos evitar en cierto medida los ataques al mismo. Para hacer esto tendremos que editar el fichero /etc/xrdp/xrdp.ini como usuario root y cambiar la línea que pone port=3389 al puerto que deseemos, por ejemplo el 11840 port=11840.
Una vez hecho esto tendremos que abrir el correspondiente puerto en el firewall:
sudo firewall-cmd --add-port=11840/tcp --permanent sudo firewall-cmd --reload
No deberíamos olvidar también cerrar el puerto 3389 en el firewall:
sudo firewall-cmd --remove-port=3389/tcp --permanent sudo firewall-cmd --reload