0x01 前言
在windows server下可以通过配置远程桌面服务为RDP连接提供有效的数字证书以便提高安全性。
可是个人用户或并没有部署域控制器的用户是无法通过这种途径修改RDP所使用的数字证书,在不安全的环境中很容易遭受攻击,同时每次通过RDP协议连接主机都弹出一个危险警告窗口,让人看着觉得很不好:
在这里我使用Encryption Everywhere项目所提供的免费数字证书为我的RDP服务提供有效可靠的数字证书。如果你对Encryption Everywhere项目感兴趣,可以点击以下链接浏览:
0x02 准备
首先你需要拥有一个域名,你需要拥有域名的DNS解析权。在申请Encryption Everywhere项目的数字证书时需要通过CNAME进行验证。
确认域名所有权与控制权后,即可通过阿里云申请Encryption Everywhere的数字证书。如果一切顺利,最快可以在1个小时内收到由symantec签发的数字证书。要注意的是:证书签发后的邮件通知会有延迟,请自行通过阿里云证书管理页面进行查看。
在阿里云页面中请下载适用于Nginx的数字证书:
然后通过以下命令将证书与密钥(key)合并为p12文件:
1 | openssl pkcs12 -export -clcerts -in [your_domain_crt.pam] -inkey [your_domain_key.key] -out [your_domain.p12] |
将此p12文件复制到系统桌面并进行下一步。
0x03 导入
使用运行窗口(WIN+R)输入mmc打开控制台并单击 文件>添加/删除管理单元:
然后添加计算机账户的证书服务到控制台:
在个人证书中将p12文件导入:
然后右击刚才添加的证书>所有任务>管理私钥:
为NETWORK SERVICE服务添加读取密钥的权限:
最后双击刚添加的证书,将证书详细信息中的指纹信息记录备用:
0x04 注册表
再次运行窗口并输入regedit打开注册表编辑器并展开到以下路径:
1 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp |
然后新建以下内容的项:
- 名称: SSLCertificateSHA1Hash
- 类型: REG_BINARY
然后双击打开刚才新建的项并手动输入证书指纹:
完成所有步骤后即可再次通过RDP协议连接,再也不会出现那烦人的警告信息了。
0x05 结语
其实默认情况下也是用数字证书来保护我们数据的,只是这张证书是由windows系统自动生成的,因为在系统中找不到与之相关的CA信息,所以不被信任而导致弹出警告框。使用不被信任的数字证书很容易受到攻击,尤其是中间人攻击。
如果你一般在内网中使用RDP协议连接远程桌面,那么大可放心;如果你的RDP协议是暴露在公网中,则需要在安全方面多加注意。