Too young, too simple. Sometimes, naive & stupid

SSH协议

为什么使用SSH

潜在的入侵者可以使用各种工具,是他么能够中断、拦截和重新路由网络流量,从而获得对计算机系统的访问权限。一般来说,威胁可以分为以下几类:

拦截两个系统之间的通信

​ 攻击者可以在通信方面的网络上的某个地方,复制他们之间传递的任何信息。他可以拦截并保留信息,或者更改信息并将其发送给预期的收件人。

​ 此流量通常使用数据包嗅探器执行,数据包嗅探器是一种相当常见的网络实用程序,可捕获流经网络的每个数据包,并分析其内容。

假冒特定主机

​ 攻击者的系统被配置被构成传输的预期接收者。如果此策略有效,则用户的系统仍然不知道它正在与错误的主机通信。

​ 可以使用称为DNS poisoning的技术或通过所谓的IP欺骗来执行此攻击。在第一种情况下,入侵者使用破解的DNS服务器将客户端系统指向恶意复制的主机,在第二种情况下,入侵者发送看似来自可信主机的伪造网络数据包。

这两种技术都可以拦截潜在的敏感信息,如果拦截是出于敌意的原因,结果可能是灾难性的。如果使用SSH进行远程shell登录和文件复制,则可以大大减少这些安全威胁。这是因为SSH客户端和服务器使用数字签名来验证其身份。此外,客户端和服务器系统之间的所有通信都是加密的。欺骗通信双方的身份是行不通的,因为每个数据包都使用仅由本地和远程系统知道的秘钥加密。

 主要特点

SSH协议支持以下安全措施:

没有人可以冒充目标服务器

​ 初始连接后,客户端可以验证它是否可以连接到之前连接的同一服务器。

没有人可以捕获身份验证信息

​ 客户端使用强大的128位加密将其身份验证信息传输到服务器。

没有人可以拦截通信

​ 在会话期间发送和接受的所有数据都使用128位加密进行传输,使得截获的传输极难解密和读取。

此外,它还提供一下选项:

它提供了通过网络使用图形应用程序的安全方法

​ 使用称为X11转发的技术,客户端可以从服务器转发。

它提供一种保护其他不安全协议的方法

​ SSH协议加密它发送和接受的所有内容。使用称为端口转发的技术,SSH服务器可以成为保护其他不安全协议(如POP)以及提高整体系统和数据安全性的渠道。

它可用于创建安全通道

​ 可以将OpenSSH服务器和客户端配置配置为为服务器和客户端计算机之间的流量创建类似于虚拟专用网络的隧道。

它支持Kerberos身份验证
​ 可以将OpenSSH服务器和客户端配置为使用Kerberos网络身份验证协议的GSSAPI(通用安全应用程序接口)实现进行身份验证。

协议版本

目前存在两种SSH: version 1和新的 version 2,其具有增强的秘钥交换算法,不易受版本的已知漏洞攻击。

SSH连接的事件序列

以下系列事件有助于保护两台主机之间SSH通信的完整性。

  1. 进行加密握手,以便客户端可以验证它是否在与正确的服务器通信。
  2. 使用对称加密对客户端和远程主机之间的连接的传输层进行加密。
  3. 客户端向服务器验证自身。
  4. 客户端通过加密连接与远程主机交互。

传输层

传输层的主要作用是在认证时和后续通信期间促进两个主机之间的安全通信。传输层通过处理数据的加密和解密,以及在发送和接收数据分组时提供分组的完整性保护来实现这一点,传输层还提供压缩,加速信息传输。

SSH客户端与服务器联系后,将交换秘钥信息,以便两个系统可以正确构建传输层。在此交换期间发生以下步骤:

  • 秘钥交换
  • 确定公钥加密算法
  • 确定对称加密算法
  • 确定消息验证算法
  • 确定哈希算法

在密钥交换期间,服务器使用唯一的host key向客户端标识自己,如果客户端之前从未与此特定服务器通信,则服务器的主机密钥对客户端是未知的,并且它不会连接。OpenSSH通过接受服务器的主机密钥来解决这个问题。这是在通知并且已接受并验证新主机密钥之后完成的。在后续连接中,将根据客户端上保存的版本检查服务器的主机密钥,从而确保客户端确实与目标服务器进行通信。如果将来主机秘钥不在匹配,则用户必须在连接之前删除客户端保存的版本。

SSH旨在用于几乎任何类型的公钥算法或编码格式。在初始密钥交换创建用于交换的哈希值和共享密钥值之后,两个系统立即开始计算新密钥和算法以保护通过连接发送的认证和未来数据。

在使用给定密钥和算法传输了一定量的传输之后(确切的数量取决ssh实现),发生另一个密钥交换,生成另一组散列值和新的共享秘密值。即使攻击者能够确定哈希值和共享密钥值,此信息仅在有限的时间段内有效。

认证

一旦传输层构建了一个安全隧道以在两个系统之间传递信息,服务器就会告诉客户端支持不同的身份验证方法,例如使用私钥编码签名或输入密码。然后,客户端尝试使用这些支持的方法之一向服务器验证自身。

可以将SSH服务器和客户端配置为允许不同类型的身份验证,从而为每一方提供最佳控制量,服务器可以根据其安全模型决定它支持哪些加密方法,客户端可以出从可用选项中选择验证方法的顺序。

通道

在通过SSH传输层成功进行身份验证之后,通过multiplexing技术打开多个通道,这些通道中的每一个都处理不同终端会话和转发X11会话的通信。

客户端和服务器都可以创建新通道。然后在连接的每一端为每个通道分配不同的编号。当客户端尝试打开新通道时,客户端会发送通道号以及请求。该信息由服务器存储,因此当给定会话结束时,可以关闭其通道而不会中断主SSH连接。

通道还支持流量控制,允许他们已有序的方式发送和接收数据。这样,在客户端收到通道打开的消息之前,不会通过通道发送数据。

客户端和服务器自动协商每个通道的特征,具体取决于客户端请求的服务类型以及用户连接到网络的方式。这使得处理不同的远程连接具有很大的灵活性,而无需更改协议的基本基础结构。