自学教程 从零学编程

RDP 协议

一、RDP 是什么

RDP(Remote Desktop Protocol,远程桌面协议),是微软开发的应用层协议,基于TCP,默认端口 3389。
作用:远程控制Windows主机,客户端可以在本地看到远程服务器的桌面画面,操作鼠标、键盘,就像直接坐在远程机器前面。

注意:RDP是微软私有协议;Linux远程桌面常用VNC,和RDP不是同一个协议。
现代RDP支持TLS加密,老版本RDP存在明文、安全漏洞。

二、RDP 通信模型

C/S架构:

  • RDP服务端:Windows主机开启远程桌面服务(TermService),监听3389端口;
  • RDP客户端:mstsc.exe(Windows自带远程桌面连接)、Mac/安卓第三方RDP客户端。

客户端和服务器建立TCP连接,传输:桌面图像帧、鼠标事件、键盘按键、剪贴板数据、音频、文件重定向等。

三、RDP 核心能力

  1. 桌面画面传输
    服务器抓取屏幕画面,做压缩编码(H.264/AVC、H.265,旧版本使用位图压缩),把画面流发给客户端。不是传输完整图片,而是只传输变化区域,节省带宽。
  2. 键鼠事件传输
    客户端把本地鼠标移动、点击、键盘按键,通过网络发送给远程服务器执行。
  3. 设备重定向
  • 剪贴板共享:本地和远程互相复制粘贴文本/文件
  • 磁盘重定向:把本地硬盘映射到远程电脑,可以直接读写本地文件
  • 音频重定向:远程电脑声音传到本地耳机/音箱
  • 打印机、串口、USB设备重定向
  1. 多分辨率自适应
    客户端可以自定义窗口大小,服务器动态适配画面分辨率。

四、RDP 连接流程

  1. 客户端发起TCP连接到服务器 3389 端口;
  2. 握手阶段:协商RDP版本、加密方式、编码算法;现代默认使用TLS加密;
  3. 身份认证:
    • 账号密码认证(最常见)
    • NLA(网络级别身份验证,推荐开启):在建立RDP会话之前先完成账号校验,可以减少攻击面,抵御很多RDP暴力扫描攻击
  4. 认证成功,建立RDP会话;
  5. 服务器持续抓取屏幕,压缩画面发送给客户端;客户端发送键鼠操作;
  6. 会话结束,断开连接。

NLA 重点:未开启NLA的旧RDP,攻击者在认证前就可以发起连接握手,更容易进行漏洞扫描和攻击。

五、安全相关

✅ 现代RDP支持TLS加密,流量加密传输;
⚠️ 风险点:

  1. 3389端口直接暴露公网极易遭受暴力破解、扫描攻击;
  2. 旧版RDP存在高危漏洞(经典如EternalBlue永恒之蓝);
  3. 弱密码是RDP被入侵最主要原因;

最佳实践:

  • 不要直接对公网开放3389;优先VPN接入内网后再使用RDP
  • 开启NLA,设置高强度密码,限制登录账号
  • 不要使用老旧Windows系统,及时打补丁
  • 可修改默认3389端口(仅降低扫描概率,不是安全防护)

六、RDP 与 VNC 的简单对比

项目RDPVNC
开发者微软私有协议开源跨平台
底层TCP 3389TCP 5900
原理服务器渲染画面,传输编码后的画面流帧缓冲传输,传输原始屏幕位图
性能压缩算法好,带宽占用更低同等画质占用带宽更高
平台主要Windows;Linux可通过xrdp支持RDP全平台通用(Windows/Linux/Mac)
认证支持NLA、TLS基础VNC原生加密弱

七、小结

  1. RDP是微软远程桌面协议,TCP 3389端口,用于远程操作Windows桌面;
  2. 原理:远程服务器渲染桌面,将压缩后的图像流发给客户端,客户端回传键鼠事件;
  3. 支持剪贴板、磁盘、音频等设备重定向;
  4. NLA网络级别认证,在会话建立前校验身份,提升安全性;
  5. 严禁直接裸奔暴露公网,公网场景优先VPN;弱密码+公网开放是高危组合。

思考题:RDP和SSH都可以远程管理服务器,什么时候选RDP,什么时候选SSH?

标签:

0 条笔记