使用ssh隧道做三层流量代理
No.1
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失 , 均由使用者本人负责 , 雷神众测以及文章作者不为此承担任何责任 。
雷神众测拥有对此文章的修改和解释权 。 如欲转载或传播此文章 , 必须保证此文章的完整性 , 包括版权声明等全部内容 。 未经雷神众测允许 , 不得任意修改或者增减此文章内容 , 不得以任何方式将其用于商业目的 。
No.2
起因
看到一篇2017年的文章 , 其中提到了通过用SSH隧道作VPN的方法(# vpn-over-ssh) , 文中说到在openssh4.3之后 , 我们可以通过SSH隧道在目标和本机添加两个tun设备 , 做三层的流量转发 , 可以认为是搭建了一个VPN 。 因为是三层的流量代理 , 最直接的作用是我们可以发送ping包和进行syn扫描 , 这就很舒服了 , 感觉在某些条件下会很香 , 所以进行学习和复现 , 以备不时之需 。
No.3 适用范围
我首先去看了下openssh4.3版本在什么时间发布 , 确定一下这个功能的适用范围大不大如果太新的话 , 可能实战意义就不是那么大了 。
文章插图
文章插图
从前边两张图可以看到 , openssh4.3是在2006年年初发布的 , 从源码中看可能在2005年年底就有了这个功能 , 也就是说在十五年前的版本中就存在这个功能 , 这么看来这个功能的适用范围(4.3至今 , 目前最新版应该是8.4)可能不算太小 。
No.4 复现过程
2017年的文章文中提到场景是当目标可以通过公网ip访问到时的情况 , 需要我们去主动访问目标的ssh服务 , 但是我们实战中的需求可能更多的是反向的 , 也就是说需要目标主动来访问我们在公网上的服务器 。 根据vpn的工作原理可以知道 , 只要对文中的命令稍作修改就可以完成我们的需求 。
No.5 前提条件
· 不同于动态转发、远程转发和本地转发 , 由于需要添加tun设备 , 所以我们必须获取到目标的root权限 。
· 允许root远程登录 , 并且启用tunnel功能 , 在sshd_config修改或添加如下内容:
PermitRootLogin yes
PermitTunnel yes
No.6 tun粗略介绍
linux下有两种虚拟网络设备可供选择分别是tun和tap , tun工作在三层 , 而tap工作在二层 , 分别可以转发IP数据包和以太网帧 。 加入tun之后的数据包发送过程的一点个人的拙见 。
一般的数据包发送过程:
文章插图
加入了tun之后发送数据包:
文章插图
socks代理可以看做是一个单向的管道 , 而tun作的三层代理可以看做是一个双向的管道 , 因为它在操作系统中的表现是一个网卡设备 , 所以可以用路由来控制数据包的流向 。 因为该代理工作在三层 , 所以对于直接调用四层API的应用程序(也就是工具)并不需要关心的其他细节 。
VPS的话最好是KVM、Xen或者Hyper-V架构的这种完全的虚拟化 , 如果是Openvz这种直接调用母机内核虚拟化 , 如果母机内核不支持 , 你也没办法 。 (这个情况我没条件测试 , 仅作记录)
在linux2.4版本之后tun功能是默认编译进内核的 , tap的功能最为模块编译(话虽这样说 , 但是现实情况不一定 , 直接上手测一下能不能用是最稳的) 。 可以使用modinfo tun命令查看是否支持tun功能 。
文章插图
- 或使用天玑1000+芯片?荣耀V40已全渠道开启预约
- 苹果将推出使用mini LED屏的iPad Pro
- 手机能用多久?如果出现这3种征兆,说明“默认使用时间”已到
- 苹果有望在2021年初发布首款使用mini LED显示屏的 iPad Pro
- 笔记本保养有妙招!学会这几招笔记本再战三年
- 数据可视化三节课之二:可视化的使用
- 索尼sw77与sw55的使用差别感受
- 爆料称一加9系列与潜望式镜头无缘 继续使用普通长焦
- 太空舱|四川绵阳:中国首款智慧移宿空间亮相 使用寿命可达50年
- 电影制作专业学生使用AI创作《汉密尔顿》歌词,意外提到了希拉里