Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VPN 的技术原理是什么?

VPN 的技术原理是什么?

作者头像
程序员小猿
发布于 2022-03-09 05:37:11
发布于 2022-03-09 05:37:11
1.3K00
代码可运行
举报
文章被收录于专栏:程序IT圈程序IT圈
运行总次数:0
代码可运行

SSL V**技术

SSl协议支队通信双方传输的应用数据进行加密,而不是对从一个主机到另一个主机的所有数据进行加密。

IPSec缺陷

由于IPSec是基于网络层的协议,很难穿越NAT防火墙,特别是在接入一些防护措施较为严格的个人网络和公共计算机时,往往会导致访问受阻。移动用户使用IPSec V**需要安装专用的客户端软件,为日益增长的用户群发放、安装、配置、维护客户端软件已经使管理员不堪重负。因此,IPSec V**在Point- to-Site远程移动通信方面并不适用。

SSL V**功能技术

虚拟网关

每个虚拟网关都是独立可管理的,可以配置各自的资源、用户、认证方式、访问控制规则以及管理员等。

当企业有多个部门时,可以为每个部门或者用户群体分配不同的虚拟网关,从而形成完全隔离的访问体系。

WEB代理

它将远端浏览器的页面请求(采用https协议)转发给web服务器,然后将服务器的响应回传给终端用户,提供细致到URL的权限控制,即可控制到用户对某一张具体页面的访问。

web代理实现对内网Web资源的安全访问:

Web代理有两种实现方式:

Web-Link和Web改写(默认)。

  • Web-link采用ActiveX控件方式,对页面进行转发。
  • Web改写方式采用脚本改写方式,将请求所得页面上的链接进行改写,其他网页内容不作修改。

从业务交互流程可以看出,Web代理功能的基本实现原理是将远程用户访问Web Server的过程被分成了两个阶段。首先是远程用户与NGFW虛拟网关之间建立HTTPS会话,然后NGFW虚拟网关再与Web Server建立HTTP会话。虚拟网关在远程用户访问企业内网Web Server中起到了改写、转发Web请求的作用。

文件共享

文件共享实现过程

  • 客户端向内网文件服务器发起HTTPS格式的请求,发送到USG防火墙。
  • USG防火墙将HTTPS格式的请求报文转换为SMB格式的报文。
  • USG防火墙发送SMB格式的请求报文给文件服务器。
  • 文件服务器接受请求报文,将请求结果发送给USG防火墙,用的是SMB报文。
  • USG防火墙将SMB应答报文转换为HTTPS格式。
  • 将请求结果(HTTPS格式的报文)发送到客户端。

端口转发

提供丰富的内网TCP应用服务。

广泛支持静态端口的TCP应用:

  • 单端口单服务器(如:Telnet,SSH,MS RDP, VNC等)。
  • 单端口多服务器(如:Lotus Notes)。
  • 多端口多服务器(如:Outlook)。

支持动态端口的TCP应用:

  • 动态端口(如:FTP,Oracle)。

提供端口级的访问控制。

端口转发实现原理

端口转发特点

  • 实现对内网TCP应用的广泛支持。
  • 远程桌面、outlook、Notes、FTP等。
  • 所有数据流都经过加密认证。
  • 对用户进行统一的授权、认证。
  • 提供对TCP应用的访问控制。
  • 只需标准浏览器,不用安装客户端。

网络扩展

  • 分离模式:用户可以访问远端企业内网(通过虚拟网卡)和本地局域网(通过实际网卡),不能访问Internet。
  • 路由模式:用户只允许访问远端企业内网(通过虚拟网卡),不能访问Internet和本地局域网。
  • 手动模式:用户可以访问远端企业内网特定网段的资源(通过虚拟网卡),对其它Internet和本地局域网的访问不受影响(通过实际网卡)。网段冲突时优先访问远端企业内网。

网络扩展实现过程

报文封装过程

可靠传输模式

快速传输模式

终端安全

主机检查

终端安全是在请求接入内网的主机上部署一个软件,通过该软件检查终端主机的安全状况。主要包括:主机检查、缓存清理。

主机检查:检查用户用来访问内网资源的主机是否符合安全要求。

主机检查策略包括如下检查项:

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

缓存清理

USG可以在用户访问虚拟网关结束时,采用必要的手段清除终端.上的访问痕迹(例如生成的临时文件、Cookie等),以防止泄密,杜绝安全隐患。

清理范围:

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

完善的日志功能

  • 日志查询
  • 日志导出
  • 虚拟网关管理员日志
  • 用户日志
  • 系统日志

认证授权

证书匿名认证

NGFW只通过验证用户的客户端证书来验证用户的身份。

1.用户在SSLV**网关登录界面选择证书后,客户端会将客户端证书发送给网关。

2.网关会将客户端证书以及自己引用的CA证书的名称发送给证书模块。

3.证书模块会根据网关引用的CA证书检查客户端证书是否可信,并将结果返回给网关:

  • 如果网关引用的CA证书与客户端证书是同一个CA机构颁发的,且客户端证书在有效期内,则证书模块认为客户端证书可信,用户认证通过,继续执行4。
  • 如果证书模块认为客户端证书不可信,用户认证不通过,则执行5。

4.网关根据用户过滤字段从客户端证书中提取用户名。

  • 网关会从自己的角色授权列表中查找用户所属角色从而确认此用户的业务权限。

5.网关将认证结果返回给客户端。

认证结果为通过的用户能够登录SSLV**网关界面,以相应的业务权限来使用SSL V**业务。

认证结果为不通过的用户会在客户端上看到“您的证书验证非法,请提供合法的证书”。

证书挑战认证

证书挑战认证是指将验证客户端证书与本地认证或服务器认证结合起来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
证书+本地用户名密码
证书+服务器认证

SSL V**应用场景

SSL V**单臂组网模式应用场景分析

在网络规划时,SVN的接口IP为内网IP地址,此地址需要能与所有被访问需求的服务器路由可达。

防火墙上需配置nat server,将SVN的地址映射到防火墙的某一公网IP. 上。也可以只映射部分端口,如443。如果外网用户有管理SVN的需求,还需要映射SSH、Telnet等端口。

SSLV**双臂组网模式应用场景分析

  • 在此类组网环境中,SVN使用两个不同的网口连接外网与内网,这种组网方式下,具有清晰的内网、外网概念;无需做额外的配置,外网口对应虚拟网关IP,内网口配置内网管理IP。
  • 虛拟网关IP不一定需要经过NAT转换,只要外网用户能够访问此虚拟网关IP地址即可。内外网接口没有特定的物理接口,任何一个物理接口都可以作为内网或外网接口。
  • 图中路由器和交换机之间处于连接状态。这是因为客户网络中可能有部分应用不需要经过SSL加密,而是直接通过防火墙访问外网。这时就需要在交换机和路由器.上配置策略路由,需要建立SSLV**的流量就转发到SVN上,而普通的应用就直接通过防火墙访问外网。

SSL V**配置步骤

1.配置接口

2.配置安全策略

  • 放行Untrust到L ocal安全区域的SSL V**流量。
  • 放行Local到Trust安全区域的业务流量。

3.配置V**DB

4.虚拟网关配置

5.业务选择

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ensp将防火墙该功能阉割
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端自动化测试实践03—jest异步处理&mock
一般项目代码中会有不少异步 ajax 请求,例如测试下面 async.js 中的代码
CS逍遥剑仙
2019/10/31
5.4K0
使用 Jest 进行前端单元测试
目前 Jest 已经在 Facebook 开源的 React, React Native 等前端项目中被做为标配测试框架。下面简单介绍一些 Jest 比较有用的功能和用法。
QQ音乐技术团队
2018/01/31
5.9K0
使用 Jest 进行前端单元测试
那些年错过的React组件单元测试(上)
关于前端单元测试,其实两年前我就已经关注了,但那时候只是简单的知道断言,想着也不是太难的东西,项目中也没有用到,然后就想当然的认为自己就会了。
前端森林
2021/04/12
5.4K0
Jest + React Testing Library 单测总结
1、背景 以前还是学生的时候,有学习一门与测试相关的课程。那个时候,觉得测试就是写 test case,写断言,跑测试,以及查看 test case 的 coverage。整个流程和写法也不是特别难,所以就理所当然地觉得,写测试也不是特别难。 加上之前实际的工作中,也没有太多的写测试的经历,所以当自己需要对组件库补充单元测试的时候,发现并不能照葫芦画瓢来写单测。一时不知道该如何下手,也不知道如何编写有效的单测,人有点懵,于是就比较粗略地研究了一下前端组件单测。 1.1 单测的目的 在频繁的需求变动中可控地保
用户1097444
2022/06/29
4.9K0
Jest + React Testing Library 单测总结
编写接口请求库单元测试与 E2E 测试的思考
最近在写适配 Mx Space Server 的 JS SDK。因为想写一个正式一点的库,以后真正能派的上用场的,所以写的时候尽量严谨一点。所以单测和 E2E 也是非常重要。
Innei
2021/12/28
1.1K0
【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
如果使用的是 vscode 并且安装了 jest 插件,那么可以实时并且直观的看到测试是否通过
一尾流莺
2022/12/10
1.4K0
【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
用Jest来给React完成一次妙不可言的~单元测试
在2020的今天,构建一个 web 应用对于我们来说,并非什么难事。因为有很多足够多优秀的的前端框架(比如 React,Vue 和 Angular);以及一些易用且强大的UI库(比如 Ant Design)为我们保驾护航,极大地缩短了应用构建的周期。
用户1462769
2020/03/30
15.4K0
Vue 应用单元测试的策略与实践 02 - 单元测试基础
在上一篇文章当中我们介绍了单元测试的意义,以及为何选择 Facebook 的 Jest 作为我们的测试框架。现在就让我们一起来学习如何编写最基础的单元测试。
JimmyLv_吕靖
2019/09/10
2.4K0
Vue 应用单元测试的策略与实践 02 - 单元测试基础
web前端好帮手 - Jest单元测试工具
本文介绍如何使用Jest覆盖Web前端单元测试、如何统计测试覆盖率,Jest对比Mocha等内容。 Jest是什么? Jest是一个令人愉快的 JavaScript 测试框架,专注于简洁明快。 正如官方介绍所说,Jest是一款开箱即用的测试框架,其中包含了Expect断言接口、Mock接口、Snapshot快照、测试覆盖率统计等等全套测试功能。 为什么不推荐Mocha? 不支持原生并行测试 断言库要另外安装 测试覆盖率统计功能要另外安装 原生输入的测试报告可读性很差,格式化也要另外安装 不支持snap
QQ音乐技术团队
2020/06/15
5.3K0
React + Redux Testing Library 单元测试
谈任何东西都一定要有个上下文。你的论述不能是「因为单元测试有这些好处,所以我们要做单元测试」,而应该是「不做单元测试我们会遇到什么问题」,这样才能回答「为什么要写单元测试」的问题。那么我们谈论单元测试的上下文是什么呢?不做单元测试我们会遇到什么问题呢?上图为一个产品从 idea 分析、设计、开发、测试到交付并获取市场反馈的过程。
JimmyLv_吕靖
2021/03/03
2.5K0
React + Redux Testing Library 单元测试
Jest 单元测试快速上手指南
执行 yarn jest 或者 yarn jest test/plus.spec.js 运行测试用例
木子星兮
2020/08/25
3.6K0
Jest 单元测试快速上手指南
Jest单元测试之旅—实践总结
维基百科对于单元测试的定义:是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。
gary12138
2022/10/05
10.8K0
Jest单元测试之旅—实践总结
Jest基本使用方法以及mock技巧介绍
Jest是由Facebook开发并维护的一套js的单元测试框架,之前在后台的nodejs项目里面第一次尝试使用,感觉还是非常容易上手的,功能也比较强大。
腾讯移动品质中心TMQ
2018/06/26
8.8K0
前端接入单元测试(Node+React)
假如要重构一个老前端框架,并根据其开发一个向后兼容的新框架。此时老框架针对其内部API函数,写了充分的单侧用例。在开发新框架时,直接运行老前端框架的单侧用例,如果所有测试用例都通过,则可快速保证内部api的一致性,快速验证所有功能。
kiki.
2022/09/29
3.6K0
前端接入单元测试(Node+React)
React单元测试:Jest + Enzyme(二)
在上一篇教程中,我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试,可以点击这里回顾一下。今天,我们重点讨论如何通过Jest来mock数据。
Dickensl
2022/06/14
1.6K0
React单元测试:Jest + Enzyme(二)
单元测试
测试的目的是为了带给我们带来强大的代码信心,如果把测试初衷忘掉,会很容易掉入测试代码细节的陷阱。一旦关注点不是代码的信心,而是测试代码细节,那么测试用例会变得非常脆弱,难以维护。
用户4619307
2024/01/12
8030
使用jest进行单元测试
不扯犊子直接说吧,第一点,用数据、用茫茫多的测试用例去告诉使用者,你的程序是多么鲁棒健壮;第二点,把它作为一种素养去培养吧,当你按照一系列规范去做事,那么你做出来的东西,我想是有品质在的。
江涛学编程
2020/08/25
3.9K0
使用jest进行单元测试
测试中如何处理 Http 请求?
不知道大家平时写单测时是怎么处理 网络请求 的,可能有的人会说:“把请求函数 Mock ,返回 Mock 结果就行了呀”。
写代码的海怪
2022/08/31
1.4K0
前端单元测试之Jest
关于前端单元测试的好处自不必说,基础的介绍和知识可以参考之前的博客链接:React Native单元测试。在软件的测试领域,测试主要分为:单元测试、集成测试和功能测试。
xiangzhihong
2022/11/30
3K0
一杯茶的时间,上手 Jest 测试框架
现在让我们正式开始,茶和图雀社区精心准备的甜品更搭哦。 在项目根目录下新建src目录,存放我们的功能代码。然后创建src/dessert.js。
一只图雀
2020/04/13
2K0
推荐阅读
相关推荐
前端自动化测试实践03—jest异步处理&mock
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验