ღ Miranda

SSH远程转发、动态转发和X转发

This works by allocating a socket to listen to port on the remote side, and whenever a connection is made to this port, the connection is forwarded over the secure channel, and a connection is made to host port hostport from the local machine.

SSH远程转发

SSH远程转发原理与本地转发大致相同,使用了-R参数,本实验的网络拓扑图和本地转发的一致。

实验的拓扑图:

img

现在处于外网的192.168.1.110要访问内网的1.1.1.11上的服务器怎么办呢,这时候可以使用远程转发,需要在xp上装服务器,关闭防火墙。

1.1.1.10上执行如下命令:

着两条命令在远程192.168.1.110上监听了7001和7002两个端口,这就是与本地端口转发的区别,可以看到ip127.0.0.1,所以可以知道远程端口转发-g参数失效:

此时访问本地127.0.0.1:7001就可以访问防火墙内的服务器,执行rdesktop 127.0.0.1:7002就可以访问1.1.1.11的远程桌面。

1.1.1.10上执行:

将隧道发来的流量转到1.1.1.11的333端口上,所以1.1.1.11可以收到192.168.1.110的shell:

1.1.1.11上看到:


SSH动态转发

远程转发和本地转发都要指定要访问的服务器的端口和ip,比如80,但在我们要去访问网站的时候,用的不是ip和端口,而是一个个的域名,而单单一个ip和端口有时候是不能访问该网站的,这时候就要用到动态端口转发,不需要指定转发到哪,隧道的另一边会按照包内容进行动态转发,这时候用到-D参数,格式为:

内网1.1.1.10上执行以下命令:

这里可以指定-g参数,看到监听的ip为0.0.0.0,所以可以作为网关,这时候可以在1.1.1.11上设置socks代理1.1.1.10的7009端口就能访问任意网站了,动态端口转发可以用来翻墙,在国外部署一台VPS服务器,然后可以建立SSH隧道,就可以打破防火墙的限制访问一些网站了,其实这里的实验模拟了一次翻墙,monowall就相当于gfw,为了访问墙外的内容,我们在墙外部署了一台服务器192.168.1.110,然后建立了ssh动态转发隧道,通过设置浏览器的socks代理就可以访问墙外的网站了。


X协议转发

以上这些转发后得到的shell只能执行字符界面的操作,如果要执行图形界面的操作的时候就要用到X协议转发,使用-X参数。

1.1.1.10上执行:

看到执行后收到了192.168.1.110的shell,这时候可以执行firefox等图形化的命令,会弹出窗口,这时候虽然看起来是在本机上运行的,但实际上是在远程上运行,所做的更改也在远程机器上有效。


总结

至此,我们已经完成了本地端口转发,远程端口转发,动态端口转发以及 X 转发的介绍。回顾起来,总的思路是通过将 TCP 连接转发到 SSH 通道上以解决数据加密以及突破防火墙的种种限制。对一些已知端口号的应用,例如 Telnet/LDAP/SMTP,我们可以使用本地端口转发或者远程端口转发来达到目的。动态端口转发则可以实现 SOCKS 代理从而加密以及突破防火墙对 Web 浏览的限制。对于 X 应用,无疑是 X 转发最为适用了。虽然每一部分我们都只是简单的介绍了一下,但如果能灵活应用这些技巧,相信对我们的日常工作也是会有所帮助的。

发表评论

电子邮件地址不会被公开。