ssh端口转发小结


关于ssh端口

     SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是, SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”,这是因为SSH为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名, 密码以及隐私信息的明文传输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH 进行通讯

ssh端口转发的两大功能

两大功能:

  • 加密 SSH Client 端至 SSH Server 端之间的通讯数据
  • 突破防火墙的限制完成一些之前无法建立的 TCP 连接

ssh端口转发的三种方式

  • ssh端口本地转发
  • ssh端口远程转发
  • ssh端口动态转发
     
    1.本地转发
     
       格式:ssh -L localport:remotehost:remotehostport sshserver
          localport : 本地开启的端口号
          remotehost : 远程要连接的IP
          remotehostport : 转发机的端口号
          sshserver : 转发机的IP
     
       选项:
          -f 后台启用
          -N 不打开远程shell,处于等待状态(不加-N则直接登录进去)
          -g 启用网关功能
          -L 启动本地端口转发
          -D 动态转发
     
    实验一:ssh的本地转发实现
      前提:C服务端,B跳板机,A客户端,C的23端口只有B才能访问,其他拒绝访问,A和B可以通过ssh互相访问
    ssh端口转发小结
      如图所示:A的数据一旦telnet以后,数据会发送到本机9527端口,再在本机开一个随机端口,充当ssh客户端,再把数据流量发送到22端口的ssh服务端,收到数据以后,解密数据,临时开一个随机端口充当客户端,再把流量发送到23端口telnet服务端
      实验的流程:
        A->C 访问被限制
        A-B->C 使用B主机作为跳板突破访问限制
      操作如下:
      首先在C服务器上开启23端口,添加策略
    iptables -F
    iptables -A INPUT -s B -p tcp  - -dport 23 -j ACCEPT
    iptables -A INPUT -p tcp --dport 23 -j REJECT

      这个时候A和C是不通的,连接拒绝,然后回到A上做本地转发

    ssh -L 9527:A:23 -fN B

      现在A可以通过telnet利用9527端口与C进行访问

    telnet 127.0.0.1 9527

     
    2.远程转发
     
       格式:-R sshserverport:remotehost:remotehostport sshserver
          sshserverport 被转发机器开启的端口号
          remotehost 最终连接机器的IP地址
          remotehostport 被转发机器的端口号
          sshserver 被转发机器的IP地址
    实验二:ssh的远程转发
    前提:让ssh service侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到A,再由本机解密后转发到telnet service:23
      实验的流程:
        C->A (拒绝访问)
        C-B->A (通过远程代理,接受访问)
    操作如下:
    首先C开启邮件服务

    systemctl restart postfix 

    然后在ssh service 上打开隧道

    ssh -R 9527:C:25 -fN A

    最后在A上给C发邮件

    telnet 127.0.0.1 9527
    mail from:[email protected]
    rctp to:xxxx@xxxx

    3.动态转发
     
       格式:ssh -D port user@sshserver
          port :代理服务器开启的代理端口
          ssherver : 远程的代理服务器地址
     
    ssh端口转发小结
     
    实验三:ssh的动态转发
    前提:在企业内部或者网络中,基于安全策略不能随便访问互联网某些站点,当用A访问C时,本机的代理端口做为代理服务器,A的访问请求被转发到代理服务器上,由代理服务器替之访问C
    实验的流程:
        A -> C (拒绝访问)
        A-B -> C (通过远程代理,接受访问)
    操作如下:
    首先C上添加策略,A拒绝访问,只有B可以

    iptables -A INPUT -s A -j REJECT

    然后再B上输入如下代码,开启代理

    ssh -fND 1080 root@B

    在A的里验证是否可以访问

    curl --socks5 127.0.0.1 C   #默认端口就是1080

    基于网页验证,打开浏览器的设置,选择代理设置,添加代理,在套接字一栏中填入
     
    ssh端口转发小结
     

当本地1080端口受到外部网站请求会转发到外部服务器上面去,代理服务器通过1080端口把请求转发到站点服务器上面去此时方可正常访问外部站点

猜你喜欢

转载自blog.51cto.com/13805636/2171085