SSL VPN

SSL工作过程

SSL(Secure Sockets Layer,安全套接层)是一种常用的加密协议

  1. 客户端发起连接请求:客户端向服务器发送连接请求,请求建立一个安全的SSL连接。

  2. 服务器响应:服务器接收到客户端的连接请求后,如果支持SSL协议,就会返回一个数字证书。数字证书包含了服务器的公钥以及其他相关信息,用于证明服务器的身份。

  3. 客户端验证服务器的证书:客户端会验证服务器返回的证书的有效性和合法性。验证过程包括检查证书的签名是否可信、证书是否过期、域名是否匹配等。如果验证失败,客户端会中止连接,或者提示用户关于证书不受信任的信息。

  4. 客户端生成随机数和密钥:客户端会生成一个随机数作为对称加密算法的密钥,并使用服务器的公钥对该密钥进行加密。

  5. 服务器解密密钥:服务器使用自己的私钥来解密客户端发来的密钥。

  6. 确立加密算法和参数:客户端和服务器根据各自支持的加密算法列表,选择一个适用的对称加密算法和参数,用于之后的数据加密。之后,客户端和服务器都知道使用同一个对称密钥进行通信。

  7. 建立SSL连接:客户端通过对称密钥加密算法加密一条消息,并发送给服务器。服务器收到消息后,使用对称密钥解密,确认连接建立成功。此后,客户端和服务器之间的通信将使用对称密钥进行加密和解密。

  8. 安全通信:客户端和服务器使用对称密钥进行加密和解密,保证通信的机密性和完整性。加密数据在传输过程中,即使被截获,也无法理解其中的内容。

SSL中的预主密钥

SSL协商过程中生成的一个随机数,它在SSL连接建立过程中起着重要的作用。下面是预主密钥的几个作用:

  1. 密钥交换:预主密钥用于安全地交换会话密钥(session key)。在SSL握手阶段,客户端和服务器会使用各自的长期私钥和对方的公钥来生成预主密钥,并通过安全通道进行传输。预主密钥能够保证在无安全通道的情况下,仍能安全地交换会话密钥,从而保证后续通信的机密性。

  2. 密钥派生:预主密钥是派生生成会话密钥的基础。在握手阶段,客户端和服务器都使用预主密钥作为输入,通过复杂的密钥派生函数(key derivation function)生成会话密钥。会话密钥是对称密钥,用于加密和解密实际的通信数据。

  3. 完美前向保密性(Perfect Forward Secrecy,PFS):预主密钥的使用还能够实现完美前向保密性。如果攻击者获取了之前的会话数据或长期私钥,他们也无法还原预主密钥。这是因为预主密钥是每个会话都通过随机数生成的,不会长期存储。即使之前的会话密钥被破解,后续会话的安全仍然得到保护。

SSL实现 虚拟网关

 SSL实现 web代理

 

 SSL实现文件共享

 

实现原理

协议转换技术:无需客户端,直接通过浏览器安全访问转换为内网文件共享的相应协议格式。使用
activeX控件。


支持协议

  • ·SMB (windows)
  • ·NFS (linux)

 

SSL实现端口转发

 

 实现原理: 安装activeX控件,本质是NAT过程

 

 

 提供内网TCP资源的访问,C/S资源

提供丰富的静态端口的TCP应用

单端口单服务:telent、SSH、MS RDP VNC

单端口多服务:notes

多端口多服务:outlook

动态端口TCP应用   动态端口:FTP

提供端口级访问控制

自动安装运行一个 ActiveX控件,获取到管理端配置的端口转发资源列表(目的服务器IP、端口)。控件 将客户端发起的TCP报文与资源列表进行比对,当发现报文的目的IP/Port与资源列表中的表项匹配,则 截获报文,开启侦听端口(目的端口经过特定算法得出),并将目的地址改写为回环地址,转发到侦听 端口。对该报文加密封装,添加私有报文头,将目的地址设为USG的IP地址,经由侦听端口发往USG。 USG收到报文进行解密,发往真实的目的服务器端口。USG收到服务器的响应后,再加密封装回传给用 户终端的侦听端口。

 

 网络扩展

 

 SSL VPN要求的终端安全

终端安全是在请求内网主机上部署一个软件,通过该软件检查终端的安全性包括:主机检查,缓存清 除。

主机检查:

  • 杀毒软件检查
  • 防火墙设置检查
  • 注册表检查
  • 端口检查
  • 进程检查
  • 操作系统检查

缓存清除:

  • internet临时文件
  • 浏览器自动保存密码
  • cookie记录
  • 浏览器访问历史记录
  • 回收站和最近打开的文件
  • 指定文件或者文件夹

认证授权

  • vpndb认证授权
  • 第三方服务认证授权
  • 数字证书的认证
  • 短信辅助认证

 

 

在实现SSL VPN时,防火墙需要放行以下几类流量:

  1. SSL/TLS流量:防火墙需要允许SSL/TLS协议的流量通过,以确保SSL VPN连接能够建立和正常运行。这包括标准的SSL端口(例如443端口)和其他配置的SSL VPN使用的端口。

  2. VPN协议流量:根据所选择的SSL VPN解决方案,防火墙需要放行相应的VPN协议流量。常见的SSL VPN协议有OpenVPN、IPsec、L2TP等。

  3. 认证流量:SSL VPN通常涉及用户身份验证,防火墙需要放行与认证相关的流量。这可能包括基于用户名和密码的身份验证流量或其他类型的身份验证流量(如证书、令牌等)。

  4. 内部资源访问流量:一旦SSL VPN连接建立成功,防火墙需要允许SSL VPN客户端通过SSL VPN隧道访问内部受限资源的流量。这可能涉及到内部服务器、数据库、文件共享等的流量。

  5. DNS流量:SSL VPN通常需要进行域名解析,以便将主机名转换为IP地址。防火墙需要允许出站的DNS流量,以确保SSL VPN客户端能够正确解析域名。

注意:具体需要放行哪些流量取决于使用的SSL VPN解决方案和网络架构。此外,在配置防火墙规则时,也要确保仅放行必要的流量以减少潜在的安全风险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64791.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络服务之自动装机(PXE+KICKSTART)详解

自动装机 一、启动操作系统的方式1.1 系统装机的三种引导方式1.2 系统安装过程1.3 三大文件1.4 如何实现自动装机? 二、PXE2.1 PXE的简介和优点2.2 实现PXE的前提条件2.3 PXE实现过程2.5 要安装的服务2.6 实现PXE2.6.1 前置准备2.6.2 安装并配置DHCP2.6.3 安装并配置…

Vue3 第二节 Vue3的响应式

1.Vue3的响应式原理 2.ref函数和reactive函数的对比 3.setup注意点 一.Vue3的响应式原理 1.Vue2.x中的响应式原理 ① 实现原理 对象类型:通过Object.defineProperty() 对属性的读取,修改进行拦截(数据劫持)数组类型&#xf…

ES6 - 对象新增的一些常用方法

文章目录 1,Object.is()2,Object.asign()3,Object.getOwnPropertyDescriptors()4,Object.setPrototypeOf()和getPrototypeOf()5,Object.keys()、values() 和 entries()6,Object.fromEntries()7,…

【零基础??天速成 Java】Day2 - 初识面向对象

目录 前言 1. 可变参数的使用 2. 构造器 3. 包 1、包的创建 2、包的使用 3、包的命名规范 4、常用的包 5. 访问修饰符 6. 继承 7. super 关键字 8. 方法重写 Override 写在最后: 前言 我的 java 基础学习,跟的是韩顺平的 java 课程~ 本篇…

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面

前言: Cloud Studio是一个在线的云集成开发环境(IDE),可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具,例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具…

Spring Boot2.xx开启监控 Actuator

spring boot actuator介绍 Spring Boot包含许多其他功能,可帮助您在将应用程序推送到生产环境时监视和管理应用程序。 您可以选择使用HTTP端点或JMX来管理和监视应用程序。 审核,运行状况和指标收集也可以自动应用于您的应用程序。 总之Spring Boot Ac…

8月8日上课内容 研究nginx组件rewrite

location 匹配uri location 匹配的规则和优先级。(重点,面试会问,必须理解和掌握) nginx常用的变量,这个要求掌握 rewrite:重定向功能。有需要掌握,有需要理解的。 location匹配:…

用Vue实现页面访问拦截

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 页面访问拦截 1.创建axios实例 2.添加拦截器 3.全局前置守卫 可选的第三个参数 next 总结&#xff1a…

状态模式(C++)

定义 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 应用场景 在软件构建过程中,某些对象的状态如果改变,其行为也会随之,而发生变化,比如文档处于只读状态,其支持的行为和读写…

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后,您将了解使用flask构建 restful API 是多么容易。在本文中,我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…

无涯教程-Perl - fcntl函数

描述 该函数是系统fcntl()函数的Perl版本。使用FILEHANDLE上的SCALAR执行FUNCTION指定的功能。 SCALAR包含函数要使用的值,或者是任何返回信息的位置。 语法 以下是此函数的简单语法- fcntl FILEHANDLE, FUNCTION, SCALAR返回值 该函数返回0,但如果fcntl()的返回值为0,则返…

【Go语言】Golang保姆级入门教程 Go初学者chapter2

【Go语言】变量 VSCode插件 setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/imgmain/image-20…

CAD随机球体颗粒过渡区3D插件

插件介绍 CAD随机球体颗粒&过渡区3D插件可用于在AutoCAD软件内生成随机分布的球体及球体外侧过渡区部件,适用于科研绘图、有限元建模如混凝土细观、颗粒增强复合材料、随机三维骨料及过渡区等方面的应用。 插件可指定的参数有模型的长、宽、高;球…

< JavaScript小技巧:如何优雅的用【一行代码 】实现Js中的常用功能 >

文章目录 💬 前言👉 数组相关① 随机打乱数组顺序② 借助 new Set()对数组去重 / 对象数组根据唯一值去重③ 查找数组中 【 最值 】 出现的索引 👉 Web浏览器相关① 重新加载当前页面,相当于 Ctrl R② 滚动…

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题 1、本方案默认本地已经安装了VScode与MobaXterm2、在服务器端3、在本地端安装MobaXterm4、测试5、opencv显示测试(测试过程中需保持MobaXterm开启的状态)6、 matplotlib显示测试&#x…

VSCode Remote-SSH (Windows)

1. VSCode 安装 VSCode 2. 安装扩展 Remote SSH Getting started Follow the step-by-step tutorial or if you have a simple SSH host setup, connect to it as follows: Press F1 and run the Remote-SSH: Open SSH Host… command.Enter your user and host/IP in the …

qemu 虚拟化

一、介绍QEMU Qemu是种非常古老的虚拟化技术,用于虚拟化系统组件并在其上运行多种CPU架构的程序或操作系统。 借助KVM,Qemu可以通过使用基于硬件的虚拟化来获得超快的计算速度。QEMU充当硬件供应商,KVM是CPU。KVM驻留在Linux内核中&#xff0…

Linux下的环境变量

目录 一、环境变量是什么?二、常见的环境变量三、查看环境变量的方法四、和环境变量相关的命令五、命令行参数五、环境变量通常是具有全局属性的 一、环境变量是什么? 环境变量通俗来说就是一种存储系统和应用程序运行需要的配置信息的方式。可以把环境…

Mr. Cappuccino的第57杯咖啡——简单手写Mybatis大致原理

简单手写Mybatis大致原理 大致原理项目结构项目代码代码测试 大致原理 底层基于JDK动态代理技术实现 项目结构 项目代码 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

Flutter 自定义view

带进度动画的圆环。没gif&#xff0c;效果大家自行脑补。 继承CustomPainter&#xff0c;paint()方法中拿到canvas&#xff0c;绘制API和android差不多。 import package:flutter/material.dart;class ProgressRingPainter extends CustomPainter {double strokeWidth 20;Col…