- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于SSH的网络安全解决方案
Internet是当今广泛使用的计算机网络,TCP/IP协议则是Internet采用的核心网络通信协议。由于TCP/IP协议本身缺乏可靠的安全机制以及Internet的开放性,其安全性就显得更加脆弱。目前有多种网络安全的解决方案,分别实现在TCP/IP协议栈的不同层次上:在物理层上使用机械或电器方法防止信息被非法窃取,如电磁泄漏保护;在数据链路层上使用硬件加密设备直接加/解密链路两端的数据或采用用于组建远程访问VPN的安全协议PPTP和L2TP创建安全通道;在网络层上通过基于IPSec规范的安全协议实现各种方式的VPN;在传输层使用SSL,TLS等安全协议提供端对端的安全通讯;在应用层则可以实现对某些特殊服务进行单独保护,如S-HTTP等。在众多的网络安全解决方案中,当然可以采用VPN和防火墙来保护自己的信息安全。然而,除了这些措施以外,很多公司实际上遗漏了一种不起眼但却很健壮有效的解决方案---(SSH(Secure Shell)。
1 SSH协议
1.1 SSH协议介绍
SSH,即Secure Shell,是一种介于传输层和应用层之间的加密隧道协议,具有C/S的体系结构。SSH可以在本地主机和远程服务器之间设置"加密隧道",并且这样设置的"加密隧道"可以跟常见的FTP,SMTP,POP应用程序,X应用程序相结和。目的是要在非安全的网络上提供安全的远程登陆和相应的网络安全服务。既然SSH是以提供安全服务为目标的协议,其中必不可少的是一套完备的密匙机制。由于SSH协议是面向互联网中主机之间的互访 与信息交换,所以主机密匙成为基本的密匙机制。即SSH要求每一个使用本协议的主机都必须至少有一个自己的主机密匙对,服务器方通过对客户方主机密匙的认证之后,才允许其连接请求。一个主机可以使用多个密匙,针对不同的密匙算法而拥有不同的密匙。
SSH在运行方式上,不像其他TCP/IP应用,被设计为工作于自己的基础之上,而不是利用包装(Wrappers)或通过Internet守护进程inetd运行。
1.2 SSH协议工作机制
根据IETF关于SSH草案的定义,SSH协议包含3个组成部分(层次)。
(1)传输层协议(SSH-TRANS)
SSH的传输层协议负责进行服务器认证,数据加密和完整性保护,并可以提供数据压缩的功能。SSH传输层协议是建立在提供"底层"可靠的TCP连接之上的,当然,也可以用在其他可靠的数据流协议中。传输层的认证是基于主机的(并非面向用户的认证),目的就在于为真正的上层应用提供安全保证。当SSH用在TCP/IP协议上时,SSH服务器一端一般会监听TCP22端口,一旦客户端和服务器端的TCP连接建立起来,SSH传输层协议就开始发挥作用了。在这个阶段,客户端和服务器要约定使用的SSH协议版本,要协商选定双方都支持的认证算法、加密算法、哈希算法和数据压缩算法。协商好认证算法和密匙交换方法后,服务器端会向客户端发送自己的主机密匙(HostKey),即服务器的公匙(PublicKey),以验证服务器的身份。双方还要依据协商好的加密算法生成一次性加密密匙,用于对整个商变更加密密匙。此外,传输层协议需要生成一个会话ID(Session Identifier),用于惟一标识本次会话连接。等所有这些过程结束后,客户端就可以向服务器发送服务请求了,服务器接受2类请求:用户认证服务(SSH-USERAUTH)和连接服务(SSH-COMMECTION)。
SSH支持的公匙算法有DSA和RSA,支持的对称密匙算法包括DES,3DES,Blowfish,Twofish,IDEA,ARCFOUR和CAST-128,支持的哈希算法有SHA-1,MD5等,支持Diffie-Hellman密匙交换方法。
(2)用户认证协议(SSH-UXERAUTH)
用户认证协议是建立在传输层协议之上的,当用户进行认证时,假定底层(传输层)协议已经提供了数据完整性和机密性保护。用户认证协议接受传输层协议确定的会话ID,作为本次会话过程的惟一标识。服务器首先会发起用户认证,他他会告诉客户端服务器所支持的认证方式,客户端可以从中选择。一旦用户认证成功,根据客户端的请求,服务器将会启动相应的服务(在连接协议建立的逻辑通道中进行数据传输)。SSH支持的用户认证方法包括:公匙认证方法、口令认证方法、基于主机的认证和PAM认证等。
(3)连接协议(SSH-CONNECT)
连接协议可以提供交互的Shell会话,支持远程命令执行,提供TCP端口以及X11连接转发功能。通过将惟一一个加密隧道(tunnel)多路复用成若干个逻辑通道,提供给更高层的应用协议使用。逻辑通道是由两端的通道号来惟一标识的。要启动某个应用服务,首先要建立一个新的逻辑通道,这期间,先要分配两端的通道号,协商缓存窗口的大小,然后是建立正式的会话,启动应用程序。各种高层应用协议可以相对独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
1.3 核心算法
以SSH协议2.0为例,其常用公匙算法RSA或DSA进行身份认证,用对称密匙算法3DES进行传输数据加密, 用Diffie-Hellman密匙协议算法交换密匙,用散列函数SHA-1或MD5进行完整性检测,用zlib进行数据压缩。
2 具体应用及安全模型
具体应用时,SSH可以提供3类服务:
2.1 安全远程登录和安全远程命令执行:替代传统的telnet和rlogin,rsh命令
网络遭受攻击,很多情况是由于服务器提供了Telnet服务引起的。对于UNIX系统,如果要远程管理他,必定要使用远程终端,而要使用远程终端,自然要在服务器上启动Telnet服务。但是Telnet服务有一个致命的弱点他以明文的方式传输用户名及口令,所以,很容易被第三者窃取口令。一种有效代替Telnet服务的工具就是SSH。用户要登录到远程计算机用户账号中,可以使用命令:
#ssh username@remotecomputer
整个登录会话在客户端和服务器之间传输时都是经过加密的,从而实现了安全远程登录。
对系统管理员来说,如果要查看局域网中4台计算机(A,B,C,D)上的每个用户启动的进程,按传统方法,可以使用rsh:
#!/bin/sh
for machine in A B CDdo
rsh¥machine/usr/ucb/w
done
虽然这种方法可以达到目的,却不安全。/usr/ucb/w的结果在网络上是明文传输的。可以利用SSH代替RSH,实现安全远程命令执行。
来源:维库开发网
上一篇:非线性控制理论在有源滤波技术中的应用
下一篇:简单网络管理协议的研究与应用