- 作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。
- 座右铭:低头赶路,敬事如仪
- 个人主页:网络豆的主页
前言
本章将会讲解会话层安全协议。了解会话层安全协议的作用。
一.会话层安全协议
1.背景介绍
一些传统的网络服务程序,如FTP、TELENT、RLOGIN、RSH和RCP,在本质上都是不安全的。因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就截获这些口令和数据。
而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到中间人(Man In TheMiddle)这种方式的攻击。
- 所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器,接收你传给服务器的数据,然后再冒充你,把数据传给真正的服务器。
- 服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
- 以ARP“中间人”攻击为例,按照ARP协议的设计,一个主机收到的ARP应答即使并非自身请求得到的,也会将其IP地址和MAC地址的对应关系添加到自身的ARP映射表中。
- 这样可以减少网络上过多的ARP数据通信,但也为ARP欺骗创造了条件。
通过安全外壳协议(Seeure Shell Protocol.SSH)可以部分解决这样的问题。SSH是介于传输层和应用层之间的安全协议(即OSI模型中的会话层,图中显示了SSH在协会话层安生议栈中的位置),专为远程登录会话和其他网络服务提供安全性协议,通过使用SSH可以把所有传输的数据进行加密,这样“中间人”的攻击方式就不可能实现了。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。现行的SSH标准由IETE的Secure Shell工作小组(Secure Shell Group)制定。SSH易于安装、使用简单,一般的开源系统UNIX平台,包括FreeBSD、HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix、SCO等都可以运行SSH。而且在UNIX作平台以外,包括OS/2、VMS、BeOS、Java、Windows平台,都随系统附带有支持SSH的应用程序包。
2.SSH协议简介
SSH协议是一个分层协议,如图5-5所示。由三层组成,即传输层协议,用户认证协议,连接协议 同时,SSH协议框架还为许多高层的网络安全应用协议提供扩展支持。
(1)在SSH的协议框架中,传输层协议(The Transport Layer Protocol.TTLP)提供服务器身份认证、通信加密、数据完整性校验以及数据压缩等多项安全服务。
(2)用户认证协议(The User Authentication Protocol.TUAP)则为服务器提供客户端的身份鉴别机制。
(3)连接协议(The Conneetion Protocol.TCP)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用:各种高层应用协议可以相对独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
3.SSH传输协议
SSH传输层协议主要在不安全的网络中为上层应用提供一个加密的通信信道。
SSH传输层协议提供服务器身份认证、通信加密、数据完整性校验以及数据压缩等多项安全服务。双方通信所需要的密钥交换方式、公钥密码算法、对称密钥密码算法、消息认证算法和哈希算法等,都可以进行协商。
传输层协议通常运行于TCP/IP之上,也可以是其他可靠的底层协议,运行SSH传输层协议,产生一个会话密钥和一个唯一会话ID。
(1)SSH数据包内容
(2) 版本协商
目前的SSH实现中,比较普遍的协议版本号是SSH2.0。但是因为还有一些网络设备上运行的是比较老的版本,所以实现时必须考虑版本兼容性问题。
当TCP连接建立之后,通信双方都必须向对方发送自己的版本字符串,其中包括SSH的协议版本号、软件版本号等,版本字符串的最长是255字节。
版本协商包括两种情况:
- 旧版本的客户端和新版本的服务器端之间
- 新版本的客户端和旧版本的服务器端之间
- 新版本的服务器端创建时,必须有一个可以配置的兼容选项,来控制是否兼容旧版本的客户端登录。
- 如果兼容,这个服务器端在版本协商阶段往对端发送的协议版本号就是1.99。
- 如果是2.0的客户端登录,1.99和2.0的服务器端对于它来说应该是一致的,
- 而对于1.5及以下的客户端来说,1.99意味着这个服务器兼容1.5的版本,版本协商可以通过。
- 如果服务器配置成不兼容2.0的协议,那么它向对端发送的协议版本号就是2.0。当1.5的客户端登录时,发现对端的协议版本号是2.0.版本协商就不会成功,双方断开TCP/IP连接。
当新版本的客户端登录旧版本的服务器时,由于客户端不能去兼容服务器,所以遇到旧版本服务器的时候,客户端必须断开连接,使用旧版本再去登录。版本协商阶段,双方交互的数据都是以明文方式传输的。
(3)算法协商与密钥交换
版本协商成功后,双方就开始采用二进制数据包进行通信。由服务器向客户端发送第一个包.内容为自己的RSA主机密钥(Host Key)的公钥部分、RSA服务密钥(ServerKey)的公钥部分、支持的加密方法、支持的认证方法、次协议版本标志以及一个64位的随机数(Cookie)。这个包没有加密,以明文方式发送。
算法协商成功后,双方进入密钥交换阶段。密钥交换的目的是生成双方通信的公钥,用于后续数据的加密。这个密钥是经过双方协商产生的,双方中的任意一方都不能单独生成这个密钥。
密钥交换的基本原理如下(了解)
创作不易,求关注,点赞,收藏,谢谢~