本申请涉及通信技术领域,特别是涉及tcp连接的预认证方法、装置和系统。
背景技术:
基于网络安全体系架构上,传统企业除了部署物理防火墙外,也会部署安全网关或者软件防火墙来进行外网的访问控制;按照此部署可以在防火墙上通过打开指定端口对外提供必要服务,但是会带来被攻击的风险;相反如果关闭服务端所有公网端口能够保障安全,但无法对外提供服务。为了兼顾应用性和安全性,需要提供一种端口默认关闭场景下保证内部应用能够被可信终端安全访问的方案。
业界普遍采用单包授权(spa)方法来实现:通过默认关闭服务端口,实现服务端网络隐身,从网络上无法连接、无法扫描。如果需要使用服务,则通过特定客户端发送认证报文信息给服务器,服务器认证该报文后,对该客户端打开相关的服务,建立tcp连接。然而,这样的处理方式至少存在以下缺陷:
1、授权信息承载在tcp/udp报文之上,服务器端仍然需要打开传输层的端口来接受单包授权报文,增加安全风险。对于外部访问组织内部资源服务起时,需要在组织的边界出口防火强增加端口规则,这样会增加运维改造的难度
2、应用服务前部署lb,waf类安全设备之后,敲门报文无法穿透这类设备,通过单包方式无法实现服务端口打开。
目前针对相关技术中采用单包授权(spa)方法认证报文,建立tcp连接的方法存在的安全风险高、运维改造的难度大、无法让敲门报文穿透等问题,尚未提出有效的解决方案。
技术实现要素:
本申请实施例提供了tcp连接的预认证方法、装置和系统,以至少解决采用单包授权(spa)方法认证报文,建立tcp连接的方法存在的安全风险高、运维改造的难度大、无法让敲门报文穿透等问题。
第一方面,本申请实施例提供了tcp连接的预认证方法,所述方法包括:在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;其中,tcpsyn报文中携带客户端发送给服务端口的tcp选项;对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过;若判断为认证通过,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
在其中一些实施例中,对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过包括:解密:对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;认证:对认证信息进行各维度校验;控制:对终端设备的业务访问放行和控制,其中,终端设备包括当前发起tcp连接的服务端。
在其中一些实施例中,tcpsyn报文中携带客户端发送给服务端口的tcp选项,解密过程包括:检查tcp选项是否携带快速标识,若携带,根据预设规则将tcp选项拆分成密文和hmac;通过服务器存储的秘钥对密文进行数字签名,验证hmac是否匹配,若匹配,通过秘钥对密文进行解密,得到认证信息、携带的摘要;对认证信息进行摘要计算,比对计算得到的摘要与携带的摘要是否相同;若相同,提取出认证信息。
在其中一些实施例中,认证信息包括随机数、硬件特征码、用户id、服务端端口信息的一种或多种;认证过程包括以下步骤的一种或多种:比对提取出的随机数与服务端存储的映射是否冲突;若不冲突,对设备特征码(硬件特征码)和用户id进行用户访问认证;若认证通过,将服务端端口信息与tcpsyn报文的目的端口进行匹配,得到匹配结果。
在其中一些实施例中,对终端设备的业务访问放行和控制具体为:在解密、认证过程中,若规则不匹配,直接丢弃tcpsyn报文,不作任何响应;否则,将tcpsyn报文送回tcp协议栈。
在其中一些实施例中,所述方法还包括:获取客户端的认证信息;将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端。
第二方面,本申请实施例提供了一种tcp连接的预认证的系统,包括加密装置:用于获取客户端的认证信息;将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端;认证设备:抓取tcpsyn报文并包括解密模块,用于对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;认证模块:用于对认证信息进行各维度校验;控制模块:用于对终端设备的业务访问放行和控制。
第三方面,本申请实施例提供了一种tcp连接的预认证的装置,包括获取模块,用于在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;预认证模块,用于对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过;处理模块,用于当判断为认证通过后,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
第四方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的tcp连接的预认证方法。
第五方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的tcp连接的预认证方法。
相比于相关技术中的单包授权方法,本申请实施例提供的tcp连接的预认证方法、装置和系统,将访问授权信息封装到tcpsyn报文的选项字段,在服务端解开选项信息,根据授权信息,确定是否允许客户端的接入。通过这种方式,可以避免额外增加服务端口,也无需改变服务端原有的安全策略规则,同时可以达到缩小攻击面的能力,避免synflood和端口扫描类攻击。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的预认证信息加密流程图;
图2是根据本申请实施例的tcp选项封装示意图;
图3是根据本申请实施例的通过服务端预认证的模块框架图;
图4是根据本申请实施例的对报文进行预认证处理的流程图;
图5是根据本申请实施例的tcp连接的预认证方法的流程图;
图6是根据本申请实施例的电子装置的硬件结构示意图;
图7是根据本申请实施例的tcp连接的预认证的装置的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
图5是根据本申请实施例的tcp连接的预认证方法的流程图,如图5所示,该流程包括以下步骤:
步骤101,在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;其中,tcpsyn报文中携带客户端发送给服务端口的tcp选项。
步骤102,对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过。
步骤103,若判断为认证通过,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
在步骤101之前,还包括以下步骤:
获取客户端的认证信息;将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端。
具体的,在客户端对业务发起访问请求之前,采集构建客户端侧各类认证相关的信息,使用秘钥对此类认证信息进行加密处理,加密后的报文封装到tcp选项中,随着第一个建链syn报文发送给服务端。
加密、解密用的密钥对通过统一管理分发机制来保证。在其中一些实施例中,加密秘钥和解密密钥在预设时间内有效,且加密密钥和解密密钥互为对称密钥。
示例性的,客户端可以向服务端口发送的信息带有时间戳,通过时间戳判断当前密钥是否已失效,例如,预设时间设为30s,若判断加密密钥或解密密钥已超过30s,则发送报错信息,在其他实施例中,预设时间还可以根据实际需要设为如60s、120s等其他时间。
在本实施例中,加密密钥和解密密钥可以互为对称密钥,相比于采用非对称加密方法,减少了计算资源,提高了计算速率。在其他实施例中,也可以采用pki方式,使用非对称密钥完成认证信息加密。
针对上述步骤101,预认证前的流程如下:采集构建客户端侧各类认证相关的信息,其中,认证信息包括随机数、硬件特征码、用户id、服务端端口信息的一种或多种。参考图1,本实施例中的认证信息优选为包括随机数、硬件特征码、用户id、服务端端口信息,对认证信息进行摘要计算,将得到的摘要附在认证信息上作为待加密明文,经加密后,为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端。其中,报文载荷具体信息包含:报文识别码,用于区分报文正确性;随机数,可用做抗重放攻击;硬件特征码和用户id,可用作预置数据库进行查找匹配;服务端口号,用于服务端端口校验;摘要信息,是对以上四个信息的hash,用于确保数据的完整性。hmac,用于验证密文是否有篡改的可能。
在步骤102中,对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过包括:解密:对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;认证:对认证信息进行各维度校验;控制:对终端设备的业务访问放行和控制,其中,终端设备包括当前发起tcp连接的服务端。
在本实施例中,对解密、认证和控制过程的具体解释如下:
解密过程:
(1)首先检查tcp选项字段是否携带了快速标识;没有则直接丢弃该报文;存在则执行下一步。快速标识是为了快速检查报文合法性。具体地,快速标识是指不需要解密,直接进行的合法建链报文(syn)的识别。因为解密过程需要消耗服务器的资源。第一步的快速标识,在不需要解密的情况下,对syn进行识别,从一定程度上缓解这类flood攻击。
(2)按照规则拆分出密文和hmac;通过服务端存储的密钥,基于密文验证数据签名hmac是否匹配;不匹配则报文有篡改的可能,丢弃该报文;匹配则执行下一步。
(3)对密文进行解密后,进行摘要算法,将计算的摘要和携带的摘要做比对,不相同则内层信息有篡改的可能,丢弃该报文;匹配则执行下一步。在本步骤中,具体而言,快速标识只是简单验证的第一步。真正验证syn连接的合法,还是需要进一步解密之后,才能确认syn链接的合法性的,因此本步骤先对密文进行解密,再验证syn连接的合法性。
(4)按照相应规则提取出随机数,硬件特征码,用户id,服务端端口信息。
根据上述解密过程解析出明文,获取到客户端设备的详细信息后,进入业务认证流程。
认证过程,参考图4:
(1)收到报文的随机数与服务端存储的映射冲突,说明为重放攻击,可以丢弃;
(2)对收到报文的设备特征码和用户id进行用户访问控制认证,查找失败则丢弃;
(3)通过携带服务端口与tcp保文的目的端口进行匹配,不匹配则可以丢弃;
上述参数信息均认证通过,进入控制流程。
控制流程:
(1)若通过预认证,将tcpsyn报文继续送回tcp协议栈处理,并完成tcp后续的建链;
(2)否则,丢弃该tcpsyn报文,并记录相关日志和统计。
针对上述步骤102,本发明在tcpsyn报文被服务端口接收之前,先对报文做一次预认证,避免了synflood类攻击。具体而言,在tcp连接的建立过程中,服务器一旦接收到client发来的syn报文,就需要为该请求分配一个tcb(传输控制块),如果恶意的向某个服务器端口发送大量的syn包,则可以使服务器打开大量的半开连接,分配tcb,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被响应,而攻击发起方的资源消耗相比较可忽略不计。针对上述synflood类攻击,本步骤通过在服务器接收到syn报文前,先不为该请求分配tcb,截获该syn报文进行快速标识的验证,将验证不通过的报文直接丢弃,验证通过的报文经预认证后发送到服务器上,使服务器正常打开连接。
在步骤103中,通过控制流程对终端设备的业务访问放行和控制。具体为:在解密、认证过程中,若规则不匹配,直接丢弃tcpsyn报文,不作任何响应;否则,将tcpsyn报文送回tcp协议栈。
通过上述步骤101-103,本发明提供了一种tcp连接的预认证方法,来解决现有的认证报文的方式存在的安全风险高、运维改造的难度大、无法让敲门报文穿透等问题。具体的,端口敲门,有别于通过tcp选项进行合法链接认证的方法,需要额外发送一个认证报文,是用于连接之前的认证。这个过程也叫做预认证。发送这个特定报文,叫做端口敲门报文。这个报文可以通过udp/icmp报文进行传递认证信息。现有技术中发送额外的敲门报文,需要边界防火墙上增加额外的策略,使得该类报文可以有效通过企业边界防火墙到达服务器。本方法的优势就是在于,使用原生的tcp报文,携带认证信息,而不需要额外的敲门报文,也就不需要企业的边界防火墙有额外的策略配置,因此解决了现有技术中无法让敲门报文穿透的问题。此外,本发明采用的技术建立在默认关闭服务端口,实现服务端网络隐身,从网络上无法连接、无法扫描的基础上,设备进行业务访问时端口网络隐身,因此具备抗重放功能,细颗粒度控制端口访问策略,识别终端设备是否可信接入,解决端口暴露带来的风险漏洞等优点。本发明在实现上述效果的同时,还具有现有技术如单包授权方法无法实现的效果,具体而言,本方案在tcp选项字段中,增加预认证信息,保证了服务端在接收tcp连接前,先做一次检查,有效地缩小了网络攻击面,避免了synflood类攻击;同时,连接前增加预认证流程,使得通过端口扫描等工具也无法探知具体端口状态,避免了端口扫描类攻击。此外,将验证客户端信息的认证信息以及验证认证信息是否被篡改的摘要都封装在tcp选项中,在服务端解开此类tcp选项时无需额外增加服务端口以及改变服务端原有的安全策略,相比于现有技术,增加安全性的同时,在运维改造的难度上大大降低。
基于相同的技术构思,本发明还提出了一种tcp连接的预认证的系统,该系统用于处理至少如步骤101-103的方法,具体包括:
加密装置,用于获取客户端的认证信息;将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端;
认证设备,抓取tcpsyn报文并包括解密模块,用于对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;认证模块:用于对认证信息进行各维度校验;控制模块:用于对终端设备的业务访问放行和控制。
基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种tcp连接的预认证的装置,包括:
获取模块201,用于在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;
预认证模块202,用于对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过;
处理模块203,用于当判断为认证通过后,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器304和处理器302,该存储器304中存储有计算机程序,该处理器302被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
具体地,上述处理器302可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器304可以包括用于数据或指令的大容量存储器304。举例来说而非限制,存储器304可包括硬盘驱动器(harddiskdrive,简称为hdd)、软盘驱动器、固态驱动器(solidstatedrive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器304可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器304可在数据处理装置的内部或外部。在特定实施例中,存储器304是非易失性(non-volatile)存储器。在特定实施例中,存储器304包括只读存储器(read-onlymemory,简称为rom)和随机存取存储器(randomaccessmemory,简称为ram)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmableread-onlymemory,简称为prom)、可擦除prom(erasableprogrammableread-onlymemory,简称为eprom)、电可擦除prom(electricallyerasableprogrammableread-onlymemory,简称为eeprom)、电可改写rom(electricallyalterableread-onlymemory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(staticrandom-accessmemory,简称为sram)或动态随机存取存储器(dynamicrandomaccessmemory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器304(fastpagemodedynamicrandomaccessmemory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extendeddateoutdynamicrandomaccessmemory,简称为edodram)、同步动态随机存取内存(synchronousdynamicrandom-accessmemory,简称sdram)等。
存储器304可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的计算机程序指令。
处理器302通过读取并执行存储器304中存储的计算机程序指令,以实现上述实施例中的任意tcp连接的预认证方法。
可选地,上述电子装置还可以包括传输设备306,其中,该传输设备306和上述处理器302连接。
传输设备306可以用来经由一个网络接收或者发送数据。上述的网络具体实例可包括电子装置的通信供应商提供的有线或无线网络。在一个实例中,传输设备包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备306可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
可选地,在本实施例中,上述处理器302可以被设置为通过计算机程序执行以下步骤:
s101、在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文。
s102、对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过。
s103、当判断为认证通过后,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的tcp连接的预认证方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意tcp连接的预认证方法。
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
1.一种tcp连接的预认证方法,其特征在于,该方法包括:
在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;其中,tcpsyn报文中携带客户端发送给服务端口的tcp选项;
对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过;
若判断为认证通过,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
2.根据权利要求1所述的tcp连接的预认证方法,其特征在于,对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过包括:
解密:对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;
认证:对认证信息进行各维度校验;
控制:对终端设备的业务访问放行和控制,其中,终端设备包括当前发起tcp连接的服务端。
3.根据权利要求2所述的tcp连接的预认证方法,其特征在于,tcpsyn报文中携带客户端发送给服务端口的tcp选项,
解密过程包括:
检查tcp选项是否携带快速标识,若携带,根据预设规则将tcp选项拆分成密文和hmac;通过服务器存储的秘钥对密文进行数字签名,验证hmac是否匹配,若匹配,通过秘钥对密文进行解密,得到认证信息、携带的摘要;
对认证信息进行摘要计算,比对计算得到的摘要与携带的摘要是否相同;
若相同,提取出认证信息。
4.根据权利要求2所述的tcp连接的预认证方法,其特征在于,认证信息包括随机数、硬件特征码、用户id、服务端端口信息的一种或多种;
认证过程包括以下步骤的一种或多种:
比对提取出的随机数与服务端存储的映射是否冲突;
若不冲突,对设备特征码(硬件特征码)和用户id进行用户访问认证;
若认证通过,将服务端端口信息与tcpsyn报文的目的端口进行匹配,得到匹配结果。
5.根据权利要求2所述的tcp连接的预认证方法,其特征在于,对终端设备的业务访问放行和控制具体为:
在解密、认证过程中,若规则不匹配,直接丢弃tcpsyn报文,不作任何响应;
否则,将tcpsyn报文送回tcp协议栈。
6.根据权利要求1所述的tcp连接的预认证方法,其特征在于,所述方法还包括:
获取客户端的认证信息;
将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;
为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端。
7.一种tcp连接的预认证的系统,其特征在于,包括:
加密装置,用于获取客户端的认证信息;将认证信息进行哈希计算得到摘要,对认证信息和摘要进行加密得到密文;为密文添加hmac,将密文和hmac作为tcp选项封装在tcpsyn报文中,发送给服务端;
认证设备,抓取tcpsyn报文并包括解密模块,用于对抓取的tcpsyn报文进行识别处理,若识别结果为合法,对tcpsyn报文进行解密,提取出认证信息;认证模块:用于对认证信息进行各维度校验;控制模块:用于对终端设备的业务访问放行和控制。
8.一种tcp连接的预认证的装置,其特征在于,包括:
获取模块,用于在tcpsyn报文通过tcp协议栈被发送到服务端口之前,抓取tcpsyn报文;
预认证模块,用于对抓取的tcpsyn报文进行校验匹配,验证tcpsyn报文是否认证通过;
处理模块,用于当判断为认证通过后,将tcpsyn报文送回tcp协议栈,完成后续的建链流程。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1-6中任一项所述的tcp连接的预认证方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至6中任一项所述的tcp连接的预认证方法。
技术总结