ღ Miranda

SSH本地转发

ssh (SSH client) is a program for logging into a remote machine and for executing commands on a remote machine. It is intended to replace rlogin and rsh, and provide secure encrypted communications between two untrusted hosts over an insecure network. X11 connections and arbitrary TCP ports can also be forwarded over the secure channel.

Linux下的ssh命令会自动加密所有流量,也可以用来做SSH的端口转发,这也可以称作为SSH隧道,能够加密SSH Client端至SSH Server端之间的通讯数据,还可以突破防火墙的限制完成一些之前无法建立的TCP连接。

实验的拓扑图: 
img

防火墙只允许53端口的内网流量出去,但这时候要想访问192.168.1.117服务器的80端口,就可以使用本地端口转发,这时候要去修改192.168.1.110上的ssh配置文件/etc/ssh/sshd_config,把PermitRootLogin改为yes,把Port改为53,把PasswordAuthentication改为yes,然后重启ssh服务:

ssh命令格式为,这里需要注意的是本例中我们选择了7001端口作为本地的监听端口,在选择端口号时要注意非管理员帐号是无权绑定1-1023端口的,所以一般是选用一个1024-65535之间的并且尚未使用的端口号即可。:

本实验的命令:

会得到以下输出:

此时访问浏览器192.168.1.110:53就可以直接访问到192.168.1.117上的网页,这里我们在1.1.1.10这台机器上对192.168.1.11780端口的访问会被发到7001端口上,然后会通过ssh隧道通过防火墙的53端口到192.168.1.110上,然后这台机器回去请求192.168.1.117:80再将数据原路返回。

还可以指定一些参数,-N不打开shell,-f后台进程,-C压缩连接节省带宽,当80端口开放在192.168.1.110上时,可以使用以下命令,这里使用了localhost,这是因为SSH隧道就相当于直接把请求通过隧道流到了192.168.1.110上,所以访问本地的80就相当于访问远端的80。

也可以连接到远程桌面3389端口:

现在有另一种情况,内网中还有1.1.1.11这台机器想要连接192.168.1.117服务器,在主流SSH实现中,本地端口转发绑定的是lookback接口,这意味着只有localhost或者127.0.0.1才能使用本机的端口转发,SSH同时提供了GatewayPorts关键字,我们可以通过指定它与其他机器共享这个本地端口转发,使用-g参数实现网关功能:

这时候可以在192.168.1.117上用nc监听333端口:

1.1.1.11上连接1.1.1.10的7004端口,在192.168.1.117上就可以接受到shell。

192.168.1.117上看到:

发表评论

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