发明内容
本发明提供一种一种网络入侵防御方法及装置,用以解决现有技术中资源的消耗浪费较大以及网络性能影响较大的缺陷,可以使业务容器不存在侵入性,降低整体的沟通交流及运维成本。
第一方面,本发明实施例提供了一种网络入侵防御方法,内核态入侵防御模块和用户态入侵防御程序部署在承载运行容器的服务器节点,包括:通过所述内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问所述服务器节点的业务消息的网络数据包;若通过所述内核态入侵防御模块根据网络的连接状态,确定不放行所述网络数据包,通过用户态入侵防御程序将所述网络命名空间的ID发送到所述内核态入侵防御模块;若通过所述内核态入侵防御模块根据所述网络命名空间的ID,确定将所述网络数据包发送到所述用户态入侵防御程序,将所述网络数据包及对应的网络命名空间的ID发送到所述用户态入侵防御程序;通过所述用户态入侵防御程序根据所述网络命名空间的ID,获取对应的防护规则集,将所述网络数据包与所述防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到所述内核态入侵防御模块;通过所述内核态入侵防御模块基于所述裁决结果对所述网络数据包进行处理。
进一步地,所述网络入侵防御方法,还包括:若连续预设数目的网络数据包的裁决结果为放行网络数据包,通过所述用户态入侵防御程序向所述内核态入侵防御模块发送持续放行网络数据包的裁决结果;通过所述内核态入侵防御模块执行放行所述连续预设数目的网络数据包之后的网络数据包的操作。
进一步地,所述通过所述内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问所述服务器节点的业务消息的网络数据包之前,还包括:通过所述内核态入侵防御模块建立所述用户态入侵防御程序与所述内核态入侵防御模块之间进行信息传递的数据通道。
进一步地,所述通过用户态入侵防御程序将所述网络命名空间的ID发送到所述内核态入侵防御模块,包括:通过用户态入侵防御程序根据所述目标容器集的名称,获取所述目标容器集所属网络命名空间的ID;将所述网络命名空间的ID发送到所述内核态入侵防御模块。
进一步地,所述通过所述用户态入侵防御程序根据所述网络命名空间的ID,获取对应的防护规则集,包括:通过所述用户态入侵防御程序访问安全控制中心;在所述安全控制中心中拉取所述目标容器集的防护规则集;基于所述目标容器集与所述网络命名空间的ID的对应关系,获取所述网络命名空间的ID对应的防护规则集。
第二方面,本发明还提供了一种网络入侵防御装置,内核态入侵防御模块和用户态入侵防御程序部署在承载运行容器的服务器节点,包括:获取模块,用于通过所述内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问所述服务器节点的业务消息的网络数据包;第一发送模块,用于若通过所述内核态入侵防御模块根据网络的连接状态,确定不放行所述网络数据包,通过用户态入侵防御程序将所述网络命名空间的ID发送到所述内核态入侵防御模块;第二发送模块,用于若通过所述内核态入侵防御模块根据所述网络命名空间的ID,确定将所述网络数据包发送到所述用户态入侵防御程序,将所述网络数据包及对应的网络命名空间的ID发送到所述用户态入侵防御程序;匹配模块,用于通过所述用户态入侵防御程序根据所述网络命名空间的ID,获取对应的防护规则集,将所述网络数据包与所述防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到所述内核态入侵防御模块;处理模块,用于通过所述内核态入侵防御模块基于所述裁决结果对所述网络数据包进行处理。
进一步地,所述网络入侵防御装置,还包括:第三发送模块,若连续预设数目的网络数据包的裁决结果为放行网络数据包,通过所述用户态入侵防御程序向所述内核态入侵防御模块发送持续放行网络数据包的裁决结果;所述处理模块,还用于通过所述内核态入侵防御模块执行放行所述连续预设数目的网络数据包之后的网络数据包的操作。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的网络入侵防御方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的网络入侵防御方法的步骤。
第五方面,本发明实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现如第一方面所述的网络入侵防御方法的步骤。
本发明实施例提供的网络入侵防御方法及装置,包括:通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。通过对网络命名空间中网络数据包的拦截及对需要发送的网络数据包进行发送,用户态入侵防御模块通过网络命名空间ID识别不同的防护规则集,完成针对不同目标容器集使用不同的防护规则集进行匹配,实现使用一套程序防护节点上的所有目标容器集的效果,降低主机资源占用及消耗;安装部署过程只涉及节点的操作,不涉及业务容器的调整,对业务没有侵入性,简化整体安装部署及运维过程。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的一种网络入侵防御方法实施例的流程示意图。如图1所示,该网络入侵防御方法,可以包括以下步骤:
S101,通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包。
在步骤S101中,业务消息访问服务器时,业务消息的网络数据包到达承载运行容器的服务器节点,该承载运行容器的服务器节点可以是Node节点,Node节点的内核协议栈将该网络数据包发送至目标容器集所属的网络命名空间。目标容器集,也被称为pod,可以由一个或多个容器组成,是Kubernetes的最小调度单位。Netfilter是Linux系统在tcp/ip协议栈特定位置放置HOOK(俗称钩子函数)的框架,网络数据包被内核协议栈处理时,遇到HOOK函数,就执行HOOK函数中的操作,如网络数据包过滤、NAT、连接跟踪。网络命名空间是Linux网络系统的逻辑隔离空间,为命名空间内的所有进程提供了全新隔离的网络协议栈,包括网络接口,路由表和iptables规则等。
S102,若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块。
在步骤S102中,网络的连接状态可以包括放行状态、丢弃状态和不放行状态,本发明实施例对此不作限定。若网络络的连接状态为不放行状态,则可以确定不放行网络数据包。通过用户态入侵防御程序将所述网络命名空间的ID发送到内核态入侵防御模块,对网络数据包的处理进行进一步判断。
S103,若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序。
在步骤S103中,可以根据网络命名空间的ID确定对应的网络命名空间是否是安全的,若是安全的,则无需将其发送到用户态入侵防御程序,若是不安全的,则需要将其发送到用户态入侵防御程序。可以基于预设的白名单判断网络命名空间的ID对应的网络命名空间是否是安全的。若网络命名空间的ID存在于预设的白名单上,则可以确定对应的网络命名空间是安全的;若网络命名空间的ID不存在于预设的白名单上,则可以确定对应的网络命名空间是不安全的。本发明实施例对判断网络命名空间的ID对应的网络命名空间是否是安全的方法不作限定。
S104,若通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块。
在步骤S104中,不同的网络命名空间对应不同的防护规则集,基于网络命名空间的ID与防护规则集的映射关系可以确定网络命名空间对用的防护规则集。网络命名空间的ID与防护规则集的映射关系可以基于目标容器集确定的,本发明实施例对此不作限定。
可以将网络数据包与防护规则集的特定位置的特定内容进行匹配,确定网络数据包中是否包含恶意特征。若在匹配的结果为网络数据包中包含恶意特征,则向内核态入侵防御模块下发丢弃该网络数据包的裁决结果;若在匹配的结果为网络数据包中不包含恶意特征,则向内核态入侵防御模块下发放行该网络数据包的裁决结果。
S105,通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。
在步骤S105中,若裁决结果为放行网络数据包,则执行放行网络数据包的操作;若裁决结果为丢弃网络数据包,则执行丢弃网络数据包的操作。
本发明实施例提供的网络入侵防御方法,包括:通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。通过使用Netfilter框架在不同目标容器集所属的网络命名空间中拦截网络数据包,然后将网络命名空间ID和网络数据包附加在一起通过数据通道发送到用户态入侵防御程序。通过内核协议栈实现对网络命名空间中网络数据包的拦截及对需要发送的网络数据包进行发送,用户态入侵防御模块通过网络命名空间ID识别不同的防护规则集,完成针对不同目标容器集使用不同的防护规则集进行匹配,实现使用一套程序防护节点上的所有目标容器集的效果,降低主机资源占用及消耗;安装部署过程只涉及节点的操作,不涉及业务容器的调整,对业务没有侵入性,简化整体安装部署及运维过程。
图2为本发明提供的另一种网络入侵防御方法实施例的流程示意图。如图2所示,该网络入侵防御方法,可以包括以下步骤:
S201,若连续预设数目的网络数据包的裁决结果为放行网络数据包,通过用户态入侵防御程序向内核态入侵防御模块发送持续放行网络数据包的裁决结果。
S202,通过内核态入侵防御模块执行放行连续预设数目的网络数据包之后的网络数据包的操作。
在步骤S201和步骤S202中,预设数目可以为10,16,或者20,本发明实施例对此不作限定。若预设数目为16,当连续16个网络数据包的裁决结果为放行网络数据包,用户态入侵防御程序下发持续放行网络数据包的裁决结果,也就是说,此时默认网络连接是安全的,无需将连续16个放行的网络数据包之后的网络数据包发送至用户态入侵防御程序进行进一步的识别匹配,即当获取到第17个及以后的网络数据包时,直接对该网络数据包执行放行的操作。
本发明提供的对网络数据包放行的方法,在连续预设的数目的网络数据包被放行后,认为此时的网络连接是安全的,后续的网络数据包直接放行,使后续网络数据包不再发送到用户态入侵防御程序,降低整体的网络性能消耗。
在一些可选的实施例中,通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包之前,还可以包括:通过内核态入侵防御模块建立用户态入侵防御程序与内核态入侵防御模块之间进行信息传递的数据通道。
其中,数据通道可以包括内存映射通道及控制信令通道,本发明实施例对此不作限定。其中,内存映射通道用于发送网络数据包及对应的网络命名空间的ID到用户态入侵防御程序,控制信令通道用于发送网络命名空间的ID及裁决结果到内核态入侵防御模块。
本发明实施例提供的建立数据通道的方法,通过建立内存映射通道及控制信令通道区分上传数据和下发数据,保证数据传输的正确性并提升数据传输效率。
在一些可选的实施例中,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块,可以包括:通过用户态入侵防御程序根据目标容器集的名称,获取目标容器集所属网络命名空间的ID;将网络命名空间的ID发送到内核态入侵防御模块。
其中,目标容器集的名称与目标容器集所属网络命名空间的ID存在对应关系,其对应关系可以被记录在预先设定的列表中,根据该列表可以确定该网络命名空间的ID,将网络命名空间的ID发送到内核态入侵防御模块。
本发明实施例提供的确定网络命名空间的ID的方法,基于目标容器集的名称与目标容器集所属网络命名空间的ID的对应关系,可以快速获取网络命名空间的ID。
图3为本发明提供的一种获取防护规则集的方法实施例的流程示意图。如图3所示,该获取防护规则集的方法,可以包括以下步骤:
S301,通过用户态入侵防御程序访问安全控制中心。
S302,在安全控制中心中拉取目标容器集的防护规则集;
S303,基于目标容器集与网络命名空间的ID的对应关系,获取网络命名空间的ID对应的防护规则集。
在步骤S301至步骤S303中,安全控制中心是独立部署的WEB服务,负责向用户态入侵防御程序下发防护目标容器集的防护规则集。通过用户态入侵防御程序对其访问,可以拉取到目标容器集的防护规则集,由于目标容器集与网络命名空间的ID存在对应关系,可以根据目标容器集建立起网络命名空间的ID与防护规则集的对应关系,即可以获取网络命名空间的ID对应的防护规则集。
本发明提供的一种获取防护规则集的方法,可以通过拉取目标容器集的防护规则集,间接获取网络命名空间的ID对应的防护规则集。
图4为本发明提供的一种网络入侵防御方法的流程示意图。如图4所示,该网络入侵防御方法可以包括以下步骤:
网络数据包到达Node节点的内核协议栈,内核态入侵防御模块根据网络数据包的连状态是否为持续放行;若是,则放行网络数据包;若不是,则用户态入侵防御程序向内核态入侵防御模块下发网络数据包所在目标容器集所属网络命名空间的ID,内核态入侵防御模块根据网络命名空间的ID确定是否将网络数据包上传到用户态入侵防御程序;若不需要,则放行网络数据包;若需要,则将网络数据包及对应的网络命名空间ID上传到用户态入侵防御程序。用户态入侵防御程序根据网络命名空间ID获取对应的防护规则集,将网络数据包与防护规则集进行匹配,根据匹配的结果确定裁决结果。用户态入侵防御程序将裁决结果下发到内核态入侵防御模块,内核态入侵防御模块根据裁决结果执行相应操作,若裁决结果为放行网络数据包,则执行放行网络数据包的操作,若裁决结果为丢弃网络数据包,则执行丢弃网络数据包的操作。
图5为本发明提供的一种网络入侵防御装置实施例的结构组成示意图。如图5所示,该网络入侵防御装置,包括:
获取模块501,用于通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;
第一发送模块502,用于若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;
第二发送模块503,用于若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;
匹配模块504,用于通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;
处理模块505,用于通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。
可选地,该网络入侵防御装置,还包括:
第三发送模块,若连续预设数目的网络数据包的裁决结果为放行网络数据包,通过用户态入侵防御程序向内核态入侵防御模块发送持续放行网络数据包的裁决结果;
处理模块505,还用于通过内核态入侵防御模块执行放行连续预设数目的网络数据包之后的网络数据包的操作。
可选地,该网络入侵防御装置,还包括:
建立模块,用于通过内核态入侵防御模块建立用户态入侵防御程序与内核态入侵防御模块之间进行信息传递的数据通道。
可选地,第一发送模块502,包括:
获取单元,用于通过用户态入侵防御程序根据目标容器集的名称,获取目标容器集所属网络命名空间的ID;
发送单元,用于将网络命名空间的ID发送到内核态入侵防御模块。
可选地,匹配模块504,包括:
访问单元,用于通过用户态入侵防御程序访问安全控制中心;
拉取单元,用于在安全控制中心中拉取目标容器集的防护规则集;
获取单元,用于基于目标容器集与网络命名空间的ID的对应关系,获取网络命名空间的ID对应的防护规则集。
图6为本发明提供的一种网络入侵防御系统实施例的结构组成示意图。如图6所示,该网络入侵防御系统,包括:用户态入侵防御程序、内核态入侵防御模块、内核协议栈、容器集和安全控制中心。
其中,安全控制中心是独立部署的WEB服务,负责向用户态入侵防御程序下发防护容器集的相应的防护规则集。用户态入侵防御程序部署在Node节点,访问安全控制中心拉取需要防护的容器集的相应的防护规则集,并下发流量发送配置给内核态入侵防御模块。内核态入侵防御模块部署在Node节点,根据用户态入侵防御程序下发的流量发送配置,将特定网络命名空间的流量通过内存映射通道发送到用户态入侵防御程序。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)701、通信接口(CommunicationsInterface)702、存储器(memory)703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。处理器701可以调用存储器703中的逻辑指令,以执行如下方法:通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。
此外,上述的存储器703中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例提供的网络入侵防御方法,例如包括:通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的网络入侵防御方法,例如包括:通过内核态入侵防御模块在目标容器集所属的网络命名空间,获取访问服务器节点的业务消息的网络数据包;若通过内核态入侵防御模块根据网络的连接状态,确定不放行网络数据包,通过用户态入侵防御程序将网络命名空间的ID发送到内核态入侵防御模块;若通过内核态入侵防御模块根据网络命名空间的ID,确定将网络数据包发送到用户态入侵防御程序,将网络数据包及对应的网络命名空间的ID发送到用户态入侵防御程序;通过用户态入侵防御程序根据网络命名空间的ID,获取对应的防护规则集,将网络数据包与防护规则集进行匹配,将基于匹配结果确定的裁决结果发送到内核态入侵防御模块;通过内核态入侵防御模块基于裁决结果对网络数据包进行处理。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。