配置使用RDP over SSH提高远程桌面安全性 /XSHELL 加速远程桌面RDP
0x01 前言
为了方便,我在家中的服务器中配置了一台windows server虚拟机,然后使用pfsense将一个端口对公网开放并将其映射到该虚拟机的RDP端口。这样我无论在哪里都可以通过RDP协议访问家中的服务器,这样能使我有个GUI界面,方便进行一些远程操作。
可我并不信赖RDP的安全性,即使我使用了可靠的数字证书来识别身份:
但我还是担心windows会有其他漏洞导致服务器被渗透或者被爆破攻击。相比之下我比较信赖SSH,那为什么不用SSH做代理,将RDP请求转发到虚拟机上呢?
0x02 配置
首先要准备一台配置了远程桌面的windows系统,然后还需要一台配置了centos系统的虚拟机或电脑。两者在内网中要能互访,至少windows系统的TCP 3389这个端口要能被centos访问。
为了安全起见,我将centos系统的默认SSH端口作了修改并启用密钥验证,然后禁用密码验证:
然后将SSH端口通过pfsense映射到公网中:
0x03 使用
0x03.1 macOS
配置过程非常简单,并不需要使用iptables进行转发。如果你使用的是macOS或其他Linux系统,那么通过以下命令即可连接到远程SSH:
1 |
sudo ssh -L [local-listen-port]:[rdp-host]:[rdp-port] [username]@[ssh-host] -p [ssh-port] -i [ssh-key] -N |
因为需要在本机监听一个端口,所以需要root权限或使用sudo。上面的参数解释如下:
- local-listen-port:本地代理端口
- rdp-host:windows的内网地址
- rdp-port:RDP端口,默认为3389
- ssh-username:SSH的用户名
- ssh-host:centos的IP地址
- ssh-port:SSH端口
- ssh-key:SSH密钥的绝对路径
例如:
1 |
sudo ssh -L 33890:10.1.1.16:3389 sshuser1@home.t.com -p 2222 -i ./sshuser1.key -N |
上面语句的意思是:使用用户名为sshuser1与相对应的ssh密钥sshuser1.key通过2222端口使用SSH协议登入home.t.com这台主机,并将本地端口33890通过SSH隧道转发到10.1.1.16:3389这个地址。
成功连接后并不会返还任何内容,这时候请不要关闭终端:
然后使用RDP软件连接即可:
因为使用了代理模式,所以RDP地址填写127.0.0.1即可,端口则为设定的33890。
0x03.2 windows xshell
打开xshell新建会话属性对话框,并在连接选项框中输入SSH服务器信息:
然后在用户身份验证对话框中输入用户信息:
为了安全起见,请不要在密码一栏输入密码,如果输入密码,xshell将记住并托管你的密码。
然后在隧道对话框中添加代理信息:
完成后先连接SSH,连接后也不会有任何内容返还。这时候使用windows自带的RDP工具即可连接:
输入账号密码后,又见到了熟悉的证书警告:
如果不想总是提示证书错误或者想进一步提高安全性,请阅读以下文章:
0x04 结语
windows下用xshell或putty可以非常便捷地连接和使用,在使用上没有造成任何麻烦;而在macOS或Linux上,可以将命令写入到一个shell里,需要的时候一键打开就可以连接了,非常方便。
最主要是:安全!
via.https://enginx.net/2017/04/25/%E9%85%8D%E7%BD%AE%E4%BD%BF%E7%94%A8rdp-over-ssh%E6%8F%90%E9%AB%98%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E5%AE%89%E5%85%A8%E6%80%A7.html
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合AMP标准。