第 9 章 入侵检测 入侵检测
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在本章中,我们将了解容器入侵检测如何通过新的底层 eBPF 接口运行,容器的取证工作是怎样的,以及如何捕获躲过所有其他控制措施的攻击者。
纵深防御意味着限制对所部署的每个安全控制的信任度。没有一种解决方案是无懈可击的,但您可以使用入侵检测系统 (IDS) 来检测意外活动,就像运动传感器检测运动一样。你的对手已经访问了你的系统,甚至可能已经查看了机密信息,因此 IDS 会实时查看你的系统是否有意外行为,并进行观察或阻止。警报可触发 IDS 采取进一步的防御行动,如转储受损内存或记录网络活动。
入侵检测可以检查文件、网络和内核的读写,通过允许列表或拒绝列表(如seccomp-bpf 配置所做的)来验证或阻止它们。如果 Captain Hashjack 的硬帽黑客组织可以远程访问您的服务器,那么他们使用带有已知行为签名的恶意软件、扫描网络或文件以寻找更多目标,或任何其他偏离 IDS 所了解的进程预期 "稳定 "基线的程序访问,都可能触发 IDS。
有些攻击者的攻击活动是在对手进入系统数周或数月后才被发现的,最终无意中触发了 IDS 检测。
默认值
稳定的行为是我们期望容器进程在按预期运行且未受到影响的情况下正常进行的操作。我们可以对收集到的任何数据采用同样的方法:访问和审计日志、度量和遥测、系统调用和网络活动。
大多数系统默认情况下都没有入侵检测功能,除非进行了配置。
威胁模型
入侵检测 可以检测到对 BCTL 系统的威胁。如果攻击者在容器中获取远程代码执行 (RCE),他们可能会控制进程,改变其行为。可能表明系统被入侵的潜在非稳定行为包括
-
新的或不允许的系统调用(也许是 fork 或 exec 系统调用,以创建类似 bash 或 sh 的 shell)
-
任何意外的网络、文件系统、文件元数据或设备访问
-
应用程序的使用和顺序
-
无法解释的进程或文件
-
更改用户或身份设置
-
系统和内核配置事件
在与更广泛的系统交互时,流程的任何属性和行为也可能受到审查。
提示
ccat和dockerscan等攻击工具会对注册表中的镜像投毒,而 则会在容器镜像中安装后门,攻击者可能会利用这些后门在运行时进入你的 pod。您的 IDS 应该注意到这类意外行为并发出警报。
当然,您不希望对合法活动发出警报,因此需要授权预期行为。这要么是预先配置的规则和签名,要么是在非生产环境中观察流程时了解到的。
应识别这些威胁,并将其配置为向 IDS 系统发出警报。我们将在本章了解如何操作。
传统 IDS
在了解云本地 IDS 之前,让我们先来看看这些年来比较突出的其他几种入侵检测应用。
传统的入侵检测系统分为 基于网络的 IDS 或基于主机的 IDS(NIDS 或 HIDS),有些工具同时提供这两种功能。这些系统历来使用主机内核或网络适配器发出的信号,并不了解容器使用的 Linux 命名空间。
Linux auditd 系统调用事件,但这并不能很好地关联分布式系统中各节点的活动。它也被认为是重量级的(会产生大量日志),而且由于命名空间进程的 ID 跟踪 "复杂且不完整",它无法按命名空间进行区分。
Suricata、Snort 和Zeek等工具根据规则和脚本引擎检查 网络流量,可以在同一主机上运行,也可以(因为它们往往是资源密集型的)在连接到被观察网络的专用硬件上运行。加密或隐写有效载荷可能会逃过此类 NIDS ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access