译者 | 赵青窕
审校 | 孙淑娟
容器是一个软件包,其中包含在任何操作系统和基础架构上运行所需的所有依赖项,包括代码、配置文件、库和系统工具。每个容器都包含一个运行时环境,使应用程序能够在各种计算环境之间迁移——例如,从物理机迁移到云。
容器提供了许多好处,但也带来了重大的安全挑战。容器存在一个新的攻击面,需要不同的安全措施、响应策略和取证方法。容器事件响应是响应容器安全事件的标准化方法。
事件响应是一项安全功能,涉及检测影响网络资源和信息资产的安全事件,并采取适当的步骤来评估和补救。安全事件可以是恶意软件感染(malware infection)、凭据泄露和数据库泄露。容器事件响应有助于阻止、遏制、修复和防止针对容器化工作负载的安全威胁。
为什么容器安全如此重要
容器被广泛用作DevOps流水线(DevOps pipelines)中的轻量级构建块(lightweight building blocks),使容器安全成为现代 IT 安全策略的重要组成部分。同虚拟机 (VM) 一样,容器包含运行应用程序所需的一切——代码、程序运行时环境(runtime)、工具、库、配置信息——无论环境如何,按照操作系统中的设计运行。与 VM 不同,它具有高度可移植性,启动速度更快,并且消耗的资源少得多。
Docker 和 Kubernetes 等容器平台包含一些基本的安全控制机制,但容器化应用程序开发通常包含可能易受攻击的第三方软件组件。此外,Docker 和 Kubernetes 默认情况下并不安全,因此确保安全配置至关重要,这在大规模情况下可能很复杂。
容器容易受到可以绕过主机隔离的恶意进程的攻击。此外,容器基于可能被攻击者篡改或可能包含旧的或易受攻击的软件组件的镜像。当容器不安全时,它们可以在容器内运行其他未经授权的容器和应用程序,并且在极端情况下,可以允许攻击者破坏主机和整个容器集群。
为什么取证在云原生环境中有所不同
一般来说,取证是信息安全的重要组成部分,尤其是事件响应。这是一个新兴领域,现在有以DFIR(数字取证和事件响应)为中心的专业工具和安全认证。
当可疑事件发生时,安全分析必须执行快速取证并调查以了解发生了什么,确定事件是否代表真正的安全事件,并收集遏制和消除威胁所需的信息。
随着开发人员高速部署代码,执行取证调查变得更加困难。与可以保持数月不变的物理服务器或虚拟机不同,容器是轻量级的临时计算任务,orchestrator可以随时启动和关闭。容器的寿命可以短至几分钟或几秒钟,通常以小时为单位。无服务器函数的生命周期要短得多——例如,AWS Lambda 函数每次执行最多只能运行 15 分钟。
这些非常短的生命周期对安全性、可见性和取证具有深远的影响。因为容器是临时的,写入容器文件系统的数据通常会在容器关闭时被删除(除非它被显式保存到另一个位置)。像 Kubernetes 这样的工具会自动安排主机上的工作负载,并在主机之间动态移动工作负载,这意味着团队通常无法提前决定应用程序将在哪个主机上运行。
为了在云原生环境中启用取证,团队需要能够在高度动态的环境中捕获相关日志数据的策略和技术,并能够支持跨多个云和多达数千台主机运行的临时工作负载。
构建容器取证事件响应计划
在制定容器事件响应计划时,需要考虑三个主要重点领域。
预防措施
预防措施可以帮助减少容器上的攻击面。例如,您永远不应该在容器上提供 root 访问权限,限制对 kubectl 和 Kubernetes API 的访问,并确保 Kubernetes 运行的是最新版本并且集群具有强化配置。
利用 Kubernetes 中可用的安全工具非常重要,包括 Docker Statistics API,它可以帮助收集系统指标(system metrics)。系统指标对于需要了解系统大规模运行时容器负载如何影响系统的分析师很有用。
基于这些指标,DevOps 和安全团队可以了解容器和 Pods 内部发生的情况。例如,他们可以确定敏感文件是否丢失或未知文件是否已添加到容器中,监控实时网络流量,并在容器或应用程序级别识别异常行为。
数据保存和调查
如果发生事故,保留必要的证据以供进一步调查非常重要:
- 不要关闭似乎受到威胁的节点或容器。这使得无法确定根本原因。
- 利用快照技术对运行可疑受感染容器进行备份。
- 识别关键证据并获得足够的可见性以了解根本原因和影响。尝试分析尽可能多的数据源。
事件响应计划
使用以下最佳方式来确保您在容器受到攻击时做好准备:
- 分配事件响应线索,在发生重大事件时充当关键决策者。
- 定义一个事件响应计划,其中包含针对不同类型的安全事件要遵循的明确步骤。
- 定义发生违规时响应者应使用的沟通和升级渠道。
- 了解法律和合规义务,这可能需要在指定时间段内报告违规行为。
- 进行红队练习(red team exercises)和评估,以不断改进您的安全防御并为应对真实事件做好准备。
总结
在本文中,我展示了容器安全和事件响应的基础知识,解释了容器取证的基础知识,并为您的容器事件响应计划提供了三个构建块:
- 预防措施——您可以采取的措施,用以减少攻击面并首先防止对容器的攻击。
- 数据保存和调查——确保在发生攻击时,您可以保存容器中的数据以进行调查和响应。
- 事件响应计划——创建一个计划来定义谁负责容器事件响应,当攻击发生时他们应该采取什么步骤,以及如何测试计划以确保其有效。
我希望这将有助于您提高组织应对针对云原生环境的威胁的能力。
译者介绍
赵青窕,51CTO社区编辑,从事多年驱动开发。研究兴趣包含安全OS和网络安全领域,发表过网络相关专利。
原文标题:What To Do When Containers are Attacked: An Incident Response Plan,作者:Sagar Nangare