本发明涉及docker容器安全,具体为一种docker容器安全监测和防护方法及系统。
背景技术:
1、docker是一个开源的容器化平台,可帮助企业快速部署、扩展和管理应用程序。docker已成为一种非常流行的应用程序开发和部署方法,并且经历了许多变化。docker的发展一直呈现出井喷式的增长趋势,越来越多的企业将docker作为云计算和devops战略的核心。
2、当面对不断发展的技术时,安全性往往是人们最为关注的问题,虽然docker的发展已经取得很大的成功,但是它仍然还有一些挑战,例如安全性、可靠性和稳定性等问题,其中docker容器安全性是一个不可忽略需要重视的问题。
3、目前,docker生态系统中的一项重要功能的缺失就是对镜像内容的检查,所使用的镜像可能是由个人开发者上传,其数量丰富、版本多样,但质量参差不齐,甚至存在包含恶意漏洞的恶意镜像,因而可能存在较大的安全风险。docker生态系统中也缺失针对容器端口的处理,如容器信息的统一管理,容器端口的端口事件等。
技术实现思路
1、本发明的目的在于提供一种docker容器安全监测和防护方法及系统,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案:一种docker容器安全监测和防护方法,所述方法包括以下步骤:
3、自动捕获容器id和、端口信息、端口状态内容并持久化到数据库;
4、智能监听容器的端口流量、智能监听端口异常并持久化到数据库;
5、监听容器创建、变更和停止事件并持久化到数据库;
6、快速收集管理镜像信息和jar包依赖信息,并提供漏洞检测和容器异常处理功能。
7、优选的,自动捕获容器id和、端口信息、端口状态内容并持久化到数据库的具体操作包括:
8、端口流量智能监听系统扫描系统端口信息,并将系统端口的使用状态同步到数据库中,在用户对容器进行访问时,端口流量智能监听系统会记录访问数据,并将访问数据存入数据库中进行统一的维护,解决通过第三方的运维工具或者监控软件工具无法直接对集群环境中的容器端口进行动态监听和配置的问题,提高容器的可维护性。
9、优选的,智能监听容器的端口流量、智能监听端口异常并持久化到数据库的具体操作包括:
10、端口智能重定向系统通过容器端口数据库中获取具体的容器端口信息,端口智能重定向系统通过空闲端口数据库获取空闲端口的信息,端口智能重定向系统将容器端口重定向到随机空闲的端口,并使用空闲端口向使用方提供服务,端口智能重定向系统完成端口重定向之后,更新容器端口数据库和空闲端口数据库;端口异常智能处理系统从访问数据库中获取访问数据,包括数据内容、访问频率、ip信息,端口异常智能处理系统根据用户信息,定位用户的地区信息和身份信息,并将异常用户加入黑名单;端口异常智能处理系统过滤数据内容,将异常数据进行过滤,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务;端口异常智能处理系统判断访问频率,若判断访问频率过高,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务,端口异常智能处理系统将所有出现过的异常保存在数据库中,并对异常进行分类处理。
11、优选的,监听容器创建、变更和停止事件并持久化到数据库的具体操作包括:
12、监听容器创建事件:容器创建时,需指定镜像版本,根据镜像版本查询当前运行态容器所关联的jar依赖信息,记录当前容器id与镜像版本的关系,记录当前容器状态,持久化到数据库中;
13、监听容器变更事件:仅当镜像版本变化时,如回滚、升级等场景,记录容器id与镜像版本关系,取消与原镜像版本关系,记录当前容器状态,持久化到数据库中;若存在副本数的变更、资源使用量的变更、挂在卷内容的变更和亲和度策略变更复杂变更,则使用复杂内容变更拓展表进行记录保存;
14、事件容器停止事件:记录当前容器状态,包括停止时间、停止日志信息,持久化到数据库中。
15、优选的,快速收集管理镜像信息和jar包依赖信息,并提供漏洞检测和容器异常处理功能的具体操作包括:
16、从数据库中遍历得到容器信息,根据容器名称,命名空间信息,使用kubectlexec命令进入到容器内部,系统调用查找容器所使用的具体jar包脚本,定位到容器所使用的jar包位置,使用漏洞扫描工具对jar包,jar包本身以及jar包依赖进行漏洞扫描,扫描前会调用接口查询可忽略扫描的jar包枚举数据库数据,查询并跳过无需进行漏洞扫描的jar包;利用网络安全或漏洞检测工具,设置漏洞攻击方式,针对容器中所有需要扫描的jar包进行漏洞扫描,若漏洞扫描结果为异常,若为严重的漏洞,则使用命令直接停止当前容器,并将容器漏洞状态同步到数据库中,若漏洞为普通漏洞,则暂时不对容器进行操作,只同步容器漏洞状态,并使用消息的方式告知管理员,通过管理员来判断是否需要第一时间进行容器漏洞状态的认为干预操作,若容器中的jar正常,即没有漏洞被检测到,则直接将jar包信息同步到数据库中,并更新数据库中容器的漏洞状态。
17、一种docker容器安全监测和防护系统,所述系统由捕获模块、端口监听模块、容器监听模块以及收集模块组成;
18、捕获模块,自动捕获容器id和、端口信息、端口状态内容并持久化到数据库;
19、端口监听模块,智能监听容器的端口流量、智能监听端口异常并持久化到数据库;
20、容器监听模块,监听容器创建、变更和停止事件并持久化到数据库;
21、收集模块,快速收集管理镜像信息和jar包依赖信息,并提供漏洞检测和容器异常处理功能。
22、优选的,所述捕获模块,端口流量智能监听系统扫描系统端口信息,并将系统端口的使用状态同步到数据库中,在用户对容器进行访问时,端口流量智能监听系统会记录访问数据,并将访问数据存入数据库中进行统一的维护,解决通过第三方的运维工具或者监控软件工具无法直接对集群环境中的容器端口进行动态监听和配置的问题,提高容器的可维护性。
23、优选的,所述端口监听模块,端口智能重定向系统通过容器端口数据库中获取具体的容器端口信息,端口智能重定向系统通过空闲端口数据库获取空闲端口的信息,端口智能重定向系统将容器端口重定向到随机空闲的端口,并使用空闲端口向使用方提供服务,端口智能重定向系统完成端口重定向之后,更新容器端口数据库和空闲端口数据库;端口异常智能处理系统从访问数据库中获取访问数据,包括数据内容、访问频率、ip信息,端口异常智能处理系统根据用户信息,定位用户的地区信息和身份信息,并将异常用户加入黑名单;端口异常智能处理系统过滤数据内容,将异常数据进行过滤,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务;端口异常智能处理系统判断访问频率,若判断访问频率过高,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务,端口异常智能处理系统将所有出现过的异常保存在数据库中,并对异常进行分类处理。
24、优选的,所述容器监听模块,监听容器创建事件:容器创建时,需指定镜像版本,根据镜像版本查询当前运行态容器所关联的jar依赖信息,记录当前容器id与镜像版本的关系,记录当前容器状态,持久化到数据库中;
25、监听容器变更事件:仅当镜像版本变化时,如回滚、升级等场景,记录容器id与镜像版本关系,取消与原镜像版本关系,记录当前容器状态,持久化到数据库中;若存在副本数的变更、资源使用量的变更、挂在卷内容的变更和亲和度策略变更复杂变更,则使用复杂内容变更拓展表进行记录保存;
26、事件容器停止事件:记录当前容器状态,包括停止时间、停止日志信息,持久化到数据库中。
27、优选的,所述收集模块,从数据库中遍历得到容器信息,根据容器名称,命名空间信息,使用kubectlexec命令进入到容器内部,系统调用查找容器所使用的具体jar包脚本,定位到容器所使用的jar包位置,使用漏洞扫描工具对jar包,jar包本身以及jar包依赖进行漏洞扫描,扫描前会调用接口查询可忽略扫描的jar包枚举数据库数据,查询并跳过无需进行漏洞扫描的jar包;利用网络安全或漏洞检测工具,设置漏洞攻击方式,针对容器中所有需要扫描的jar包进行漏洞扫描,若漏洞扫描结果为异常,若为严重的漏洞,则使用命令直接停止当前容器,并将容器漏洞状态同步到数据库中,若漏洞为普通漏洞,则暂时不对容器进行操作,只同步容器漏洞状态,并使用消息的方式告知管理员,通过管理员来判断是否需要第一时间进行容器漏洞状态的认为干预操作,若容器中的jar正常,即没有漏洞被检测到,则直接将jar包信息同步到数据库中,并更新数据库中容器的漏洞状态。
28、与现有技术相比,本发明的有益效果是:
29、本发明提出的docker容器安全监测和防护方法及系统,通过扫描遍历,维护镜像版本与jar依赖和容器信息相绑定,能够实时查询当前运行所有容器的镜像信息和jar依赖情况,方便快速定位每个容器的jar包关联集合,并且提供漏洞检测功能,提供非侵入的模式,提供迅速、准确定位漏洞的方法,方便在安全漏洞等场景发生时,尽快进行干预操作。
1.一种docker容器安全监测和防护方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种docker容器安全监测和防护方法,其特征在于:自动捕获容器id和、端口信息、端口状态内容并持久化到数据库的具体操作包括:
3.根据权利要求1所述的一种docker容器安全监测和防护方法,其特征在于:智能监听容器的端口流量、智能监听端口异常并持久化到数据库的具体操作包括:
4.根据权利要求1所述的一种docker容器安全监测和防护方法,其特征在于:监听容器创建、变更和停止事件并持久化到数据库的具体操作包括:
5.根据权利要求1所述的一种docker容器安全监测和防护方法,其特征在于:快速收集管理镜像信息和jar包依赖信息,并提供漏洞检测和容器异常处理功能的具体操作包括:
6.一种根据权利要求1-5任意一项所述的docker容器安全监测和防护方法的docker容器安全监测和防护系统,其特征在于:所述系统由捕获模块、端口监听模块、容器监听模块以及收集模块组成;
7.根据权利要求6所述的一种docker容器安全监测和防护系统,其特征在于:所述捕获模块,端口流量智能监听系统扫描系统端口信息,并将系统端口的使用状态同步到数据库中,在用户对容器进行访问时,端口流量智能监听系统会记录访问数据,并将访问数据存入数据库中进行统一的维护,解决通过第三方的运维工具或者监控软件工具无法直接对集群环境中的容器端口进行动态监听和配置的问题,提高容器的可维护性。
8.根据权利要求6所述的一种docker容器安全监测和防护系统,其特征在于:所述端口监听模块,端口智能重定向系统通过容器端口数据库中获取具体的容器端口信息,端口智能重定向系统通过空闲端口数据库获取空闲端口的信息,端口智能重定向系统将容器端口重定向到随机空闲的端口,并使用空闲端口向使用方提供服务,端口智能重定向系统完成端口重定向之后,更新容器端口数据库和空闲端口数据库;端口异常智能处理系统从访问数据库中获取访问数据,包括数据内容、访问频率、ip信息,端口异常智能处理系统根据用户信息,定位用户的地区信息和身份信息,并将异常用户加入黑名单;端口异常智能处理系统过滤数据内容,将异常数据进行过滤,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务;端口异常智能处理系统判断访问频率,若判断访问频率过高,调用端口智能重定向系统,关闭旧端口,使用新端口提供服务,端口异常智能处理系统将所有出现过的异常保存在数据库中,并对异常进行分类处理。
9.根据权利要求6所述的一种docker容器安全监测和防护系统,其特征在于:所述容器监听模块,监听容器创建事件:容器创建时,需指定镜像版本,根据镜像版本查询当前运行态容器所关联的jar依赖信息,记录当前容器id与镜像版本的关系,记录当前容器状态,持久化到数据库中;
10.根据权利要求6所述的一种docker容器安全监测和防护系统,其特征在于:所述收集模块,从数据库中遍历得到容器信息,根据容器名称,命名空间信息,使用kubectlexec命令进入到容器内部,系统调用查找容器所使用的具体jar包脚本,定位到容器所使用的jar包位置,使用漏洞扫描工具对jar包,jar包本身以及jar包依赖进行漏洞扫描,扫描前会调用接口查询可忽略扫描的jar包枚举数据库数据,查询并跳过无需进行漏洞扫描的jar包;利用网络安全或漏洞检测工具,设置漏洞攻击方式,针对容器中所有需要扫描的jar包进行漏洞扫描,若漏洞扫描结果为异常,若为严重的漏洞,则使用命令直接停止当前容器,并将容器漏洞状态同步到数据库中,若漏洞为普通漏洞,则暂时不对容器进行操作,只同步容器漏洞状态,并使用消息的方式告知管理员,通过管理员来判断是否需要第一时间进行容器漏洞状态的认为干预操作,若容器中的jar正常,即没有漏洞被检测到,则直接将jar包信息同步到数据库中,并更新数据库中容器的漏洞状态。