指南 终极指南 Kubernetes安全 Kubernetes安全终极指南 如何保护您的Kubernetes管道 保护容器部署的重要性 像Kberetes这样的容器和工具使企业能够自动化应用程序部署的许多方面,从而提供巨大的业务优势。但是,这些新的就业与传统环境一样容易受到黑客和内部人士的攻击和利用。勒索软件勒索,加密劫持,数据盗窃和服务中断将继续用于私有云和公共云中基于容器的新虚拟化环境。 更糟糕的是,像Kberetes和公共云中的托管容器服务这样的新工具和技术本身将作为企业珍贵资产的网关受到攻击。特斯拉最近的Kberetes中间人漏洞和漏洞利用只是许多基于容器技术的潜在漏洞中的第一个,预计将在未来几个月和几年内激增。 容器的超动态特性带来了以下安全挑战 1.CI/CD管道中引入的漏洞。开源组件的大量使用和关键漏洞的持续发现会影响构建阶段、注册中心和生产中的容器映像。 2.东西向交通爆炸。虽然单片应用程序可以通过传统防火墙和主机安全工具来保护,但容器可以动态地增加东西向或内部流量,必须针对攻击进行监控。 3.增加攻击面。每个容器可能有不同的攻击面和漏洞,可以利用。此外,必须考虑容器编排工具(如 Kubernetes和Docker)引入的额外攻击面。 4.自动化安全以跟上步伐。旧的安全模型和工具将无法在不断变化的容器环境中跟上。考虑到Kberetes的自动化特性,容器和pod可以在几分钟或几秒钟内出现和消失。可以包括新网络连接的应用行为必须立即考虑到强制执行的安全策略中。需要下一代自动化安全工具来保护容器,在管道的早期声明安全策略并作为代码进行管理。 虽然可以说容器在默认情况下比传统应用程序更安全,因为它们应该具有有限的功能和专用接口,但只有在网络犯罪分子和民族国家行为者使用旧技术对代码发动攻击时才会如此 和基础设施没有漏洞,并已锁定所有可能的威胁媒介。但我们知道,在实践中这是不可能的。即使是,你仍然想对攻击进行实时监控。正如时间和经验在反复发生事件后所显示的那样,攻击者的复杂性始终与新的基础架构方法相匹配或胜过新的基础架构方法。不良行为者不断开发新的和新颖的方式来攻击容器。 安全相关的问题,问你的kubernetes团队 •您是否有适当的流程来在管道早期消除关键漏洞(可用的修复程序),甚至在构建阶段? •您是否了解正在部署的Kubernetespod?例如,您知道应用程序pod或集群之间的通信方式吗? •你有办法检测集装箱之间东西向交通的不良行为吗? •您知道如何确定每个吊舱的行为是否正常吗? •当内部服务pod或容器开始内部扫描端口或尝试随机连接到外部网络时,您如何收到警报? •您如何知道攻击者是否在您的容器,pod或主机中站稳脚跟? •例如,在第7层? •您是否能够监视pod或容器内部的情况,以确定是否存在潜在的漏洞? •您是否查看了Kubernetes集群的访问权限,以了解潜在的内部攻击向量? •您是否有用于锁定Kubernetes服务、访问控制(RBAC)和容器主机的清单? •当您有合规性策略时,您如何在运行时强制执行合规性?例如,为了确保对内部pod通信进行加密,您如何知道pod何时不使用加密通道? •在对应用程序通信进行故障排除或记录取证数据时,如何定位问题pod并捕获其日志?如何捕获原始流量 并在其消失之前进行快速分析? 本指南将概述保护Kubernetes和容器部署,特别关注自动化运行时安全性。 首先,了解Kubernetes如何工作以及如何处理网络非常重要。 Kubernetes如何工作 基础知识 对于那些不熟悉Kubernetes的人来说,这是对关键概念和术语的介绍。 Kubernetes是一种编排工具,可自动执行容器的部署、更新和监控。所有主要的容器管理和云平台都支持Kubernetes,例如RedHatOpenShift、DockerEE、Rancher、IBMCloud、AWSEKS、Azure、SUSECaaS和GoogleCloud。 •主节点。管理Kubernetesworker节点集群和pod在节点上部署的服务器。节点可以是物理或虚拟机。 •Worker节点这些服务器也被称为从服务器或奴隶,通常运行应用程序容器和其他Kubernetes组件,如代理和代理。 •豆荚。Kubernetes中的部署和寻址单元。pod有自己的IP地址,可以包含一个或多个容器(通常是一个 )。 •服务。服务充当其底层pod的代理,请求可以跨复制的pod进行负载平衡。服务还可以通过定义外部IP或NodePort来提供外部可访问的端点,以访问一个或多个pod。Kubernetes还提供DNS服务、路由器和负载平衡器。 用于管理Kubernetes集群的关键组件包括APIServer、Kubelet和etcd。Kubernetes还支持基于浏览器的管理控制台KubernetesDashboard,这是可选的。这些组件中的任何一个都是潜在的攻击目标。例如,Tesla劫持利用未受保护的Kubernetes控制台安装加密挖矿软件。 Kubernetes基于角色的访问控制 Kberetes基于角色的访问控制(RBAC)提供对资源的精细管理。它们可以启用对应用程序工作负载以及Kberetes系统资源的访问。诸如OpeShift之类的管理工具可能会添加其他功能,但依赖于或使用本机Kberetes基本安全控制。正确配置访问控制以防止未经授权访问Kberetes组件(如API服务器或应用程序工作负载)至关重要。 Kubernetes网络基础知识 Kubernetes中的关键网络概念是每个pod都分配有自己的可路由IP地址。Kubernetes(实际上是它的网络插件 )负责将主机之间的所有请求内部路由到相应的pod。对Kubernetespod的外部访问可以通过服务、负载均衡器或入口控制器提供,Kubernetes将其路由到相应的pod。 Kberetes使用iptables来控制pod之间(以及节点之间)的网络连接,处理许多网络和端口转发规则。这样,客户端不需要跟踪连接到Kberetes服务的IP地址。此外,端口映射被极大地简化(并且大部分被消除),因为每个pod都有自己的IP地址,并且其容器可以监听其本地端口。 由于所有这些覆盖网络都是由Kubernetes动态处理的,因此监控网络流量非常困难,安全性更低。以下是 Kubernetes网络如何工作的示例。 calib10557e951d calib0d7763386da eth0:10.1.2.10 tunI0:192.168.20.0 IPIP隧道:src :10.1.2.10 dst:10.1.2.11 eth0:10.1.2.11 tunI0:192.168.56.33 POD2 192.168.56.193 POD1 192.168.20.21 路由表: 192.168.20.0/24通过10.1.2.10devtunIO 192.168.56.93devcali0d7763386da src:192.168.20.21 dst:192.168.56.193 路由表: 192.168.56.0/24通过10.1.2.11devtunIO 192.168.20.21devcalib10557e961d src:192.168.20.21 dst:192.168.56.193 上图显示了数据包如何在不同节点上的pod之间遍历。在此示例中,使用了CalicoCNI网络插件。每个网络插件都有不同的方法来处理如何分配podIP地址(IPAM)、如何配置iptables规则和跨节点网络以及如何在节点之间交换路由信息。 1.一旦CNI网络插件收到来自Kubernetes的容器部署通知,它将负责分配IP地址并在节点上配置适当的iptables 和路由规则。 2.Pod1使用Pod2的IP或Pod2的服务IP作为目的地向Pod2发送数据包。(图中使用了Pod2的IP。) 3.如果使用服务IP,则kube-proxy执行负载平衡和DNAT,并将目标IP转移到远程pod的IP。 4.节点上的路由表确定分组应该被路由到哪里。 a.如果目的地是同一节点上的本地pod,则数据包将直接转发到pod的接口。 b.否则,根据网络插件是否采用覆盖联网或L3路由机制,分组被转发到适当的接口。 c.在上图中,数据包被发送到IPIP隧道接口,并使用IPIP隧道报头进行封装。 5.当分组到达目的地节点时,封装被移除。 6.远程节点上的路由表将分组路由到目的地Pod2。 由于路由、可能的NAT和封装正在发生并且由网络插件管理,因此极难检查和监视网络流量的攻击和连接违规。 Kubernetes漏洞和攻击向量 对在pod中运行的Kubernetes容器的攻击可以通过网络外部发起,也可以由内部人员内部发起,包括网络钓鱼攻击的受害者,其系统成为内部人员攻击的管道。以下是一些示例: 1.集装箱妥协。应用程序配置错误或漏洞使攻击者能够进入容器,开始探测网络、进程控制或文件系统中的弱点。 2.Pod之间的未授权连接。受损容器可以尝试与同一主机或其他主机上的其他正在运行的pod连接以探测或发起攻击。尽管第3层网络控制白名单podIP地址可以提供一些保护,但只有通过第7层网络过滤才能检测到对受信任IP地址的攻击。 3.数据从pod中流出。数据窃取通常使用技术组合来完成,其可以包括连接到命令和控制服务器和网络隧道以隐 藏机密数据的pod中的反向外壳。 1 吊舱 4 2 5 6主机 东-西 3 Worker节点 4.运行恶意进程的受损容器。容器通常具有有限且定义明确的一组正在运行的进程,但是受感染的容器可以启动恶意软件,例如加密挖掘或可疑进程,例如网络端口扫描,或者注入以前从未见过的二进制文件(进程利用)。 5.容器文件系统受损。攻击者可以安装易受攻击的库/软件包来利用容器。敏感文件也可以更改。一旦被利用 ,就可以尝试升级到根目录或其他分支。 6.受损的工作线程节点。主机本身可能会受到威胁,与任何活动容器一样。例如,DirtyCowLinux内核漏洞使用户能够升级到root权限。 攻击杀人链 最具破坏性的攻击涉及杀死链或一系列恶意活动,它们共同实现了攻击者的目标。这些事件可以在几秒钟内迅速发生,也可以在几天,几周甚至几个月内发生。 在kill链中检测事件需要多层安全监控,因为使用了不同的资源。为了在生产环境中获得最佳检测机会,要监控的最关键向量包括: 命令 武器化剥削 &控制 侦察交付安装过滤 •网络检查。攻击者通常通过网络连接进入,并通过网络扩展攻击。网络提供了第一个攻击机会,其次是检测横向移动的机会,以及捕获数据窃取活动的最后机会。 •集装箱。可以通过监视每个容器中的进程和syscall活动来检测应用程序或系统利用漏洞,以确定可疑进程是否已 启动或试图升级权限并退出容器。文件完整性监测和访问限制还可以检测修改文件、包或库的尝试。 •主机监控。这是传统主机(端点)安全性可以用来检测针对内核或系统资源的漏洞利用的地方。但是,主机安全工具也必须是Kubernetes和容器感知的,以确保足够的覆盖范围。例如,新主机可以动态进入Kubernetes集群 ,并且它们必须维护Kubernetes管理的安全设置和工具。 除了上述威胁向量外,攻击者还可以尝试破坏KubernetesAPIServer或控制台等部署工具,以获取机密访问权限或能够控制正在运行的Pod。 对kubernetes基础设施本身的攻击 要禁用或中断应用程序或获取对机密、资源或容器的访问权限,黑客还可以尝试破坏Kubernetes资源,如APIServer或Kubelets。例如,Tesla黑客利用未受保护的控制台来访问底层基础设施并运行加密挖掘软件。 当API服务器令牌被盗/被黑客攻击时,或者身份