常见的容器安全威胁都有哪些?

author author     2023-04-21     144

关键词:

以Docker 容器的安全问题为例

(1) Docker 自身安全

Docker 作为一款容器引擎,本身也会存在一些安全漏洞,CVE 目前已经记录了多项与 Docker 相关的安全漏洞,主要有权限提升、信息泄露等几类安全问题。

(2) 镜像安全

由于Docker 容器是基于镜像创建并启动,因此镜像的安全直接影响到容器的安全。具体影响镜像安全的总结如下。

镜像软件存在安全漏洞:由于容器需要安装基础的软件包,如果软件包存在漏洞,则可能会被不法分子利用并且侵入容器,影响其他容器或主机安全。

仓库漏洞:无论是Docker 官方的镜像仓库还是我们私有的镜像仓库,都有可能被攻击,然后篡改镜像,当我们使用镜像时,就可能成为攻击者的目标对象。

用户程序漏洞:用户自己构建的软件包可能存在漏洞或者被植入恶意脚本,这样会导致运行时提权影响其他容器或主机安全。

(3) Linux 内核隔离性不够

尽管目前Namespace 已经提供了非常多的资源隔离类型,但是仍有部分关键内容没有被完全隔离,其中包括一些系统的关键性目录(如 /sys、/proc 等),这些关键性的目录可能会泄露主机上一些关键性的信息,让攻击者利用这些信息对整个主机甚至云计算中心发起攻击。

而且仅仅依靠Namespace 的隔离是远远不够的,因为一旦内核的 Namespace 被突破,使用者就有可能直接提权获取到主机的超级权限,从而影响主机安全。

(4) 所有容器共享主机内核

由于同一宿主机上所有容器共享主机内核,所以攻击者可以利用一些特殊手段导致内核崩溃,进而导致主机宕机影响主机上其他服务。

既然容器有这么多安全上的问题,那么我们应该如何做才能够既享受到容器的便利性同时也可以保障容器安全呢?下面我带你来逐步了解下如何解决容器的安全问题。

如何解决容器的安全问题?

(1) Docker 自身安全性改进

事实上,Docker 从 2013 年诞生到现在,在安全性上面已经做了非常多的努力。目前 Docker 在默认配置和默认行为下是足够安全的。

Docker 自身是基于 Linux 的多种 Namespace 实现的,其中有一个很重要的 Namespace 叫作 User Namespace,User Namespace 主要是用来做容器内用户和主机的用户隔离的。在过去容器里的 root 用户就是主机上的 root 用户,如果容器受到攻击,或者容器本身含有恶意程序,在容器内就可以直接获取到主机 root 权限。Docker 从 1.10 版本开始,使用 User Namespace 做用户隔离,实现了容器中的 root 用户映射到主机上的非 root 用户,从而大大减轻了容器被突破的风险。

因此,我们尽可能地使用Docker 最新版本就可以得到更好的安全保障。

(2) 保障镜像安全

为保障镜像安全,我们可以在私有镜像仓库安装镜像安全扫描组件,对上传的镜像进行检查,通过与CVE 数据库对比,一旦发现有漏洞的镜像及时通知用户或阻止非安全镜像继续构建和分发。同时为了确保我们使用的镜像足够安全,在拉取镜像时,要确保只从受信任的镜像仓库拉取,并且与镜像仓库通信一定要使用 HTTPS 协议。

(3) 加强内核安全和管理

由于仅仅依赖内核的隔离可能会引发安全问题,因此我们对于内核的安全应该更加重视。可以从以下几个方面进行加强。

宿主机及时升级内核漏洞

宿主机内核应该尽量安装最新补丁,因为更新的内核补丁往往有着更好的安全性和稳定性。

使用Capabilities 划分权限

Capabilities 是 Linux 内核的概念,Linux 将系统权限分为了多个 Capabilities,它们都可以单独地开启或关闭,Capabilities 实现了系统更细粒度的访问控制。

容器和虚拟机在权限控制上还是有一些区别的,在虚拟机内我们可以赋予用户所有的权限,例如设置cron 定时任务、操作内核模块、配置网络等权限。而容器则需要针对每一项 Capabilities 更细粒度的去控制权限,例如:

cron 定时任务可以在容器内运行,设置定时任务的权限也仅限于容器内部;

由于容器是共享主机内核的,因此在容器内部一般不允许直接操作主机内核;

容器的网络管理在容器外部,这就意味着一般情况下,我们在容器内部是不需要执行ifconfig、route等命令的 。

由于容器可以按照需求逐项添加Capabilities 权限,因此在大多数情况下,容器并不需要主机的 root 权限,Docker 默认情况下也是不开启额外特权的。

最后,在执行docker run命令启动容器时,如非特殊可控情况,–privileged 参数不允许设置为 true,其他特殊权限可以使用 --cap-add 参数,根据使用场景适当添加相应的权限。

使用安全加固组件

Linux 的 SELinux、AppArmor、GRSecurity 组件都是 Docker 官方推荐的安全加固组件。下面我对这三个组件做简单介绍。

SELinux (Secure Enhanced Linux): 是 Linux 的一个内核安全模块,提供了安全访问的策略机制,通过设置 SELinux 策略可以实现某些进程允许访问某些文件。

AppArmor: 类似于 SELinux,也是一个 Linux 的内核安全模块,普通的访问控制仅能控制到用户的访问权限,而 AppArmor 可以控制到用户程序的访问权限。

GRSecurity: 是一个对内核的安全扩展,可通过智能访问控制,提供内存破坏防御,文件系统增强等多种防御形式。

这三个组件可以限制一个容器对主机的内核或其他资源的访问控制。目前,容器报告的一些安全漏洞中,很多都是通过对内核进行加强访问和隔离来实现的。

资源限制

在生产环境中,建议每个容器都添加相应的资源限制。下面给出一些执行docker run命令启动容器时可以传递的资源限制参数:

1  --cpus                          限制 CPU 配额

2  -m, --memory                    限制内存配额

3  --pids-limit                    限制容器的 PID 个数

例如我想要启动一个1 核 2G 的容器,并且限制在容器内最多只能创建 1000 个 PID,启动命令如下:

1  $ docker run -it --cpus=1 -m=2048m --pids-limit=1000 busybox sh

推荐在生产环境中限制CPU、内存、PID 等资源,这样即便应用程序有漏洞,也不会导致主机的资源完全耗尽,最大限度降低安全风险。

(4) 使用安全容器

容器有着轻便快速启动的优点,虚拟机有着安全隔离的优点,有没有一种技术可以兼顾两者的优点,做到既轻量又安全呢?

答案是有,那就是安全容器。安全容器是相较于普通容器的,安全容器与普通容器的主要区别在于,安全容器中的每个容器都运行在一个单独的微型虚拟机中,拥有独立的操作系统和内核,并且有虚拟化层的安全隔离。

安全容器目前推荐的技术方案是Kata Containers,Kata Container 并不包含一个完整的操作系统,只有一个精简版的 Guest Kernel 运行着容器本身的应用,并且通过减少不必要的内存,尽量共享可以共享的内存来进一步减少内存的开销。另外,Kata Container 实现了 OCI 规范,可以直接使用 Docker 的镜像启动 Kata 容器,具有开销更小、秒级启动、安全隔离等许多优点。

参考技术A

网络安全威胁

 

相比传统的云平台,容器云平台在网络方面一般会有比较大的差异,伴随着这些差异的引入,也引入了一些网络方面的安全问题。比如因为网络隔离模型的变化、资源共享方式的变化而出现的新的安全隐患,针对这两点变化我们分别看下他们带来的安全问题。

 

1. 网络模型

 

容器云平台中网络隔离大多使用逻辑隔离代替物理隔离。

 

物理隔离一般不会直接或者间接的连接公共网络,企业采用物理隔离网络一般是为了保护自己的各种各样的硬件设备和通信链路不被攻击,常见的攻击来自自然灾害、人为破坏等,被保护的硬件实体设备常见的有企业的路由器、工作站和其他的各种网络服务器等。从实际情况来看,一般只有使用了内网和公共网进行的物理隔离才能真正保证内部信息网络不被来自外界的攻击影响,比如来自黑客的攻击。

 

 

网络的逻辑隔离一般需要借助逻辑隔离设备来实现,从名称即可看出逻辑隔离器是不同网络间的一种中间件,用于连接不同的网络,常见的网络逻辑设备主要有防火墙、网关等。需要注意的是被隔离的网络之间仍然有物理的数据链路进行联通,被联通的两个网络之间不能直接的进行数据交换。

 

相比逻辑隔离物理隔离的安全性更高,企业网络多采用物理隔离代替逻辑隔离,以此来保证不同级别的组织或者部门的信息安全。容器云平台网络上采用逻辑隔离,来隔离不同的租户或者项目,一定程度上增加了云平台在网络方面的安全隐患。

 

2. 资源共享

 

容器云在网络方面的安全问题,除了上面我们讲到的网络逻辑隔离引入的问题,还有资源共享方面的问题。和传统的云平台一样,容器云平台一般也会有多租户的需求(公有云肯定会有多租户的存在,即使是私有云一般也会有多租户的需求,比如不同的子公司、同公司不同的部门一般都会有多个租户的需求)。

 

 

相比传统的云平台,容器云的多租户资源共享引入了更多的风险,在容器云中多个租户共享计算资源,很可能会因为隔离措施不当导致不同租户的逻辑网络被意外打通(国内某知名云厂商曾经发生过类似的问题),导致用户的资源被其他的用户意外的访问到,这种情况下用户可能会被其他的用户恶意攻击,导致数据泄露等严重的问题。容器云平台中通常借助网络防火墙/IPS来进行虚拟化,这种方式也是很常用的方式但是进入云平台之后,尤其是在用户众多的公有云场景中,网络防火墙这种虚拟化方式就不会暴露出虚拟化能力不足的问题,这个问题会导致已经建立的静态网络分区与隔离模型不能满足容器云中动态资源的共享需求。

 

主机安全威胁

 

容器云平台目前基本以Docker 容器和kubernetes 容器编排(kubernetes为主流,当然也有支持多种编排工具的厂商)。了解Docker 的同学应该都知道Docker 容器是通过命名空间(namespace)的方式将文件系统、进程、各种设备、网络等资源进行了隔离。除了对资源的隔离,Docker容器还对容器具有的权限进行了限制,对CPU、内存等资源的使用也进行了相应的限制。对Docker 容器资源的限制、隔离的目的是为了让容器之间互不影响。

 

容器与容器所在的宿主机共享内核、文件系统、各种硬件等资源。容器可以部署在物理机上,也可以选择部署在虚拟主机上。

 

由于Docker 容器与宿主机共享内核、文件系统等资源,Docker 本身的隔离性不如虚拟机主机完善,因此如果Docker 自身出现漏洞,可能会波及问题Docker 容器所在的宿主机,由于Docker 容器所在的宿主机上可能存在当前租户的其他容器,也可能存在其他租户的容器,所以问题最终可能会影响到其他的容器,并可能会破坏容器云平台上的宿主机。

 

参考技术B 容器安全需要综合使用工具、策略和流程来遏制安全威胁,常见的容器安全威胁有“构建环境安全”、“运行时安全”、“操作系统安全”以及“编排管理安全”,青藤云安全在容器安全领域有较好口碑和较专业技术能力,值得推荐。本回答被提问者采纳 参考技术C 容器安全需要综合使用工具、策略和流程来遏制安全威胁,常见的容器安全威胁有“构建环境安全”

常见的网络安全漏洞都有哪些

...由于其普遍性和严重性,注入漏洞位居漏洞排名第一位。常见的注入漏洞包括SQL、LDAP、OS命令、ORM和OGML。用户可以通过任何输入点输入构建的恶意代码,如果应用程序没有严格过滤用户的输入,一旦输入的恶意代码作为命令或... 查看详情

人工智能时代,计算机网络主要面临哪些安全威胁?

  互联网人工智能时代来临了,未来网络安全这块的发展空间有多大?随着物联网的不断应用,人们的生活和网络已经密不可分,网络上承载着数以十亿计的各种信息,这些数据信息是个人、企业甚至是国家的战略性资源,所... 查看详情

未来为什么如此重视网络安全,防范措施有哪些?

  互联网全面普及,未来网络安全这块的发展空间很大的。随着物联网的不断应用,人们的生活和网络已经密不可分,网络上承载着数以亿计的各种信息,这些数据信息是个人、企业甚至是国家的战略性资源,所以保障他们的... 查看详情

网络安全课程目标

...全(Windows&Linux);黑客攻防、恶意代码;通讯安全;常见应用协议威胁;WEB&脚本攻击技术;防火墙技术(FireWall);入侵检测系统技术(IDS);加密&VPN技术;产品安全;安全管理。网络安全是指网络系统的硬件、软件... 查看详情

非对称加密算法都有哪些,安全性能对比

参考技术A常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、ElGamal、DSA(数字签名用)Hash算法Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能... 查看详情

上传的安全威胁

】上传的安全威胁【英文标题】:Securitythreatswithuploads【发布时间】:2012-06-1903:41:58【问题描述】:我允许用户将文件上传到我的服务器。我面临哪些可能的安全威胁?如何消除它们?假设我允许用户从他们的系统或网络上传图... 查看详情

漏洞扫描工具都有哪些

...针对风险提供了及时的解释,开发人员可自行决定是否在容器或应用程序中使用该组件。常规的容器安全协议使用的是静态镜像扫描来发现漏洞,Trivy则是将漏洞扫描工具无缝合并到集成开发环境当中。另外,由于背靠庞大的开... 查看详情

常见的中间件都有哪些

第一款:tomcattomcat是一款Java语言servlet标准化的服务器软件。适用于本地开发、小项目或个人开发,Apache为HTML页面服务,而tomcat实际操作JSP页面和servlet,但是tomcat处理静态html的能力不如Apache服务器。特点:支持最新标准、更新... 查看详情

等保三级都需要哪些安全产品?都有哪些作用?

...保测评成为一个非常热门的话题。随着2017年《网络信息安全法》出台,类似于医疗、教育、物流等行业被陆陆续续要求需要做等保测评工作。等保测评分为一级至五级,大部分企业是要求做等保二级或者等保三级,... 查看详情

移动数据安全防护措施有哪些

数据泄露常见问题通常是由电子邮件、传输中数据、静态数据等各种互联网渠道引起的,但现在随着移动技术的兴起,无论是无意间的还是恶意的行为,导致数据泄露事件发生的概率变得越来越高,尤其是由公司... 查看详情

网络安全技术常见的ddos攻击方法都有哪些

参考技术A常见的DDoS攻击方法有:1、SYN/ACKFlood攻击这种攻击方法是经典最有效的DDOS攻击方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源IP和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回... 查看详情

网络安全存在那些潜伏威胁?

网络安全存在哪些潜伏的威胁呢?一般正常情况下我们会忽略掉那些基础设施的安全提示,因为觉得这个一般不会出现什么大的问题,如果有这种想法那就真的错了,针对网络安全是不可以大意的,只要稍微有点问题就会造成巨... 查看详情

linux运维工程师必须掌握哪些技能

...3、安全架构、安全威胁模型、以及加密、解密等原理,常见攻击和防范手段等。优秀的运维人员必须具备的技能:1、Linux系统基础入门-Linux的基础知识内容,和命令使用,以及用户和权限等核心知识点2、Linux系统管理和进阶-Linu... 查看详情

Web 容器管理安全性的常见替代方案?

】Web容器管理安全性的常见替代方案?【英文标题】:Commonalternativestowebcontainermanagedsecurity?【发布时间】:2012-05-2908:45:09【问题描述】:使用Tomcat(或Websphere)容器管理的安全性的常见替代方法是什么?我有一个令人不快的安全... 查看详情

Web 容器管理安全性的常见替代方案?

】Web容器管理安全性的常见替代方案?【英文标题】:Commonalternativestowebcontainermanagedsecurity?【发布时间】:2012-05-2908:45:09【问题描述】:使用Tomcat(或Websphere)容器管理的安全性的常见替代方法是什么?我有一个令人不快的安全... 查看详情

目前流行的最常见的病毒文件类型都有哪些? [关闭]

】目前流行的最常见的病毒文件类型都有哪些?[关闭]【英文标题】:Whatarethemostcommonvirusfiletypescurrentlycirculating?[closed]目前流行的最常见的病毒文件类型有哪些?[关闭]【发布时间】:2009-03-1311:52:49【问题描述】:我正在从事一... 查看详情

常见的文件系统都有哪些?

说说这些常见的文件系统对应的是哪些系统能否多补充点不常见的文件系统,谢谢啊答的好的,我会多加分的~~!我只见过fat16,fat32,也仅有fat的吗?文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NANDFlash的固... 查看详情

java容器都有哪些?

目录18.java容器都有哪些?19.Collection和Collections有什么区别?20.List、Set、Map之间的区别是什么?21.HashMap和Hashtable有什么区别?22.如何决定使用HashMap还是TreeMap?23.说一下HashMap的实现原理?24.说一下HashSet的... 查看详情