一、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 核心能力
- 桌面画面传输
服务器抓取屏幕画面,做压缩编码(H.264/AVC、H.265,旧版本使用位图压缩),把画面流发给客户端。不是传输完整图片,而是只传输变化区域,节省带宽。 - 键鼠事件传输
客户端把本地鼠标移动、点击、键盘按键,通过网络发送给远程服务器执行。 - 设备重定向
- 剪贴板共享:本地和远程互相复制粘贴文本/文件
- 磁盘重定向:把本地硬盘映射到远程电脑,可以直接读写本地文件
- 音频重定向:远程电脑声音传到本地耳机/音箱
- 打印机、串口、USB设备重定向
- 多分辨率自适应
客户端可以自定义窗口大小,服务器动态适配画面分辨率。
四、RDP 连接流程
- 客户端发起TCP连接到服务器 3389 端口;
- 握手阶段:协商RDP版本、加密方式、编码算法;现代默认使用TLS加密;
- 身份认证:
- 账号密码认证(最常见)
- NLA(网络级别身份验证,推荐开启):在建立RDP会话之前先完成账号校验,可以减少攻击面,抵御很多RDP暴力扫描攻击
- 认证成功,建立RDP会话;
- 服务器持续抓取屏幕,压缩画面发送给客户端;客户端发送键鼠操作;
- 会话结束,断开连接。
NLA 重点:未开启NLA的旧RDP,攻击者在认证前就可以发起连接握手,更容易进行漏洞扫描和攻击。
五、安全相关
✅ 现代RDP支持TLS加密,流量加密传输;
⚠️ 风险点:
- 3389端口直接暴露公网极易遭受暴力破解、扫描攻击;
- 旧版RDP存在高危漏洞(经典如EternalBlue永恒之蓝);
- 弱密码是RDP被入侵最主要原因;
最佳实践:
- 不要直接对公网开放3389;优先VPN接入内网后再使用RDP
- 开启NLA,设置高强度密码,限制登录账号
- 不要使用老旧Windows系统,及时打补丁
- 可修改默认3389端口(仅降低扫描概率,不是安全防护)
六、RDP 与 VNC 的简单对比
| 项目 | RDP | VNC |
|---|---|---|
| 开发者 | 微软私有协议 | 开源跨平台 |
| 底层 | TCP 3389 | TCP 5900 |
| 原理 | 服务器渲染画面,传输编码后的画面流 | 帧缓冲传输,传输原始屏幕位图 |
| 性能 | 压缩算法好,带宽占用更低 | 同等画质占用带宽更高 |
| 平台 | 主要Windows;Linux可通过xrdp支持RDP | 全平台通用(Windows/Linux/Mac) |
| 认证 | 支持NLA、TLS | 基础VNC原生加密弱 |
七、小结
- RDP是微软远程桌面协议,TCP 3389端口,用于远程操作Windows桌面;
- 原理:远程服务器渲染桌面,将压缩后的图像流发给客户端,客户端回传键鼠事件;
- 支持剪贴板、磁盘、音频等设备重定向;
- NLA网络级别认证,在会话建立前校验身份,提升安全性;
- 严禁直接裸奔暴露公网,公网场景优先VPN;弱密码+公网开放是高危组合。
思考题:RDP和SSH都可以远程管理服务器,什么时候选RDP,什么时候选SSH?
0 条笔记