利用SSH隧道构建多级tunnel
2019-12-2 08:52:27 Author: mp.weixin.qq.com(查看原文) 阅读量:11 收藏

01

简介

隧道是把一种网络协议封装进另外一种网络协议进行传输的技术。SSH构建隧道有三种方式: 本地转发、远程转发、动态转发。本次只使用到第一、三种方式来构建多级跳板。

02

原理

本地转发: 将本地的端口与远程机器上的端口构建映射关系。其原理是本地机器上分配一个端口进行侦听,一旦该端口有了连接,就将数据经过通道转发给远端机器上的端口。其格式为:

ssh -C -f -N -L listen_port:DST_Host:DST_port user@Tunnel_Host -p Tunnel_Host_sshport

动态转发: 对于本地转发,存在两个一一对应的端口,分别位于SSH的客户端和服务端; 动态转发的目标端口则是不固定的,其原理是在本地机器上分配了一个端口进行侦听,一旦该端口有了连接,转发出去的数据由发起的请求来决定交给远端机器的哪个端口。其格式为:

ssh -C -f -N -D listen_port user@Tunnel_Host -p Tunnel_Host_sshport

参数说明:

# -N 不打开远程shell,处于等待状态,只是搭好了隧道,不ssh连接远端。用于转发端口(PS:无 ssh登陆日志)# -f 后台执行# -C 数据压缩传输

利用ssh构建多级跳板,就是先用本地转发将远端机器的ssh端口与本地端口做映射,然后再通过本地端口继续与其他远端机器的ssh端口构建映射,直至最后一跳时采用任意动态端口转发(建立socks服务器)。

最后本地使用socks代理工具进行配置,就可以根据需要让应用按照之前构建的隧道进行通信。

示例:两级跳板,系统为linux,实验环境:

# Client A:Windows Localhost# Tunnel B:Linux ssh 192.168.1.39:22 # Tunnel C:Linux ssh 192.168.1.42:55

第一层转发: 

A(localhost:12345)->B(192.168.1.39:22)->C(192.168.1.42:55) 

ssh -Nf -C -L 12345:192.168.1.42:55 rootB@192.168.1.39 -p 22

这一步是做了本地12345端口到远程C的55端口映射,A与B之间的通信是SSH加密通信。 

第二层转发: 

ssh(localhost:9833) -> tunnel2(localhost:12345)

ssh -Nf -C -D localhost:9833 rootC@localhost -p 12345

这一步只绑定本地端口(9833),虽然是与本地的12345通信,但实质是通过tunnel1与C建立了动态转发关系。此时C充当Socks代理服务器的⻆色。

Ref: 

http://linux.51yip.com/search/ssh https://blog.csdn.net/king_cpp_py/article/details/79560606

03

服务器配置

修改SSH端口: 在/etc/ssh/sshd_config修改Port为想要的端口,检查AllowTcpForwarding的值是否为Yes(允许远程主机本地端口转发),如果需要绑定到0.0.0.0机器上,则检查GatewayPorts的值是否为Yes。然后执行

service sshd restart

SSH IP访问限制:

sudo vi /etc/hosts.allow# 尾部添加(根据情况参照下列格式)
sshd:192.168.0.1sshd:192.168.0.1/24sshd:192.168.1.*
sudo vi /etc/hosts.deny# 尾部添加
sshd:ALL

在这两个文件中的配置是立即生效,本机测试需要在新窗口中进行。

Ref: 

https://blog.csdn.net/god12

3209/article/details/17683939

04

使用工具配置

1.使用mobaxterm配置tunnel

打开mobaxterm,在tools中的network中选择MobaSSHTunnel,在弹出的对话框中选择New SSH tunnel

在端口转发配置窗口中选择Local port forwarding,按照提示填写信息

点击save保存回到MobaSSHTunnel对话框,再次添加新的tunnel,选择Dynamic port forwarding 

示例配置结果如下:

依次启用tunnel,提示输入相对应的密码,确认保存密码

在所有tunnel通道启用完后,点击各tunnel尾部的闪电标识符,启用Autoreconnect,确保断线自动重连。(使用autossh也能实现连接断开之后自动重连功能)

☞注意:Mobaxterm免费版只能使用两个tunnel,xshell不限。 

2.本机使用proxifier代理

打开proxifier,选择Profile -> Proxy Server -> add,根据实际填写对应的端口信息(此处应为9833) 

然后保存,弹出规则变更提示框,点击是即可。之后可以用其为各类应用进行socks代理,最终通过C访问目标。 


文章来源: https://mp.weixin.qq.com/s?__biz=MzU2NzY5MDY3MQ==&mid=2247483785&idx=1&sn=a881c0c3d142f7e05aeaf4120bf41444&chksm=fc981549cbef9c5f4dbb78e1d5be89ec834661a9eb59b7f8fb1fb76b2715c8edf8320baac1c3&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh