SSL/TLS和SSL VPN

1、SSL/TLS

**SSL安全套接字层:**是一种加密协议,用于在网络通信中建立安全连接。它在应用层和传输层(TCP/IP)之间提供数据加密、服务器身份验证以及信息完整性验证

SSL只保护TCP流量,不保护UDP协议

**TLS:**传输层安全协议

在SSH3.0版本后,更名为TLS

SSL协议中包含多个子协议,它们协同工作以确保通信的安全性

**SSL握手协议:**允许服务器和客户端相互认证,并在应用层协议传输数据之前协商出加密算法,哈希算法,和会话密钥等,然后通过这些参数去构建SSL会话

**SSL密码变化协议:**只有changecipherspec这一个信息,客户端和服务器都可以发送,目的是通知对端,后续的报文都将使用新协商后的加密套件和密钥进行保护和传输

**SSL告警协议:**告警机制,用于在SSL通信过程中传递与安全性相关的告警信息

**SSL记录协议:**用于封装高层协议的数据,对应用层数据加密之后,放置在记录层中

这四个协议并不一定同时会出现,握手协议,密码变化协议和告警协议可能在建立SSL会话时按照顺序出现,在数据传输过程中主要出现的是记录协议

1)SSL工作流程

第一步:TCP三次握手,建立网络连接会话

第二步:Client Hello

**客户端的随机数:**是生成会话密钥的一个参数,该会话密钥需要三个参数共同计算出来

**加密套件:**将加密算法、鉴别算法常用的组合搭配在一起,用于进行选择

第三步:Server Hello(SSL服务器回复消息)

**注意:**一般情况下,server hello和服务器的证书是分开发送的,当然也可以在一个数据包中发送

服务器证书是由CA机构颁布的,是通过CA机构的私钥,将服务器的公钥以及一些证书相关的信息进行加密之后的产物。客户端本身具有信任CA的公钥,则可以使用CA机构的公钥对服务器证书进行解密,之后得到服务器的公钥。
**注意:**服务器的身份认证是强制要求的,必须提供证书,证书如果不合法,则会提供一个选择给客户,可以选择继续访问。但是客户端的认证是可选的,如果需要认证,则服务器会发送请求证书的报文,之后,需要客户端提供自己的证书

Server key exchange: 用于提示密钥变更
**Server hello done:**一条空信息,用于通知客户端服务器已经做好协商最终密钥的准备

也可以通过一个数据包来发送server hello以及证书等信息。

第四步:客户端回应

**Pre-master-key:**预主密钥,本质也是一个随机数,用于计算最终的会话密钥,但是这个参数可以被服务器的公钥进行加密传输(电脑生成的随机数是伪随机数,所以使用三个伪随机数计算最终的密钥,会更加安全一些。)

第五步:服务器回应

在客户端中,可以携带这个会话复用票据,用于省略会话建立过程中,身份认证的环节,仅协商算法和密钥即可

会话票据:客户端在下次与服务器通信时,可以携带这个Session Ticket,以告知服务器自己希望复用之前的会话密钥。

如果服务器验证通过Session Ticket的有效性,就可以直接使用其中的会话密钥,而无需再次进行完整的TLS握手过程

1、无客户端认证的握手过程

2、有客户端认证

3、会话复用场景

**SSL工作流程总结:**在TCP三次握手建立网络连接后,客户端向服务器发送Client Hello与服务器协商参数,服务端回复Server Hello确认参数并发送证书。客户端验证服务器证书,生成并使用服务器公钥加密发送预主密钥。服务器解密预主密钥并生成会话密钥,使用会话密钥进行数据传输

2)SSL协议数据传输流程

**1. 分片(Fragmentation):**SSL协议会将较大的应用数据分成较小的数据块进行传输,以避免单个过大的数据包可能造成的网络拥塞或处理不当的问题

**2. 压缩(Compression):**SSL 3.0及其后续版本支持数据压缩功能,以减少通过网络传输的数据量,从而加快数据传输速度并节约带宽

**3. 增加HMAC(Hashing):**HMAC是一种数据完整性检验方法,用于确保数据的完整性不被破坏。SSL协议使用HMAC来确保消息的完整性,防止数据在传输过程中被篡改。

**4. 加密(Encryption):**SSL协议通过使用对称密钥加密算法(如AES、DES、3DES等)对应用层数据进行加密,以确保数据的保密性。

**5. 增加SSL记录首部(Record Header):**SSL协议的记录层负责将应用层数据转换为SSL记录,并为每个记录添加首部信息,包括版本号、SSL记录类型、序列号、以及是否包含压缩选项等信息。首部信息之后是对称密钥加密后的应用层数据。SSL记录首部提供了SSL记录的元信息,帮助后续的解密过程正确地组装和解密记录层的数据。

SSL协议脆弱性分析:

  1. 无法保护UDP应用
  2. 客户端假冒
  3. SSL协议不能对抗流量分析

2、SSL VPN

IPSEC在Client to LAN场景下比较吃力的表现:

  1. 在用户认证方面比较薄弱
  2. 因为需要进行参数协商,所以,IPSEC VPN需要客户端安装对应的应用程序;
  3. 因为需要进行感兴趣流的抓取,所以,策略需要进行调整,不太方便;
  4. 因为IPSEC VPN是基于网络层和传输层进行权限管理,但也仅能深入到服务层面,如果我们需要一款可以针对应用层面进行更细细颗粒管理的VPN技术,就不能选择IPSEC VPN

SSL VPN的优势:

  1. 因为SSL协议封装在传输层和应用层之间,仅针对应用层的数据进行保护,这样,在进行组网时,任何场景下都不会影响到网络传输;
  2. SSL VPN采用的是一种基于B/S架构的模式,所以,只要客户拥有浏览器就可以访问,方便快捷;
  3. 最主要的是,和IPSEC VPN针对网络层的控制相比,SSL VPN可以基于应用层做更细颗粒度的控制。

SSL VPN: 虚拟网关技术,是一种基于SSL加密技术的虚拟私人网络。可以理解为是用户的一个接入的接口,用户可以通过在浏览去中输入虚拟网关的IP地址(或者域名)访问到虚拟网关,这个过程需要进行用户认证,划分用户的权限。用户认证通过后,虚拟网关会向远程用户提供可也访问的内网资源列表,远程用户通过点击或者触发便可访问到内网的资源。

一台防火墙可以创建多个虚拟网关,每个虚拟网关相互独立,互不影响,不同的虚拟网关可以

配置各自的用户和资源进行单独管理。

SSL VPN的总体流程:

1)认证

本地认证: 本地认证就是用户名和密码信息在防火墙本地存储,登陆时在防火墙本地进行比对验证,由防火墙进行判断
**服务器认证:**用户名和密码信息存储在服务器上,防火墙需要将登录信息发送给服务器,由服务器进行判断,之后将结果返回给防火墙,做出对应的动作

**证书匿名认证:**需要客户端提交证书,防火墙通过验证客户端的证书来认证用户

要求:

  1. 客户端证书和防火墙上导入的客户端CA证书由同一个CA机构颁发
  2. 客户端证书必须在有效期内
  3. 客户端证书中用户过滤字段必须是防火墙上配置已有的用户。例如,用户过滤字段的结果CN=user00019

**证书挑战认证:**比证书匿名认证多增加了用户名密码校验,可以理解为双因子验证

2)资源发布

1、Web代理

2、文件共享

3、端口转发

可以针对所有TCP协议的资源进行发布

使用ActiveX控件

4、网络扩展

需要在用户客户端上安装一张虚拟网卡,会下发一个私网的IP地址和路由

可靠传输模式:

快速传输模式:

相关推荐
楠枬5 分钟前
数据链路层
运维·服务器·网络·网络协议
遗忘de神话19 分钟前
Linux CentOS 7.9 安装mysql8
linux·运维·服务器·mysql
z千鑫43 分钟前
【深入解析】AI工作流中的HTTP组件:客户端与服务端执行的区别
人工智能·网络协议·http·agent·工作流·ai助手·ai工具
saddhu.1 小时前
python恶搞无限弹窗脚本
linux·服务器·python
老大白菜2 小时前
2 php8.0 中开发一个websocket 聊天 表设计
数据库·websocket·网络协议
c1tenj22 小时前
Linux实用操作
linux·服务器·网络
诉清风20233 小时前
Linux系统应用(5)——编译器gcc
linux·运维·服务器
未来的JAVA高级开发工程师3 小时前
部署黑马商城至云服务器
运维·服务器
钡铼技术物联网关3 小时前
工厂数字化转型利器:.NET Core 与 ARMxy 嵌入式边缘计算网关
linux·运维·服务器·arm开发·自动化
码农小伙4 小时前
linux-性能优化命令
linux·服务器·性能优化