15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
12.12.2023

Cómo instalar y configurar XRDP en Ubuntu 22.04

XRDP es una implementación de código abierto del servidor del Protocolo de Escritorio Remoto (RDP) de Microsoft para Linux. Permite que cualquier cliente compatible con RDP — incluyendo Conexión a Escritorio Remoto de Windows, Remmina y FreeRDP — establezca una sesión de escritorio gráfico completa en una máquina Linux remota. En Ubuntu 22.04, XRDP actúa como puente entre el cliente RDP y una sesión de pantalla X11 o Xorg subyacente, ofreciendo una experiencia de escritorio remoto responsiva y cifrada sin necesidad de VNC ni software propietario.

Esta guía cubre la instalación completa, la configuración de certificados SSL, el endurecimiento del firewall, la integración del entorno de escritorio y el procedimiento de conexión para XRDP en Ubuntu 22.04 LTS — incluyendo casos especiales y problemas posteriores a la instalación que la mayoría de los tutoriales omiten.

Qué es XRDP y cómo funciona

XRDP opera bajo un modelo cliente-servidor. El daemon xrdp escucha en el puerto TCP 3389 y gestiona el handshake RDP, la negociación de sesión y el cifrado de transporte mediante TLS. Internamente, genera un gestor de sesiones xrdp-sesman que autentica a los usuarios mediante PAM (Módulos de Autenticación Conectables) e inicia una sesión X11 a través de un backend configurable — normalmente Xvfb (framebuffer virtual) o una sesión Xorg directa.

Los componentes arquitectónicos clave son:

  • daemon xrdp — gestiona la negociación del protocolo RDP y la terminación TLS
  • xrdp-sesman — administra el ciclo de vida de la sesión de usuario y la autenticación PAM
  • backend X11 — proporciona el framebuffer gráfico (Xvfb, Xorg o X11rdp)
  • chansrv — gestiona el uso compartido del portapapeles, la redirección de audio y el mapeo de unidades

Esta arquitectura significa que XRDP no reemplaza su gestor de pantalla — se ejecuta junto a él, creando sesiones gráficas aisladas por usuario autenticado.

XRDP vs. Alternativas: Comparación de protocolos y características

CaracterísticaXRDP (RDP)x11vnc (VNC)NoMachine (NX)TeamViewer
ProtocoloRDP (estándar Microsoft)VNC/RFBProtocolo NXPropietario
Cliente Windows nativoSí (MSTSC integrado)No (requiere cliente)No (requiere cliente)No (requiere cliente)
Cifrado TLSSí (nativo)Opcional (mediante stunnel)
Soporte multisesiónNo (pantalla única)
Uso compartido del portapapeles
Redirección de audioSí (mediante PulseAudio)Limitado
Rendimiento en WANBuenoDeficienteExcelenteBueno
Código abiertoSí (Apache 2.0)ParcialNo
Puerto3389590040005938

Para equipos que ya utilizan infraestructura Windows, XRDP es la opción operativamente más eficiente porque no requiere software cliente adicional en las máquinas Windows.

Requisitos previos

Antes de continuar, asegúrese de lo siguiente:

  • Un servidor o instancia de escritorio Ubuntu 22.04 LTS en funcionamiento
  • Una cuenta de usuario con privilegios sudo
  • Un entorno de escritorio instalado (GNOME, XFCE o MATE — detalles a continuación)
  • Acceso SSH al servidor para la configuración inicial
  • UFW o iptables disponibles para la gestión del firewall

Si está ejecutando un VPS sin cabeza sin un entorno de escritorio preinstalado, debe instalar uno antes de que XRDP pueda ofrecer una sesión gráfica. Se recomienda encarecidamente una instalación mínima de XFCE para uso de escritorio remoto debido a su bajo consumo de memoria.

Paso 1 — Actualizar los paquetes del sistema

Sincronice siempre su índice de paquetes y aplique las actualizaciones pendientes antes de instalar nuevo software. Esto evita conflictos de dependencias y garantiza que reciba la última versión parcheada de XRDP.

sudo apt update && sudo apt upgrade -y

Reinicie si se aplicó una actualización del kernel:

sudo reboot

Paso 2 — Instalar un entorno de escritorio (solo servidores sin cabeza)

Si su instancia de Ubuntu 22.04 no tiene interfaz gráfica, instale un entorno de escritorio ligero. XFCE4 es la opción más confiable para XRDP en servidores sin cabeza — las sesiones GNOME sobre XRDP en Ubuntu 22.04 tienen problemas de renderizado conocidos relacionados con conflictos de Wayland/GDM3.

sudo apt install xfce4 xfce4-goodies -y

Alternativamente, para MATE:

sudo apt install ubuntu-mate-desktop -y

Nota crítica para usuarios de GNOME: Ubuntu 22.04 usa por defecto una sesión Wayland. XRDP no es compatible con Wayland de forma nativa. Si tiene intención de usar GNOME, debe forzar sesiones Xorg editando /etc/gdm3/custom.conf y descomentando WaylandEnable=false. Aun así, GNOME sobre XRDP en 22.04 frecuentemente produce una pantalla negra al iniciar sesión — XFCE elimina completamente este tipo de problema.

Paso 3 — Instalar XRDP

Instale XRDP desde los repositorios oficiales de Ubuntu:

sudo apt install xrdp -y

El gestor de paquetes instalará xrdp junto con su dependencia xorgxrdp, que proporciona el backend del controlador de pantalla basado en Xorg. La instalación normalmente se completa en menos de dos minutos en un VPS con cPanel estándar o en un servidor bare-metal con una conexión a internet estable.

Paso 4 — Habilitar e iniciar el servicio XRDP

Habilite XRDP para que se inicie automáticamente al arrancar, luego inícielo de inmediato:

sudo systemctl enable xrdp
sudo systemctl start xrdp

Verifique que el servicio está activo y escuchando:

sudo systemctl status xrdp

La salida esperada incluye Active: active (running) y una línea que confirma que el proceso está escuchando. Para confirmar explícitamente el enlace al puerto:

sudo ss -tlnp | grep 3389

Debería ver una salida similar a:

LISTEN  0  10  0.0.0.0:3389  0.0.0.0:*  users:(("xrdp",pid=XXXX,fd=12))

Si el puerto no está enlazado, revise /var/log/xrdp.log para ver errores de inicio antes de continuar.

Paso 5 — Configurar los permisos del certificado SSL

Durante la instalación, XRDP crea un usuario del sistema dedicado llamado xrdp. El daemon utiliza la clave del certificado en /etc/ssl/private/ssl-cert-snakeoil.key para el cifrado de sesiones TLS. Por defecto, este archivo es propiedad del grupo ssl-cert, y el usuario xrdp no pertenece a él — lo que provoca fallos en el handshake TLS o la vuelta a sesiones sin cifrar.

Agregue el usuario xrdp al grupo ssl-cert:

sudo usermod -a -G ssl-cert xrdp

Reinicie XRDP para aplicar el cambio de pertenencia al grupo:

sudo systemctl restart xrdp

Nota para producción: El certificado ssl-cert-snakeoil es un certificado autofirmado generado por el paquete ssl-cert. Para entornos de producción o cualquier servidor expuesto a internet, reemplácelo con un certificado válido de una CA de confianza. Si su servidor tiene un dominio público, puede usar un certificado de su proveedor de Certificados SSL y configurar XRDP para que lo referencie mediante las directivas certificate y key_file en /etc/xrdp/xrdp.ini.

Para usar un certificado personalizado:

sudo nano /etc/xrdp/xrdp.ini

Localice y actualice estas líneas:

certificate=/etc/ssl/certs/your-domain.crt
key_file=/etc/ssl/private/your-domain.key

Paso 6 — Configurar la sesión de escritorio para XRDP

XRDP lee un archivo de configuración de sesión por usuario en ~/.xsession o ~/.Xclients para determinar qué entorno de escritorio lanzar. Sin este archivo, muchas configuraciones de Ubuntu 22.04 producen una pantalla gris o negra después de la autenticación.

Para XFCE, cree el archivo de sesión para su usuario:

echo "xfce4-session" > ~/.xsession
chmod +x ~/.xsession

Para MATE:

echo "mate-session" > ~/.xsession
chmod +x ~/.xsession

Si está configurando esto para múltiples usuarios en un Servidor Dedicado, automatice este paso con un bucle de shell o una herramienta de gestión de configuración como Ansible.

Paso 7 — Configurar el firewall

XRDP escucha en el puerto TCP 3389. Debe permitir explícitamente este puerto a través de UFW. Sin embargo, exponer RDP directamente a internet en 0.0.0.0 es un riesgo de seguridad significativo — RDP es uno de los servicios con más ataques de fuerza bruta en internet.

Enfoque recomendado: restringir el acceso a un rango de IP específico o subred VPN.

Permitir acceso solo desde una subred de confianza específica:

sudo ufw allow from 192.168.1.0/24 to any port 3389

Si se conecta desde una única dirección IP conocida:

sudo ufw allow from YOUR.IP.ADDRESS to any port 3389

Si debe permitir un acceso más amplio temporalmente (no recomendado para producción):

sudo ufw allow 3389/tcp

Recargue y verifique las reglas del firewall:

sudo ufw reload
sudo ufw status verbose

Recomendaciones de endurecimiento de seguridad:

  • Cambiar el puerto predeterminado: Edite /etc/xrdp/xrdp.ini y establezca port=33890 (o cualquier puerto no estándar), luego actualice su regla UFW en consecuencia. Esto reduce drásticamente el ruido de escaneo automatizado.
  • Usar fail2ban: Instale y configure fail2ban con la jaula xrdp para bloquear IPs después de intentos de autenticación fallidos repetidos.
  • Tunelizar sobre SSH: Para máxima seguridad, vincule XRDP solo a 127.0.0.1 y acceda a él a través de un túnel SSH. Esto elimina completamente la exposición directa a internet.

Para vincular XRDP solo a localhost:

sudo nano /etc/xrdp/xrdp.ini

Establezca:

address=127.0.0.1

Luego conéctese mediante túnel SSH desde su cliente:

ssh -L 3389:127.0.0.1:3389 user@your-server-ip -N

Apunte su cliente RDP a 127.0.0.1:3389.

Paso 8 — Conectarse al escritorio remoto XRDP

Desde Windows

  1. Presione Win + R, escriba mstsc y presione Enter para abrir Conexión a Escritorio Remoto.
  2. En el campo Equipo, ingrese la dirección IP de su servidor Ubuntu (p. ej., 203.0.113.45).
  3. Haga clic en Conectar.
  4. En la pantalla de inicio de sesión de XRDP, seleccione el tipo de sesión (normalmente Xvnc o Xorg), ingrese su nombre de usuario y contraseña de Ubuntu, y haga clic en Aceptar.

Desde Linux (Remmina)

  1. Abra Remmina y cree un nuevo perfil de conexión.
  2. Establezca el protocolo en RDP.
  3. Ingrese la IP del servidor, su nombre de usuario y contraseña.
  4. Establezca la profundidad de color en Color verdadero (32 bpp) para la mejor calidad visual.
  5. Conéctese.

Desde macOS

Use Microsoft Remote Desktop de la Mac App Store — es compatible con RDP de forma nativa y funciona perfectamente con XRDP.

Solución de problemas comunes de XRDP en Ubuntu 22.04

Pantalla negra después del inicio de sesión

Este es el problema más común en Ubuntu 22.04. Causas y soluciones:

  • Archivo ~/.xsession faltante: Créelo como se muestra en el Paso 6.
  • Conflicto de sesión Wayland: Deshabilite Wayland en /etc/gdm3/custom.conf.
  • Archivo de bloqueo X obsoleto: Elimine los archivos /tmp/.X*-lock y reinicie XRDP.

Fallo de autenticación a pesar de credenciales correctas

  • Verifique que PAM no esté bloqueando el proceso xrdp-sesman: revise /var/log/xrdp-sesman.log.
  • Asegúrese de que la cuenta de usuario no esté bloqueada: sudo passwd -S username.
  • Confirme que no se requiere que el usuario cambie su contraseña en el próximo inicio de sesión.

Rendimiento deficiente o alta latencia

  • Reduzca la profundidad de color en la configuración del cliente RDP (16 bits en lugar de 32 bits).
  • Habilite el códec RemoteFX o H.264 en /etc/xrdp/xrdp.ini si su cliente lo admite.
  • Cambie del backend Xvnc al Xorg en el selector de sesión XRDP para mejor rendimiento en servidores con aceleración de hardware.

Puerto 3389 no accesible

  • Confirme que XRDP está en ejecución: sudo systemctl status xrdp
  • Confirme que UFW no está bloqueando: sudo ufw status
  • Revise los grupos de seguridad del proveedor de nube o las ACL de red — muchos proveedores de VPS tienen una capa de firewall adicional a nivel de hipervisor que es independiente de UFW.

Opciones de configuración avanzada

Habilitar el uso compartido del portapapeles

La redirección del portapapeles entre el cliente RDP y el escritorio remoto requiere el servicio de canal xrdp-chansrv. Se inicia automáticamente con la sesión, pero si el portapapeles no funciona, verifique que el proceso esté en ejecución:

ps aux | grep xrdp-chansrv

Si no está en ejecución, busque errores en los archivos de registro ~/.xrdp/ dentro del directorio de inicio del usuario.

Habilitar la redirección de audio

Instale el módulo RDP de PulseAudio:

sudo apt install pulseaudio-module-xrdp -y

Cierre sesión y vuelva a conectarse. La salida de audio del escritorio remoto se redirigirá a los altavoces de su cliente local.

Sesiones simultáneas de múltiples usuarios

XRDP admite múltiples sesiones simultáneas de forma predeterminada. Cada usuario autenticado recibe una sesión X11 aislada. Para verificar las sesiones activas:

sudo xrdp-seslist

Para entornos con muchos usuarios concurrentes — como estaciones de trabajo de desarrolladores o entornos de formación — un Servidor Dedicado proporciona el margen de CPU y RAM necesario para mantener múltiples sesiones gráficas sin contención.

Conclusiones clave y lista de verificación de decisiones

Antes de implementar XRDP en producción, verifique cada uno de los siguientes puntos:

  • Entorno de escritorio instalado y ~/.xsession configurado por usuario (se recomienda XFCE)
  • Usuario xrdp agregado al grupo ssl-cert — omitir esto causa errores TLS
  • Wayland deshabilitado si se usa GNOME (/etc/gdm3/custom.conf)
  • Las reglas del firewall restringen el puerto 3389 solo a IPs de confianza — nunca exponga RDP a 0.0.0.0 en un servidor público
  • Certificado autofirmado reemplazado por un certificado válido emitido por una CA para implementaciones en producción
  • fail2ban configurado con una jaula XRDP para mitigar ataques de fuerza bruta
  • Túnel SSH considerado como alternativa a la exposición directa del puerto para entornos de alta seguridad
  • Firewall a nivel de hipervisor verificado — los grupos de seguridad del proveedor de nube son independientes de UFW
  • Archivos de registro monitoreados en /var/log/xrdp.log y /var/log/xrdp-sesman.log para errores de sesión

Preguntas frecuentes

¿Es compatible XRDP con Ubuntu 22.04 con Wayland?

No. XRDP requiere una sesión X11/Xorg. Ubuntu 22.04 usa Wayland por defecto bajo GNOME. Debe deshabilitar Wayland en /etc/gdm3/custom.conf o usar un entorno de escritorio que use Xorg por defecto, como XFCE o MATE.

¿Cuál es la diferencia entre los tipos de sesión Xvnc y Xorg en XRDP?

El backend Xvnc crea un framebuffer virtual usando VNC internamente, que es compatible con la mayoría de las configuraciones pero tiene mayor uso de CPU. El backend Xorg usa el controlador xorgxrdp para renderizado Xorg directo, ofreciendo mejor rendimiento y soporte de aceleración de hardware. Use Xorg cuando esté disponible.

¿Pueden múltiples usuarios conectarse a XRDP simultáneamente?

Sí. XRDP crea una sesión X11 separada y aislada para cada usuario autenticado. Las sesiones son independientes y no interfieren entre sí, lo que hace que XRDP sea adecuado para el acceso remoto multiusuario en un único servidor.

¿Es seguro exponer el puerto 3389 de XRDP directamente a internet?

No. RDP es uno de los protocolos más atacados mediante fuerza bruta y explotación. Siempre restrinja el puerto 3389 a direcciones IP conocidas mediante reglas de firewall, use fail2ban y considere tunelizar XRDP sobre SSH para cualquier implementación expuesta a internet.

¿Cómo desinstalo XRDP de Ubuntu 22.04?

Ejecute sudo apt purge xrdp -y && sudo apt autoremove -y. Esto elimina los paquetes XRDP y sus dependencias. También elimine los archivos de configuración residuales con sudo rm -rf /etc/xrdp y elimine la regla UFW con sudo ufw delete allow 3389/tcp.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar