SSH端口转发

一、SSH端口转发简介

SSH协议将其他TCP端口的网络数据通SSH链接来转发,这一过程也被叫做“隧道”(tunneling)。
在安全领域中可以利用SSH端口转发功能,突破防火墙的限制完成一些之前无法建立的TCP连接。

二、SSH端口转发分类
1、本地转发:

ssh -L localport:remotehost:remotehostport -fN sshserver
例如:ssh -L 8866:192.168.10.3:23 -fN 192.168.10.2

2、远程转发:

ssh -R localport:remotehost:remotehostport -fN sshserver
例如:ssh -R 8866:192.168.10.3:23 -fN 192.168.10.1

3、动态转发:

ssh -D proxyport -fN sshserver
例如:ssh -D 1100 -fN 192.168.10.2

参数:
localport       本机开启的端口号
remotehost      目标主机的IP地址
remotehostport 目标主机开放的TCP端口
sshserver       转发主机的IP地址
proxyport 代理端口
选项:
-f 后台启用
-N 不打开远程shell,处于等待状态(不加-N则直接登录进去)
-g 启用网关功能

三、实验案例:
案例环境:

3台RHEL6.5 64虚拟机(分别为:HostA、HostB、HostC)
桥接到vmnet1模式

IP地址:
HostA:192.168.58.134
HostB:192.168.58.135
HostC:192.168.58.136
角色:
外网主机:HostA
内网堡垒机:HostB
内网服务器:HostC

SSH本地转发

在本地(运行命令的机器上)建立一个监听端口,把所有对该本地端口的访问转发到sshserver,由sshserver替之访问internet

在这里插入图片描述
HostB:开启ssh远程访问
HostC:开启Telnet Server
需求:
HostC只允许HostB进行远程登录(以Telnet方式)
 HostC拒绝HostA访问
 HostB允许HostA访问(以ssh方式)
 在HostA上设置本地转发
 在HostA上实现对HostC的远程访问

(1)测试连通性,确保三台机子可以ping通
(2)在C上实施安全策略阻止A的访问

iptables -A INPUT -s 192.168.58.134 -j DROP
此时防火墙策略生效,A不能ping通C
在这里插入图片描述
B可以Ping通C
在这里插入图片描述

(3)C上安装telnet服务端,添加用户zhangsan

yum -y install telnet-server
在这里插入图片描述
修改telnet配置文件,使其可以telnet登录,
vim /etc/xinetd.d/telnet,修改disable=no
在这里插入图片描述
重启telnet服务
service xinetd start
在这里插入图片描述
添加用户zhangsan
useradd zhangsan
passwd zhangsan
在这里插入图片描述

(4)验证B能否访问

HOSTC安装客户端telnet
yum -y install telnet
在这里插入图片描述
B上验证是否可以使用telnet登录C
telnet 192.168.58.136
在这里插入图片描述

(5)A上验证是否可以telnet登录C

与B类似安装客户端telnet
yum -y install telnet
telnet C的ip – 不能访问
在这里插入图片描述

(6)B开启ssh登录服务

service sshd start (前提)
建立用户lisi
useradd lisi
在这里插入图片描述

(7)A验证是否可以SSH登录B

ssh lisi@192.168.58.135
在这里插入图片描述

(8)在A上设置本地转发

ssh -L localport:remotehost:remotehostport -fN sshserver
在这里插入图片描述
查看现在是否有8000端口
netstat -anpt|grep :8000 在这里插入图片描述

(9)A通过本地转发到B telnet登录C

telnet 127.0.0.1 8800
登录C的用户zhangsan
试着创建一个文件 mkdir c-from-c
在C上查看是否有 cc
在这里插入图片描述

(10)C主机上查看登录信息

netstat -anpt|grep :23
查看到B的ip,但实际上是A在连接
在这里插入图片描述 在这里插入图片描述

SSH远程转发
原理

远程端口转发,起一个监听端口在远程(sshserver机器);然后转发所有向这个新起远程端口的请求,到本地机器(执行命令的机器),再到目标机器。

和本地端口转发的区别是:

 如果是本地转发,那么端口起在执行命令的机器上。
 如果是远程转发,那么端口其在sshserver的机器上。

在这里插入图片描述

HostB:关闭ssh远程访问
HostC:开启Telnet Server
HostA:开启ssh远程访问
需求:
 HostC只允许HostB进行远程登录(以Telnet方式)
 HostC拒绝HostA访问
 HostA允许HostB访问(以ssh方式)
 在HostB上设置远程转发
 在HostA上实现对HostC的远程访问

(1)关闭ssh远程登录服务,此时A不可ssh登录B

service sshd stop
在这里插入图片描述

(2)A开启ssh远程登录服务

service sshd start
在这里插入图片描述
创建用户wangwu
useradd wangwu
在这里插入图片描述

(3)B ssh远程登录A

ssh wangwu@192.168.58.134
在这里插入图片描述

(4)在B上设置远程转发

#ssh -R localport:remotehost:remotehostport -fN sshserver
#此处的端口号和本地转发一样,使用不存在的端口,此处我继续使用8000端口
#先查询ABC三台机子是否在使用8000端口,若正在使用,可以使用kill PID杀死进程,释放端口
在这里插入图片描述
设置转发规则:ssh -R 8000:192.168.58.136:23 -fN 192.168.58.134
在这里插入图片描述
查询端口是否出现:netstat -anpt|grep :8800
在这里插入图片描述

(5)在A上远程登录C

telnet 127.0.0.1 8800
创建文件 mkdir ddd
在这里插入图片描述

(6)在C上查看登录信息

netstat -anpt|grep :23
查看到B的ip,但实际上是A在连接
在这里插入图片描述查看ddd是否存在在这里插入图片描述

SSH动态转发
原理

当用firefox访问internet时,本机设置的端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet

在这里插入图片描述

HostB:开启ssh远程访问
HostC:开启Telnet Server
需求:
 HostC允许HostB访问其Web页(以http方式)
 HostC拒绝HostA访问
 HostB允许HostA访问(以ssh方式)
 在HostA上设置动态转发
 在HostA上设置浏览器代理
 在HostA上实现对HostC的Web页访问

(1)B开启ssh远程访问,C开启telnet访问功能

在这里插入图片描述在这里插入图片描述

(2)C上设置其web网页

cd /var/www/html
echo “www.c.com”>index.html
在这里插入图片描述
重启或开启http服务
service httpd restart/start

(3)在B访问C的web网页(以http方式)
在这里插入图片描述
(4)在A访问C的web网页(以http方式)

(5)在A上设置动态转发规则

ssh -D proxyport -fN sshserver
#此次我设置的端口号为1000,在使用前先查看端口号是否被占用
netstat -anpt|grep ssh
kill PID 杀掉进程,释放端口
netstat -anpt|grep ssh
killall ssh
ssh -D 1000 -fN 192.168.58.135

(6)在A上设置重新访问C

看有没有端口号1000
在这里插入图片描述
设置浏览器:编辑-首选项-高级-网络-设置-手动代理-socks,127.0.0.1,1000
在这里插入图片描述
浏览器重新访问C
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值