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ística | XRDP (RDP) | x11vnc (VNC) | NoMachine (NX) | TeamViewer |
|---|---|---|---|---|
| Protocolo | RDP (estándar Microsoft) | VNC/RFB | Protocolo NX | Propietario |
| Cliente Windows nativo | Sí (MSTSC integrado) | No (requiere cliente) | No (requiere cliente) | No (requiere cliente) |
| Cifrado TLS | Sí (nativo) | Opcional (mediante stunnel) | Sí | Sí |
| Soporte multisesión | Sí | No (pantalla única) | Sí | Sí |
| Uso compartido del portapapeles | Sí | Sí | Sí | Sí |
| Redirección de audio | Sí (mediante PulseAudio) | Limitado | Sí | Sí |
| Rendimiento en WAN | Bueno | Deficiente | Excelente | Bueno |
| Código abierto | Sí (Apache 2.0) | Sí | Parcial | No |
| Puerto | 3389 | 5900 | 4000 | 5938 |
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 -yReinicie si se aplicó una actualización del kernel:
sudo rebootPaso 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 -yAlternativamente, para MATE:
sudo apt install ubuntu-mate-desktop -yNota 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 -yEl 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 xrdpVerifique que el servicio está activo y escuchando:
sudo systemctl status xrdpLa 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 3389Deberí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 xrdpReinicie XRDP para aplicar el cambio de pertenencia al grupo:
sudo systemctl restart xrdpNota 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.iniLocalice y actualice estas líneas:
certificate=/etc/ssl/certs/your-domain.crt
key_file=/etc/ssl/private/your-domain.keyPaso 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 ~/.xsessionPara MATE:
echo "mate-session" > ~/.xsession
chmod +x ~/.xsessionSi 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 3389Si se conecta desde una única dirección IP conocida:
sudo ufw allow from YOUR.IP.ADDRESS to any port 3389Si debe permitir un acceso más amplio temporalmente (no recomendado para producción):
sudo ufw allow 3389/tcpRecargue y verifique las reglas del firewall:
sudo ufw reload
sudo ufw status verboseRecomendaciones de endurecimiento de seguridad:
- Cambiar el puerto predeterminado: Edite
/etc/xrdp/xrdp.iniy establezcaport=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
fail2bancon la jaulaxrdppara 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.1y 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.iniEstablezca:
address=127.0.0.1Luego conéctese mediante túnel SSH desde su cliente:
ssh -L 3389:127.0.0.1:3389 user@your-server-ip -NApunte su cliente RDP a 127.0.0.1:3389.
Paso 8 — Conectarse al escritorio remoto XRDP
Desde Windows
- Presione
Win + R, escribamstscy presione Enter para abrir Conexión a Escritorio Remoto. - En el campo Equipo, ingrese la dirección IP de su servidor Ubuntu (p. ej.,
203.0.113.45). - Haga clic en Conectar.
- En la pantalla de inicio de sesión de XRDP, seleccione el tipo de sesión (normalmente
XvncoXorg), ingrese su nombre de usuario y contraseña de Ubuntu, y haga clic en Aceptar.
Desde Linux (Remmina)
- Abra Remmina y cree un nuevo perfil de conexión.
- Establezca el protocolo en RDP.
- Ingrese la IP del servidor, su nombre de usuario y contraseña.
- Establezca la profundidad de color en Color verdadero (32 bpp) para la mejor calidad visual.
- 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
~/.xsessionfaltante: 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*-locky 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.inisi su cliente lo admite. - Cambie del backend
XvncalXorgen 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-chansrvSi 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 -yCierre 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-seslistPara 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
~/.xsessionconfigurado por usuario (se recomienda XFCE) - Usuario
xrdpagregado al grupossl-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.logy/var/log/xrdp-sesman.logpara 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.
