科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道用SSH构建安全的集成网络开发环境

用SSH构建安全的集成网络开发环境

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SSH是一个安全、灵活、强大的工具,用它来构建的网络开发环境具有成本低,安全性高,集成度好的优点,提高开发、调试、跟踪、测试的效率,也同样可以降低后期维护的成本和难度,具有较高的实用价值。

作者:比特网 来源:比特网 2009年2月2日

关键字: 企业安全 ssh

  • 评论
  • 分享微博
  • 分享邮件

  1、引言  

      在基于网络的分布式应用的开发及维护过程中,开发人员和维护人员通常都会遇到一些比较令人恼火的情况,就是很难安全、方便地集中开发、跟踪调试或维护处于多台服务器上的程序。当这些服务器处于物理上相隔遥远的不同网络、里外又有多重防火墙阻隔时,情况就会更加糟糕。如果说开发阶段在实验室里来回跑还能忍受的话,那到了实际运行维护的阶段,如果没有事先计划好的方案,不但会带来高昂的维护成本,而且诊断难度也会加大。

  笔者在参与一个分布式应用项目的开发过程中,考虑到所有的服务器均运行Linux系统,因此采用SSH构建了一个安全、集成的网络开发环境。

  2、SSH相关技术

  SSH是一个类似于telnet和rsh的远程访问工具,当初设计的目的就是为了取代缺少安全性的rsh、rcp和rlogin命令。SSH分为客户端和服务端两部分,客户端发起TCP连接,与服务端握手协商双方共同使用的协议版本、身份认证算法和加密算法,最终与服务端建立起一条安全的通信信道。SSH的优点之一是透明性,其认证、加密和完整性检查都是由SSH协议在后台进行的,对使用者而言,用SSH获得的终端会话和telnet没什么区别。

  2.1 TCP端口转发

  除了安全性,SSH的另一强大之处是其端口转发功能。有了这个功能,象电子邮件这类TCP程序就能利用SSH的安全信道来收发电子邮件了。其工作原理如图1:SSH客户端额外分配一个端口,比如说7506,并在这个端口上侦听;配置电子邮件客户端,将邮件服务器的地址和端口指向SSH客户端的7506端口;电子邮件客户端发起连接,请求邮件,这些请求由SSH客户端接收,封装成SSH协议,经由已经建立的SSH安全信道发送给SSH服务端;SSH服务端收到后,往真正的邮件服务端转发,然后把接收到的信息经由SSH客户端返回给邮件客户端。SSH端口转发的另一好处是:在任意两台计算机之间,只要能建立起SSH连接,象电子邮件这类应用程序就能绕开网络拓扑或防火墙规则的限制,畅行无阻。

  图1所示的情况叫本地端口转发,还有另一种情况叫远程端口转发,原理是一样的,不同的只是转发的方向,如图2所示。

  [img=343,181]http://www.ahcit.com/back/200911214439293.jpg[/img]

  图1 本地端口转发

  

  图2 远程端口转发

  2.2 X转发

  X是UNIX下的窗口系统,其基本思想也是使用客户端/服务器模式。X客户程序运行于主机,X服务则运行在终端设备上,两者间使用X协议通信。正如普通网络客户程序可以连接不同的服务器一样,X客户程序也可以根据需要请求不同的X服务,将窗口显示在该X服务控制的显示设备上。但X协议同样不是一个安全的通信协议。

  X客户程序一般都有一个-d 参数,用以指定显示位置,默认显示位置为环境变量$DISPLAY。显示位置的格式是 HOST:n.v,HOST是X服务所在地址,n是显示器号,v是虚拟显示器号。

  X转发与TCP端口转发的思想类似,事实上,X转发可以看作是一种特殊的TCP端口转发,其工作原理如图3。一旦启用了X转发选项,SSH服务端将额外打开一个侦听端口6010,将自己伪装成一个拥有第10号显示器的X服务,并将用户的shell的DISPLAY环境变量置为localhost:10.0 (X服务的端口6000对应显示器号0,端口6001对应显示器号1,···以此类推),这样该用户的X客户程序就将所有的X请求发给SSH服务端的6010端口,然后通过SSH安全信道转发至SSH客户端,SSH客户端再转发给真正的X服务,让X服务显示窗口,接收用户的键盘、鼠标输入。

  

  图3 X转发

  3、构建集成的网络开发环境

  3.1 网络拓扑结构

  在笔者参与的项目中,网络拓扑结构见图4。

  多个局域网通过Internet互连,每个局域网又通过防火墙分隔成2个子网,应用程序分布于A、B、C、D等计算机上(运行Linux操作系统),通过网络互相协作。用于开发的计算机是M,运行Windows操作系统。由于子网的分隔和防火墙的阻挡,除了A,M是无法直接访问B、C、D的。为了在M上获得A、B、C、D的桌面环境,需要在M上安装类似于Xmanager这样的X服务端仿真软件。

  

  图4 网络拓扑结构

  3.2 Xmanager

  Xmanager是一款运行于Windows环境下的X服务器仿真软件,集成了SSH客户端软件Xshell,以及其它一些SSH工具。

  3.3 构建方法

  在M上获得A的桌面是比较容易的,因为两台机器在同一个子网中。我们可以使用XDMCP协议让Xmanager进行广播,找到A,然后登录,从而获得A的整个桌面环境。但在这种方式下,不管是XDMCP协议还是X协议都是没有任何保护的。

  另一种方法就是使用SSH的X转发功能,先配置Xshell,告诉它X服务(Xmanager)的位置,然后用Xshell使用SSH协议建立一条从M到A的安全通道,登录后,就可以运行任何X或非X的命令了。如果是X命令,其窗口就会显示在M的Xmanager窗口中。Linux的完整桌面其实是由一系列X程序组成的,所以我们能够用这种办法得到A的完整的桌面环境,方法是运行命令 /etc/X11/xdm/Xsession。

  对B而言,就无法用XDMCP协议获得其桌面环境了。根据防火墙规则的不同,又能分为下面两种情况:

  (1)可以建立起从M到B的直接或经过中继的SSH通道:比如先用Xshell使用SSH协议建立一条从M到防火墙F2的安全通道,登录后,运行防火墙自带的SSH客户端程序继续建立从F2到B的安全连接,并且获得B的shell,然后就可以在这个shell下运行各种命令了,当然也就可以获得B的整个桌面了。或者SSH的路径是从M到A再到B,方法都是一样的。

  (2)没有任何办法可以建立起从M到B的SSH连接:在这种情况下我们还是可以在M上获得B的桌面,从而获得B的完整控制权。方法就是在计算机B上先进行配置,让它的XDM认为除了本地的X服务外,还有另外一个X服务在运行。这额外的X服务运行在计算机A上,由A的SSH服务端伪装而成,而从M到A的SSH通道是很容易建立的。这样,当B的X系统启动时,在M上就能获得B的桌面了。当然,这种方法的一个安全缺陷是从B到A的X通信没有加密保护。

  对处于不同局域网的C和D来说,情况和B是类似的,总是能够在SSH的协助下,在M上获得其X窗口或整个桌面环境。

  3.4 管理方法

  为了在M上管理控制众多的不同计算机,笔者采用了两种办法:一是利用Linux桌面的虚拟桌面功能,在不同的虚拟桌面上运行同一局域网、不同子网的计算机上的程序;二是运行多个X服务(Xmanager),各服务依次运行于端口6000(对应于显示号0)、6001(对应于显示号1)···每个Xmanager实例对应一个局域网。当然事先要配置好Xshell,告诉它连接哪个X服务。

  这样,笔者就在自己开发的计算机上安全地得到了整个网络的控制权,可以在图形界面下开发、调试、跟踪、测试处于网络各个位置的程序。对于分布式应用而言,这种集成环境不但提高了开发测试阶段的工作效率,而且对后期的维护阶段而言,只要事先认真规划设计,也会在不降低安全级别的基础上,降低维护的成本和难度。

  4、结束语

  SSH是一个安全、灵活、强大的工具,用它来构建的网络开发环境具有成本低,安全性高,集成度好的优点,提高开发、调试、跟踪、测试的效率,也同样可以降低后期维护的成本和难度,具有较高的实用价值。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章