基于SSH协议的攻击与防范

时间:2022-10-30 12:21:20

基于SSH协议的攻击与防范

摘要:剖析了SSH协议针对恶意登录、数据监听、伪服务器欺骗、重放攻击和中间人攻击的防御作用。

关键词:SSH协议 安全传输 安全认证 攻击

1前言

传统telnet联机会话所传输的资料并未加密,很可能会遭人窃听。SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定。SSH是一个非常流行的在客户端-服务器中进行客户认证和网络通信加密的软件包,是专为远程登录会话和其它网络服务提供安全性的协议。利用SSH协议用于远程连接,可以有效防止远程管理过程中的信息泄露问题,相对telnet提供了强大得多的安全性。

2 SSH协议的内容

SSH协议采用公钥认证方式,如果公钥验证成功,客户端使用自己本地密钥对的私钥部分,对特定报文进行摘要运算,将所得的结果(即数字签名)发送给服务器,向服务器证明自己的身份;服务器使用预先配置的该用户的公钥,对客户端发送过来的数字签名进行验证。

SSH实现认证连接过程如下:客户端要连接到SSH服务器上,由客户端软件向服务器发出请求,客户端与服务器协商以较低的协议版本号进行工作;服务器收到请求之后,在服务器的用户根目录下寻找到公有密钥,请求客户端用私有密钥进行安全验证。如果两个密钥一致,服务器就用公有密钥加密并把它发送给客户端软件。客户端软件收到后用私有密钥解密再把它发送给服务器。接着由客户端依据服务器提供的两个公钥及64位随机数确定会话号及会话密钥;最后完成认证。

SSH协议客户端和服务器端之间通信使用的加解密密钥,都是通过密钥交互过程动态生成的,在通信双方部署密钥。利用密钥交换算法可以在通信双方动态地产生密钥,这个密钥只能被通信的双方获得,任何第三者都无法窃听,这就在源头上保证了加解密使用密钥的安全性,很好地解决了密钥分发问题。

3攻击与防范对策

3.1恶意登录的防范

SSH-1协议的几个实现中存在CRC32漏洞,黑客利用CRC32漏洞不用密码而取得远程帐户权限。通过22端口使用SSHCRC 32工具进行登录攻击,攻击者通过向有漏洞的主机发送构造好的SSH1包,在从32字节往16位字节的整数分配时有可能会产生溢出,这会导致暴露混乱列表偏移,可以导致SSH守护进程产生值为0的哈希表,导致获取登录权限提升。一旦成功登录,通过SSH扫描工具来扫描其它的SSH服务器。

阻止这些攻击可以使用的方法有:关闭daemon服务;在SSH服务器上安装一个防火墙,用于隔离内部和外部的网络;将SSH服务器的监听端口从22改为其它的端口,或者屏蔽到服务器22端口的所有流量,以降低发现SSH daemon服务的可能性;安装补丁。

3.2数据监听的防范

通常可采取数据防范加密防范网络监听,即使攻击者获得传输数据,如果不能破译,数据也是安全的。SSH加密通道上的数据来防范数据监听。

SSH加解密使用对称密钥算法,支持的算法有DES、3DES、AES等。这些算法都使用健壮的密钥长度;采用初始化向量保护,可以防止类似于密码流复用等密码分析工具的攻击,从而保护核心数据的安全。更为重要的是,SSH具有很好的扩展性,允许在系统中注册使用者自己创建的算法,很多算法都可以在系统中注册。使用一个由多种算法组成的集合,即使一种算法被破解,SSH协议也可以很容易的切换使用其它算法。

3.3对“伪服务器欺骗”的防御

用户认证机制只实现了服务器端对客户端的认证,而客户端无法认证服务器端,因此存在着“伪服务器欺骗”的安全隐患。攻击者可能是来自一台服务器,它假冒客户端要连接的服务器。如果在连接过程中,服务器不经过认证,这种攻击是可能成功的。

为了防止类似这样的伪服务器欺骗,SSH协议支持客户端对服务器端进行认证。在SSH协议中,除了第一次连接到服务器这种情况外,服务器是要被认证的,而且认证是在用户身份认证之前进行。一台服务器要提供远程服务,必须公布它的主机密钥的公钥部分。服务器端在密钥交换阶段,使用自己的私钥对一段固定格式的数据进行数字签名,并将该签名发往客户端,客户端使用本地保存的服务器公钥,对签名进行鉴别,从而达到认证服务器的目的。

3.4重放攻击的防御

重放攻击指攻击者通过截获发送的数据包,延迟一段时间后发送,通过发送目的主机已接收过的包,来达到欺骗系统的目的,破坏身份认证的正确性。

对付重放攻击的方法是在消息中加入时间戳或产生一个随机数,并加密传送消息,SSH协议在会话密钥交换阶段和用户认证阶段,都在数据包中加入了随机数,因此,采用SSH协议可以避免重放攻击。

盗取cookie与提交cookie也是一种重放攻击。SSH协议客户端和服务器端之间通信使用的加解密密钥,都是通过密钥交互过程动态生成的,可以避免该类重放攻击。

3.5中间人攻击的防御

中间人攻击是指攻击者与正在进行通讯的两端分别建立独立的联系,并交换其所收到的数据,而通讯的两端误认为他们正在通过一个私密的连接与对方直接对话。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。

Dsniff是一个非常强大的工具套件,ARPspoof、driftnet、Msgsnarf、Urlsnarf、Mailsnarf、Filesnarf和dnsspoof都是Dsniff套件的一部分,它被用来实施嗅探、网络分析,进行渗透测试能够捕捉各种协议。Dsniff依赖于一些第三方软件包,包括Berkeley DB、OpenSSL等。攻击者在其主机上通过OpenSSL提供的代码生成伪造的证书,以欺骗目标主机,使之相信它要前往的地方在电脑空间里已经被轻微地移动,攻击者就是有效的通信另一方。导致由攻击者重定向SSH和HTTPS会话,结果是,攻击者主机成了SSH安全通道的中转站。攻击者可以捕获某个SSH会话的登录口令,甚至可以“劫持”整个会话过程。

要防范MITM攻击,可以使用的方法有:① 修改安全性策略。当SSH被欺骗更改了网关地址时,由SSH客户机发出噪声并显示一条警告,通知发生了更改。 ②把SSH-1升级到SSH-2。SSH2较SSH1已经有了较大改进,可选择自由软件Openssh,它同时支持SSH1及SSH2标准,是个被广泛使用的SSH软件包。

4结束语

本文剖析了SSH协议针对恶意登录攻击、数据监听、伪服务器欺骗、重放和中间人攻击的防御作用。总之,SSH代表着“安全外壳”,通过加密和认证机制,实现安全的远程访问以及文件传输等业务,是进行远程登录操作时的必备选择。笔者希望你能在此文中发现一些有价值的东西,从而有利于你用SSH更好地为你工作。

参考文献:

[1][美])Anoymous.最高安全机密(第3版)[M].北京机械工业出版社,2002.

[2]张杰,戴英侠.SSH协议的发展与应用研究[J].计算机工程,2002,28(10).

[3]张焕明,宋振锋.SSH协议分析[J].暨南大学学报(自然科学版),2006,24(9).

上一篇:如何进一步打造保险业核心价值观 下一篇:长三角航空货运发展现状及未来战略思考