手机版
您的当前位置: 钻爱网 > 书信 > 通知 > 基于SSH与代理的数据安全传输机制的研究 传输机制

基于SSH与代理的数据安全传输机制的研究 传输机制

来源:通知 时间:2019-11-25 07:52:02 点击:

基于SSH与代理的数据安全传输机制的研究

基于SSH与代理的数据安全传输机制的研究 分别研究SSH和传输层代理技术的工作原理,提出基于SSH应用服务的传 输层代理实现方法,然后详细讨论TCP和UDP两种协议的代理实现和其中的端口 重定向实现,最后给出部分实现代码及端口重定向配置规则。

一、引言 传统的网络服务如FTP、Telnet和POP等是一些极不安全的信息安全数 据传输方式,造成不安全的因素主要有两方面。一是这些服务的客户端与服务器 的数据传输是采用明文的,用户名、密码和传输的内容很容易被截获。二是客户 端和服务器的认证方式过于简单,第三者很容易冒充服务器的身份来欺骗客户端 用户,从而获得客户端登录真实服务器所用的用户名、密码以及传输内容等。

二、SSH协议及其配置策略 目前的SSH协议有两个版本SSH1和SSH2,它们都是由客户端和服务 器两部分组成的,但是这两个版本是不兼容的[2],在此,我们采用SSH2。

SSH协议是基于TCP/IP协议栈的,它接收TCP/IP提供的服务,然后为 上层应用(服务)提供安全的数据传输服务。SSH的体系结构主要有三部分组成:
传输层协议,用户认证协议和连接协议。

SH软件有两个部分组成,一部分是服务器,一部分是客户端,它们 的通信过程如下:
1.要连接到服务器的客户端主机产生一对密钥,一个私钥和一个公钥。

私钥用来标识本地主机,存放在本地,通常为1024位,对私钥的保存提倡设置密 码。公钥用来存放在服务器的固定目录中,用于认证客户端用户身份。

2.启动服务器的sshd(SSH Daemon)服务。启动时系统会产生一个服务 器密钥(通常为768位),这个密钥在使用中通常每小时更换一次,并且不存在磁 盘上。

3.服务器不断检查是否有新连接,如果有,则把服务器密钥和客户端 公钥发送给客户端。4.客户接收到服务器密钥和客户端自身的公钥后产生一个随机数,使 用接收到的服务器公钥和客户端公钥加密这个随机数,并发送给服务器。

5.服务器和客户端把这个随机数用作对称加密算法的密钥,在通信中 对通信内容加密,在客户端还要使用客户端私钥产生数字签名,此后,双方即可 开始数据交换。

在使用代理前,首先要保证在没有代理服务器的情况下,各类业务均 能正常开展,然后再架设代理服务器,由代理服务器接收用户的请求并为用户服 务,在用户看来,代理是透明的。对于Open SSH,首先要安装服务器和客户端 软件包,然后分别对两部分配置。在我们应用中操作系统选择Fedora Core 4(FC4), SSH选择Open SSH4.3。

服务器端安装完成相关软件后即可启动SSH守护进程,默认的配置即 可正常工作,如需修改默认的配置信息,如监听的端口等,可以修改配置文件 /etc/ssh/sshd_config(默认安装)。

三、传输层代理技术 传输层代理要求分别实现对TCP和UDP的代理。TCP是一个面向连接 的协议,数据要在TCP连接上传输之前,连接必须通过“握手”的机制建立起来。

1.客户端先发送一个TCP包,它的标志字段中的第5位(从1计起)为1, 表示一个SYN包,序列号以ISN1表示;
2.服务器发回一个TCP包作为应答,它的标志字段第2位(ACK)与第5 位置1,表示一个SYN-ACK包,该包的序列号(ISN2)由服务器产生,确认号(Ack) 为ISN1+1;
3.客户端再发一个TCP包进行确认,它的标志字段的第2位置1,表示 一个ACK包,序列号为ISN1+1,确认号为ISN2+1。

UDP是一种无连接,不可靠的传输层协议,它的可靠性要在应用层验 证,因此对UDP协议的代理要比TCP简单得多,只要把客户端发过来的UDP包截 获,然后提取出应用层数据,再按原目的地址、原目的端口转发出去即可。

四、SSH代理系统设计SSH传输层代理体系结构,共由三部分组成:SSH客户端、SSH服务 器和代理服务器。SSH客户端和SSH服务器是通过代理服务器进行通信的,代理 服务器采用双网卡主机,分别连接SSH客户端和服务器。

要实现TCP协议的代理,在服务器端(简称S端,下同)与客户端(简称C 端,下同)之间需要完成两部分工作,一是要创建一个服务器端S1,它完成与C 端的握手、为C端提供服务。在C端看来,它是与S1通信。二是要创建一个客户 端C1,它完成与S1端的握手、接收S1的数据并发送给S、接收S的数据并发送给 S1。在S看来,它是与C1通信。以此思想在逻辑上隔断客户端与服务器端的直接 通信,确保高信任域内的网络安全。TCP协议代理流程如图1所示:
采用UDP的 应用层协议主要有DNS,TFTP,DHCP,RADIUS及一些用于即时通信的应用等。

在本应用中,UDP协议主要用来做域名解析,因此UDP数据包占用的网络带宽较 少,所以可以把接收到UDP的数据,按它原来的目的IP直接转发出去。

基于SSH的应用层协议主要有FTP,Telnet,POP等。对于FTP、POP 等默认的端口固定,而FTP一般有一个控制通道和多个数据通道,默认情况下控 制通道采用TCP的21端口,控制连接的建立是由客户端发起的,主要传输客户端 与服务器之间的命令及控制字信息。而数据连接要求客户端与服务器端协商建立, 有两种情形即两种模式,主动模式和被动模式。主动模式是从服务器端向客户端 发起;被动模式是客户端向服务器端发起。不管是被动模式还是主动模式,关键 要解决的问题是要确定数据连接所使用的端口。正是因为这种端口的不确定性, 使得我们在程序实现时不能只监听某些应用协议所使用的端口,但如果能将发向 这些事先未知或已知的端口的数据能发到一个统一的端口上,我们的程序只要监 听这个固定的端口就可以了,在此我们使用端口重定向技术。

在FC4下的iptables提供了端口重定向功能,netfilter/iptables是从 2.4x内核开始Linux使用的防火墙技术,包括包过滤和状态检测,在 iptables中有表,表中包含链及其规则,在此,根据需要要使用是iptables的nat表 及其PREROUTING规则。我们要在两个地方设置端口重定向,一是用户发出的 连接请求,一个是服务器发出的连接请求。

五、结论 本文结合两种安全技术SSH和传输层代理,解决了SSH在传输层代理 环境下如何实现数据安全传输的问题,从而进一步增强了系统与本地网络的安全性,同时还解决了客户机与服务器通信数据通道的唯一性问题,保证了数据通道 的可控性,增强了客户对系统安全性的管理与配置能力。

作者:尹 刚 来源:硅谷 2009年4期

推荐内容

钻爱网 www.zuanai.cn

Copyright © 2002-2018 . 钻爱网 版权所有 湘ICP备12008529号-1

Top