导语:Mac OS X High Sierra的root漏洞让我开始思考远程桌面(Windows Remote Desktop)连接的安全性问题。Windows远程桌面比VNC更加安全,但RDP,ADP,VNC不应该直接暴露到网络上。
Mac OS X High Sierra的root漏洞让我开始思考远程桌面(Windows Remote Desktop)连接的安全性问题。Windows远程桌面比VNC更加安全,但RDP,ADP,VNC不应该直接暴露到网络上。
安全 RDP
我最喜欢的安全RDP方法就是使用SSL对RD网关进行加密。另一个安全远程连接的方式是SSH通道,SSH通道并没有听起来那么复杂,下面是基本的配置步骤:
1. 设置SSH服务器 2. 设置从路由器转发到对方SSH端口的本地端口 3. 设置SSH客户端转发本地端口12345到远程端口sql2016:3389 4. 连接远程桌面到localhost:12345,localhost也是连接到sql2016的
为了介绍这个概念,我们用安装了OpenSSH的Windows进行设置。当你熟悉了概念后,就可以在OS X或Linux上进行配置了。
在Windows10上安装OpenSSH
开始——optional
安装服务器和客户端
点击安装后,什么也不会发生。点击左上角的箭头会回到上一页,这一页你可以看到正在安装的特征。
服务器和客户端完成安装后,需要重启系统。
配置OpenSSH
以管理员身份运行PowerShell,然后产生一个密钥。
cd C:windowssystem32OpenSSH ssh-keygen -A
紧缩权限,开启服务。如果跳过这一步,SSH服务器不能开启sshd服务,报错信息为:The sshd s
ervice terminated unexpectedly。 $filename = "$env:windirSystem32OpenSSHssh_host_ed25519_key" $permission = "NT Servicesshd", "Read", "Allow" $account = New-Object System.Security.Principal.NTAccount("NT Service", "sshd") $accessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl = Get-Acl -Path $filename foreach ($access in $acl.access) { $null = $acl.RemoveAccessRule($access) } $null = $acl.SetOwner($account) $null = $acl.AddAccessRule($accessRule) $null = Set-Acl -Path $filename -AclObject $acl Get-Service *ssh* | Start-Service
如果遇到错误信息,查看日志是一个比较好的解决方案,日志存放地址为C:windowssystem32OpenSSHLogs。
安全
网络上并没很多关于OpenSSH服务器实现的文档,OpenSSH目录中的sshd_config无法编辑,访问被持续拒绝。所以并没有按照推荐的做法对配置文件进行修改,所以我认为Microsoft是可信的。
在路由器上设置端口转发
不要用默认的SSH端口,也就是说不要从外部22端口转发到内部22端口。木马也会喜欢22端口的,日志文件会爆满的,而且可能会破解密码的。
配置OpenSSH客户端
外部IP地址为24.0.175.222,转发端口22222到Windows10的22端口,就可以连接到域计算机sql2016’s RDP3389端口。
ssh -f [email protected] -p 22222 -L 12345:sql2016:3389 -N
· -f 发送SSH命令到后天,这样就可以不保持PS打开了
· Chrissy是Windows10 workstation上的本地Windows帐号
· 24.0.175.222是公网IP
· 22222是公开SSH端口
· -L是本地端口,localhost:12345会被转发到sql2016:3389
· -N让OpenSSH不在远程系统中执行命令
远程桌面连接
对你的RDC/mstsc,使用localhost:12345作为主机名,如果你想取消,就会转发连接到sql2016:3389。
Hostname不配对,所以只能接受。
结论
如果有不安全的协议连接到网络,那么SSH可能是一个比较好的选择。