Rdp To Ubuntu

Rdp To Ubuntu

Reading time1 min
#RemoteWork#Cloud#Security#Ubuntu#RDP#XRDP

Securing and Optimizing RDP Connections to Ubuntu Servers for Remote Workflows

As remote work and cloud computing become standard, efficiently and securely accessing Ubuntu servers via Remote Desktop Protocol (RDP) is critical to maintaining productivity and protecting sensitive infrastructure. Most guides treat RDP to Ubuntu as a simple connectivity task; this post will flip the script and prioritize securing and fine-tuning the remote experience to match or exceed native desktop fluidity and safety standards.

If you rely on Ubuntu servers for development, testing, or hosting your applications, having a smooth and secure remote desktop workflow isn’t just about convenience—it’s about safeguarding your entire infrastructure while working productively. Let’s dive into how you can set this up properly.


Why Use RDP with Ubuntu?

RDP offers a graphical user interface format that many admins and developers are familiar with, especially in cross-platform environments where Windows clients access Linux servers. Compared to command-line SSH, RDP can simplify certain tasks like visual debugging, graphic applications usage, or managing multiple users' sessions.

However, the default setups are often insecure or sluggish. Without proper care, your remote sessions might expose ports openly or perform poorly over typical network conditions.


Step 1: Installing a Reliable RDP Server on Ubuntu

Ubuntu does not come with an RDP server pre-installed. The most commonly used server is xrdp, which works well with standard desktop environments like XFCE or GNOME.

Install XRDP and XFCE

sudo apt update
sudo apt install xrdp xfce4 xfce4-goodies -y

Configure XRDP to use XFCE session

Create or modify the .xsession configuration in your home directory:

echo "startxfce4" > ~/.xsession

Set XRDP to use this session by default:

sudo sed -i.bak '/^new_cursors=false/a startwm.sh=/etc/xrdp/startwm.sh' /etc/xrdp/xrdp.ini

Enable and start the service:

sudo systemctl enable xrdp
sudo systemctl start xrdp

Step 2: Securing Your RDP Connection

Out of the box, XRDP listens on port 3389 with no encryption other than basic TLS, which may not suffice for sensitive environments.

1. Restrict Network Access by Firewall

Limit connections to your trusted IP range using ufw (Ubuntu’s uncomplicated firewall):

sudo ufw allow from 192.168.1.0/24 to any port 3389 comment 'Allow internal LAN RDP'
sudo ufw deny 3389/tcp
sudo ufw enable

Replace 192.168.1.0/24 with your trusted subnet or specific IP addresses.

2. Use SSH Tunneling for End-to-End Encryption

Instead of opening port 3389 publicly, tunnel RDP over an SSH connection:

From your client machine:

ssh -L 3389:localhost:3389 -N -f username@your-ubuntu-server.com

Then connect your Windows/Linux/macOS RDP client to localhost:3389, which will forward securely through SSH.

3. Enforce Strong Password Authentication & Fail2Ban

Make sure all users have strong passwords and consider installing Fail2Ban to block repeated failed login attempts:

sudo apt install fail2ban -y

Create /etc/fail2ban/jail.d/xrdp.conf with:

[xrdp]
enabled = true
port = 3389
filter = xrdp-sesman
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600

Restart Fail2Ban:

sudo systemctl restart fail2ban.service

Step 3: Optimizing Performance for Fluid Remote Sessions

RDP can feel laggy by default because desktop compositing and visual effects consume bandwidth and CPU.

Choose Lightweight Desktop Environments

We've already installed XFCE, a lightweight environment ideal for remote sessions.

If you’d rather try LXDE or MATE:

sudo apt install lxde-core lxde-common -y   # For LXDE

# Or MATE:
sudo apt install mate-desktop-environment-core -y 

Change .xsession accordingly (startlxde or mate-session).

Configure XRDP Settings

Modify /etc/xrdp/sesman.ini to optimize session parameters like color depth (reduce from default 32-bit if bandwidth is limited):

Under [Sessions], set:

MaxSessions=50
MaxIdleTime=0   ; disables idle session timeout (adjust as needed)
KillDisconnected=false 
AllowedModes=1024x768-16bit;

Lowering color depth reduces bandwidth usage dramatically.

Disable Visual Effects on XFCE

In the desktop settings menu under Window Manager Tweaks > compositor tab — uncheck compositing features that slow down drawing speed on remote sessions.


Step 4: Additional Tips for Reliable Remote Workflows

  • Use multiple monitors: Configure your RDP client (e.g., Microsoft Remote Desktop) to span across multiple screens.
  • Clipboard & file sharing: Enable clipboard sync explicitly in your client app settings but be cautious transferring sensitive files.
  • Persistence: Make sure auto-login is disabled in production environments.
  • Session reconnects: Some advanced RDP clients support reconnecting seamlessly if network drops occur—look for “reconnect” features.
  • Backups: Regularly back up important configs (~/.xsession, /etc/xrdp/) before making changes.

Summary Checklist Before You Connect Remotely:

  • Installed XRDP + lightweight DE (XFCE)
  • Configured .xsession and XRDP correctly
  • Locked down port access via firewall
  • Set up SSH tunneling for encrypted connections
  • Enabled Fail2Ban against brute force attacks
  • Tweaked color depth and DE settings for performance
  • Tested multi-monitor & clipboard features safely

Conclusion

RDP access to Ubuntu doesn’t need to be insecure or frustratingly slow. By applying these practical security measures and performance tweaks, you can create an RDP experience that rivals native desktops both in fluidity and safety—keeping your remote workflows seamless without compromising security.

Next time you initiate that remote session into your Ubuntu server, remember it’s as much about protecting how you connect as just getting connected. Secure smartly; optimize thoughtfully—and work remotely without limits!


If you found this guide useful or have questions about specific setups, feel free to leave a comment below!