一种基于Linux内核的HTTPS请求重定向方法转让专利

申请号 : CN202110793730.1

文献号 : CN115701086A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯鹏飞杨黎明

申请人 : 山东华软金盾软件股份有限公司

摘要 :

本发明涉及一种基于Linux内核的HTTPS请求重定向方法,包括以下步骤:服务器以旁路方式挂载于网络中并接收网络镜像流量;加载内核模块A并在内核态生成设置接口A1、接口A2以及加密缓存池A3;加载宿主内核模块B并调用A1、A2设置重定向连接信息;宿主内核模块B将HTTPS加密端口流量通过接口A2发送至加载内核模块A;第一次内核模块A分析流量内容;第二次内核模块A分析流量内容;第三次内核模块A分析流量内容;客户端根据重定向连接信息中的地址跳转到重定向页面;通过在旁路架设基础上基于TLS标准协议在内核态完成HTTPS握手以及重定向数据发送,具有高效、低延迟特点,同时有效降低用户态web服务器的访问负载。

权利要求 :

1.一种基于Linux内核的HTTPS请求重定向方法,其特征在于,包括以下步骤:

1)服务器以旁路方式挂载于网络中并接收网络镜像流量;

2)加载内核模块A并在内核态生成设置接口A1、接口A2以及加密缓存池A3;

3)加载宿主内核模块B并调用A1、A2设置重定向连接信息;

4)宿主内核模块B将HTTPS加密端口流量通过接口A2发送至加载内核模块A;

5)第一次内核模块A分析流量内容,若非握手第一包,则断开连接包,结束连接;若为握手第一包则提取部分内容放入加密缓存池A3,再发送握手第二包至客户端,完成响应;

6)第二次内核模块A分析流量内容,若非握手第三包或为握手第三包但未执行5),则断开连接包,结束连接;若为握手第三包且执行过5)则提取部分内容放入加密缓存池A3,并将内核态计算对称密钥放入加密缓存池A3,再将握手第四包以及加密后的密钥发送至客户端,完成响应;

7)第三次内核模块A分析流量内容,若为应用负载数据但未执行5)、6)则断开连接包;

否则使用加密缓存池A3的密钥解密应用负载数据,若应用负载数据为非HTTP GET/POST请求数据则断开连接包,否则将预设的重定向连接信息发送给客户端,重定向连接信息为加密缓存池A3的密钥加密后的信息,再从加密缓存池A3中删除此连接的缓存信息;

8)客户端根据重定向连接信息中的地址跳转到重定向页面。

说明书 :

一种基于Linux内核的HTTPS请求重定向方法

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种基于Linux内核的HTTPS请求重定向方法。

背景技术

[0002] HTTPS是一种以安全通信为目标的HTTP信息传输通道,它建立于SSL基础之上,传统HTTP通信为明文,HTTPS则是应用了加密传输的密文通信,更加安全可靠。
[0003] 现有技术方案实现HTTPS重定向时大多采用DNS劫持、Linux防火墙DNAT(网络目标地址转换)或者二者结合等方案将访问请求再次路由后到达重定向服务器,由web服务器发送重定向连接给客户端实现。
[0004] 现有技术主要存在以下缺点:
[0005] 1)由于HTTPS的特殊性很多情况下需要将服务端设备串接在网络中以达到中间人效果,但此做法增加了单点故障的风险等级。
[0006] 2)DNS请求具有缓存特性这导致仅使用DNS进行重定向时一段时间内(由浏览器实现决定)总会使用上次获得的地址进行访问,由于没有DNS请求包也就无法及时针对DNS请求做出处理。
[0007] 3)使用Linux防火墙等现有资源结合2)中的方法,虽可以满足控制要求,但其流程更加复杂,需要了解防火墙控制命令、路由设置以及增加的不必要的步骤加重web服务器负载,在大型网络环境中这可能是致命的。由于防火墙的匹配规则导致所有流经网卡的数据包都需要进行一次筛选,无疑也会降低整体性能。使用Linux防火墙时复杂多变的规则可能导致网卡性能急剧下降。
[0008] 4)某些技术方案中需要部署多台套设备,如域名服务器、接入服务器、跳转服务器等,使实施成本变高。

发明内容

[0009] 本发明是为解决现有技术中的问题而提出的,其目的在于,提供一种基于Linux内核的HTTPS请求重定向方法,解决了现有方法的缺陷,具有高效、低延迟特点。
[0010] 一种基于Linux内核的HTTPS请求重定向方法,包括以下步骤:
[0011] 1)服务器以旁路方式挂载于网络中并接收网络镜像流量;
[0012] 2)加载内核模块A并在内核态生成设置接口A1、接口A2以及加密缓存池A3;
[0013] 3)加载宿主内核模块B并调用A1、A2设置重定向连接信息;
[0014] 4)宿主内核模块B将HTTPS加密端口流量通过接口A2发送至加载内核模块A;
[0015] 5)第一次内核模块A分析流量内容,若非握手第一包,则断开连接包,结束连接;若为握手第一包则提取部分内容放入加密缓存池A3,再发送握手第二包至客户端,完成响应;
[0016] 6)第二次内核模块A分析流量内容,若非握手第三包或为握手第三包但未执行5),则断开连接包,结束连接;若为握手第三包且执行过5)则提取部分内容放入加密缓存池A3,并将内核态计算对称密钥放入加密缓存池A3,再将握手第四包以及加密后的密钥发送至客户端,完成响应;
[0017] 7)第三次内核模块A分析流量内容,若为应用负载数据但未执行5)、6)则断开连接包;否则使用加密缓存池A3的密钥解密应用负载数据,若应用负载数据为非HTTP GET/POST请求数据则断开连接包,否则将预设的重定向连接信息发送给客户端,重定向连接信息为加密缓存池A3的密钥加密后的信息,再从加密缓存池A3中删除此连接的缓存信息;
[0018] 8)客户端根据重定向连接信息中的地址跳转到重定向页面。
[0019] 本发明的基于Linux内核的HTTPS请求重定向方法,1)部署全旁路设计,不改变网络结构,对网络影响极小,即使服务器宕机也不会造成单点故障;
[0020] 2)HTTPS重定向过程实现均为Linux内核实现,数据处理在链路层完成,高效、低延迟且不关心DNS类请求,同时由于重定向地址发送也在内核完成可减轻服务器如Nginx的访问负载。
[0021] 3)核心功能模块采用懒惰设计,仅在使用时工作,同时配置更加灵活,仅需宿主设置必要条件即可。
[0022] 4)部署仅需一台服务器旁路在网络中即可达到效果,成本低。

附图说明

[0023] 图1为本发明的服务器部署结构图。
[0024] 图2为本发明的流程图。

具体实施方式

[0025] 以下将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026] 本发明的实施方式,本发明的实施方式,参见图1‑2,一种基于Linux内核的HTTPS请求重定向方法,包括以下步骤:
[0027] 1)服务器以旁路方式挂载于网络中并接收网络镜像流量;
[0028] 2)加载内核模块A并在内核态生成设置接口A1、接口A2以及加密缓存池A3;
[0029] 3)加载宿主内核模块B并调用A1设置相关资源,如重定向连接地址等;
[0030] 4)宿主内核模块B将HTTPS加密端口流量通过接口A2发送至模块A;
[0031] 5)第一次内核模块A分析流量内容,若非ClientHello(HTTPS握手第一包)则发送RST(断开连接包)至终端,结束连接;若为ClientHello则提取其中必要内容放入加密缓存池A3,之后发送ServerHello、Certificates、ServerHelloDone(HTTPS握手第二包)至客户端,完成响应;
[0032] 6)第二次内核模块A分析流量内容,若非ClientKeyExchange、ChangeCipherSpec、Finish(HTTPS握手第三包)或者是HTTPS握手第三包但未进行5)则发送RST(断开连接包)至终端,结束连接;若为ClientKeyExchange、ChangeCipherSpec、Finish且执行过步骤五则提取其中必要内容放入加密缓存池A3并将内核态计算对称密钥放入加密缓存池A3,之后发送ChangeCipherSpec、Finish(HTTPS握手第四包)并通过加密缓存池A3中存储的密钥加密后至客户端,完成响应;
[0033] 7)第二次内核模块A分析流量内容,若为Application Data(应用负载数据即加密的HTTP数据)但未执行5)、6)则发送RST(断开连接包)至终端;否则使用A3存储的密钥解密Application Data,若上述数据非HTTP GET/POST请求数据则发送RST(断开连接包)至终端,断开连接,否则发送预设的重定向连接信息使用加密缓存池A3中存储的密钥加密后发送给客户端,之后从A3中删除此连接的缓存信息;
[0034] 步骤八:客户端根据重定向连接信息中的地址跳转到重定向页面。
[0035] 本发明的一种基于Linux内核的HTTPS请求重定向方法,能够实现HTTPS访问重定向并规避现有方法的缺陷,通过在旁路架设基础上基于TLS标准协议在内核态完成HTTPS握手以及重定向数据发送,具有高效、低延迟特点,同时有效降低用户态web服务器的访问负载。
[0036] 附图2中的APPData为Application Data的缩写。
[0037] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0038] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。