Red Hat Advanced Cluster Security for Kubernetes 中的默认安全策略提供了广泛的覆盖范围,可以识别安全问题并确保环境中的安全最佳实践。通过配置这些策略,您可以自动阻止环境中高风险的服务部署并响应运行时安全事件。
Red Hat Advanced Cluster Security for Kubernetes 中策略的严重级别与 Red Hat 产品安全团队分配的严重级别不同。 Red Hat Advanced Cluster Security for Kubernetes 的策略严重级别为危急、高、中和低。Red Hat 产品安全团队将漏洞严重级别评定为危急、重要、中等和低。 虽然策略的严重级别和 Red Hat 产品安全团队的严重级别之间可能存在交互作用,但区分它们很重要。有关 Red Hat 产品安全团队严重级别的更多信息,请参阅 严重性等级。 |
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中严重性为危急的默认安全策略。这些策略按生命周期阶段进行组织。
生命周期阶段 | 名称 | 描述 | 状态 |
---|---|---|---|
构建或部署 |
Apache Struts:CVE-2017-5638 |
当部署包含 CVE-2017-5638 Apache Struts 漏洞的镜像时发出警报。 |
已启用 |
构建或部署 |
Log4Shell:log4j 远程代码执行漏洞 |
当部署包含包含 CVE-2021-44228 和 CVE-2021-45046 Log4Shell 漏洞的镜像时发出警报。Apache Log4j Java 日志库 2.0-beta9 - 2.15.0 版本(不包括 2.12.2 版本)中存在此缺陷。 |
已启用 |
构建或部署 |
Spring4Shell(Spring 框架远程代码执行)和 Spring Cloud Function 漏洞 |
当部署包含 CVE-2022-22965(影响 Spring MVC)和 CVE-2022-22963(影响 Spring Cloud)漏洞的镜像时发出警报。Spring Cloud 的 3.16、3.2.2 和更旧的无支持版本中存在缺陷。Spring Framework 的 5.3.0 - 5.3.17 版本、5.2.0 - 5.2.19 版本以及更旧的无支持版本中存在缺陷。 |
已启用 |
运行时 |
在特权容器中执行 Iptables |
当特权 Pod 运行 iptables 时发出警报。 |
已启用 |
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中高危级别的默认安全策略。这些策略按生命周期阶段组织。
生命周期阶段 | 名称 | 描述 | 状态 |
---|---|---|---|
构建或部署 |
可修复的通用漏洞评分系统 (CVSS) >= 7 |
当可修复漏洞的 CVSS 分数至少为 7 时发出警报。但是,Red Hat 建议您使用通用漏洞和披露 (CVE) 严重性而不是 CVSS 分数来创建策略。 |
已禁用 |
构建或部署 |
可修复严重性至少为重要 |
当可修复漏洞的严重性等级至少为“重要”时发出警报。 |
已启用 |
构建或部署 |
快速重置:HTTP/2 协议中的拒绝服务漏洞 |
针对包含易受 HTTP/2 服务器拒绝服务 (DoS) 漏洞影响的组件的镜像进行部署警报。这解决了 HTTP/2 中多路复用流处理中的缺陷。客户端可以快速创建请求并立即重置它们,这会为服务器增加额外的工作,同时避免达到任何服务器端限制,从而导致拒绝服务攻击。要使用此策略,请考虑克隆该策略并在启用之前添加 |
已禁用 |
构建或部署 |
镜像中公开的 Secure Shell (ssh) 端口 |
当部署公开端口 22(通常保留用于 SSH 访问)时发出警报。 |
已启用 |
部署 |
紧急部署注释 |
当部署使用紧急注释(例如 "admission.stackrox.io/break-glass":"ticket-1234")绕过 StackRox Admission 控制器检查时发出警报。 |
已启用 |
部署 |
环境变量包含密钥 |
当部署的环境变量包含“SECRET”时发出警报。 |
已启用 |
部署 |
可修复的 CVSS >= 6 且具有特权 |
当以特权模式运行的部署具有 CVSS 分数至少为 6 的可修复漏洞时发出警报。但是,Red Hat 建议您使用 CVE 严重性而不是 CVSS 分数来创建策略。 |
在 3.72.0 及更高版本中默认禁用 |
部署 |
具有重要和严重可修复 CVE 的特权容器 |
当以特权模式运行的容器具有重要或严重的已修复漏洞时发出警报。 |
已启用 |
部署 |
作为环境变量挂载的密钥 |
当部署将 Kubernetes 密钥作为环境变量挂载时发出警报。 |
已禁用 |
部署 |
公开的 Secure Shell (ssh) 端口 |
当部署公开端口 22(通常保留用于 SSH 访问)时发出警报。 |
已启用 |
运行时 |
加密货币挖掘进程执行 |
启动加密货币挖掘进程。 |
已启用 |
运行时 |
iptables 执行 |
检测有人运行 iptables,这是一种已弃用的在容器中管理网络状态的方法。 |
已启用 |
运行时 |
Kubernetes 操作:执行进入 Pod |
当 Kubernetes API 接收在容器中运行命令的请求时发出警报。 |
已启用 |
运行时 |
Linux 组添加执行 |
检测有人运行 addgroup 或 groupadd 二进制文件来添加 Linux 组。 |
已启用 |
运行时 |
Linux 用户添加执行 |
检测有人运行 useradd 或 adduser 二进制文件来添加 Linux 用户。 |
已启用 |
运行时 |
登录二进制文件 |
指示有人尝试登录。 |
已禁用 |
运行时 |
网络管理执行 |
检测有人运行可以操纵网络配置和管理的二进制文件。 |
已启用 |
运行时 |
nmap 执行 |
当有人在运行时在容器中启动 nmap 进程时发出警报。 |
已启用 |
运行时 |
OpenShift:访问 kubeadmin 密钥 |
当有人访问 kubeadmin 密钥时发出警报。 |
已启用 |
运行时 |
密码二进制文件 |
指示有人尝试更改密码。 |
已禁用 |
运行时 |
针对集群 Kubelet 端点的进程 |
检测对 healthz、Kubelet API 或 heapster 端点的滥用。 |
已启用 |
运行时 |
针对集群 Kubernetes Docker 统计端点的进程 |
检测对 Kubernetes docker 统计端点的滥用。 |
已启用 |
运行时 |
针对 Kubernetes 服务端点的进程 |
检测对 Kubernetes 服务 API 端点的滥用。 |
已启用 |
运行时 |
具有 UID 0 的进程 |
当部署包含以 UID 0 运行的进程时发出警报。 |
已禁用 |
运行时 |
Secure Shell 服务器 (sshd) 执行 |
检测运行 SSH 守护程序的容器。 |
已启用 |
运行时 |
SetUID 进程 |
使用 setuid 二进制文件,允许用户以提升的权限运行某些程序。 |
已禁用 |
运行时 |
影子文件修改 |
指示有人尝试修改影子文件。 |
已禁用 |
运行时 |
由 Java 应用程序生成的 Shell |
检测到 bash、csh、sh 或 zsh 等 shell 作为 Java 应用程序的子进程运行。 |
已启用 |
运行时 |
未授权的网络流量 |
针对任何超出“警报异常违规”设置基线的网络流量生成违规。 |
已启用 |
运行时 |
未经授权的进程执行 |
针对 Kubernetes 部署中容器规范的锁定进程基线未明确允许的任何进程执行生成违规。 |
已启用 |
下表列出了 Red Hat Advanced Cluster Security for Kubernetes 中中危级别的默认安全策略。这些策略按生命周期阶段组织。
生命周期阶段 | 名称 | 描述 | 状态 |
---|---|---|---|
构建 |
Docker CIS 4.4:确保扫描镜像并重新构建以包含安全补丁 |
当镜像未扫描且未重新构建以包含安全补丁时发出警报。重要的是经常扫描镜像以查找漏洞,重新构建镜像以包含安全补丁,然后为镜像实例化容器。 |
已禁用 |
部署 |
30 天扫描期限 |
当部署在 30 天内未扫描时发出警报。 |
已启用 |
部署 |
添加了 CAP_SYS_ADMIN 功能 |
当部署包含使用 CAP_SYS_ADMIN 升级权限的容器时发出警报。 |
已启用 |
部署 |
使用读写根文件系统的容器 |
当部署包含具有读写根文件系统的容器时发出警报。 |
已禁用 |
部署 |
允许权限提升的容器 |
当容器可能以意外的权限运行时发出警报,这会造成安全风险。当具有比其父进程更多权限的容器进程允许容器以意外的权限运行时,可能会发生这种情况。 |
已启用 |
部署 |
部署应至少具有一个 Ingress 网络策略 |
如果部署缺少 Ingress 网络策略,则发出警报。 |
已禁用 |
部署 |
具有外部公开端点的部署 |
检测部署是否具有任何通过任何方法外部公开的服务。具有在集群外部公开的服务的部署面临更高的入侵尝试风险,因为它们可以在集群外部访问。此策略提供警报,以便您可以验证是否需要在集群外部公开服务。如果服务仅用于集群内通信,请使用服务类型 ClusterIP。 |
已禁用 |
部署 |
Docker CIS 5.1:确保(如果适用)启用了 AppArmor 配置文件 |
使用 AppArmor 通过强制执行称为 AppArmor 配置文件的安全策略来保护 Linux 操作系统和应用程序。AppArmor 是一个 Linux 应用程序安全系统,某些 Linux 发行版默认情况下可用,例如 Debian 和 Ubuntu。 |
已启用 |
部署 |
Docker CIS 5.15:确保未共享宿主的进程命名空间 |
在容器和主机之间创建进程级隔离。进程ID (PID) 命名空间隔离进程ID空间,这意味着在不同PID命名空间中的进程可以具有相同的PID。 |
已启用 |
部署 |
Docker CIS 5.16:确保未共享宿主的IPC命名空间 |
当宿主的IPC命名空间与容器共享时发出警报。IPC(POSIX/SysV IPC)命名空间分离命名的共享内存段、信号量和消息队列。 |
已启用 |
部署 |
Docker CIS 5.19:确保未启用挂载传播模式 |
当启用挂载传播模式时发出警报。启用挂载传播模式后,您可以以双向、主机到容器和无模式挂载容器卷。除非明确需要,否则不要使用双向挂载传播模式。 |
已启用 |
部署 |
Docker CIS 5.21:确保未禁用默认seccomp配置文件 |
当seccomp配置文件被禁用时发出警报。seccomp配置文件使用允许列表来允许常见的系统调用并阻止所有其他调用。 |
已禁用 |
部署 |
Docker CIS 5.7:确保未在容器内映射特权端口 |
当在容器内映射特权端口时发出警报。小于1024的TCP/IP端口号是特权端口。出于安全原因,普通用户和进程无法使用它们,但容器可能会将其端口映射到特权端口。 |
已启用 |
部署 |
Docker CIS 5.9和5.20:确保未共享宿主的网络命名空间 |
当共享宿主的网络命名空间时发出警报。启用HostNetwork时,容器不会放置在单独的网络堆栈中,并且容器的网络不会容器化。结果,容器可以完全访问宿主的网络接口,并且启用了共享UTS命名空间。UTS命名空间在主机名和NIS域名之间提供隔离,它设置主机名和域名,这些主机名和域名对该命名空间中运行的进程可见。在容器中运行的进程通常不需要知道主机名或域名,因此不应与主机共享UTS命名空间。 |
已启用 |
部署 |
未扫描的镜像 |
当部署包含未扫描的镜像时发出警报。 |
已禁用 |
运行时 |
Kubernetes操作:端口转发到Pod |
当Kubernetes API收到端口转发请求时发出警报。 |
已启用 |
部署 |
挂载容器运行时套接字 |
当部署在容器运行时套接字上具有卷挂载时发出警报。 |
已启用 |
部署 |
挂载敏感的主机目录 |
当部署挂载敏感的主机目录时发出警报。 |
已启用 |
部署 |
未指定资源请求或限制 |
当部署包含没有资源请求和限制的容器时发出警报。 |
已启用 |
部署 |
Pod服务帐户令牌自动挂载 |
通过最大限度地减少将默认服务帐户令牌仅挂载到其应用程序需要与Kubernetes API交互的那些Pod,来保护Pod默认服务帐户令牌免受攻击。 |
已启用 |
部署 |
特权容器 |
当部署包含以特权模式运行的容器时发出警报。 |
已启用 |
运行时 |
crontab执行 |
检测crontab计划作业编辑器的使用。 |
已启用 |
运行时 |
检测到Netcat执行 |
检测到Netcat在容器中运行时。 |
已启用 |
运行时 |
OpenShift:访问高级集群安全中心管理员密钥 |
当有人访问Red Hat高级集群安全中心密钥时发出警报。 |
已启用 |
运行时 |
OpenShift:被模拟用户访问的Kubernetes密钥 |
当有人模拟用户以访问集群中的密钥时发出警报。 |
已启用 |
运行时 |
远程文件复制二进制执行 |
当部署运行远程文件复制工具时发出警报。 |
已启用 |
下表列出了Red Hat高级集群安全用于Kubernetes中低严重性的默认安全策略。这些策略按生命周期阶段组织。
生命周期阶段 | 名称 | 描述 | 状态 |
---|---|---|---|
构建或部署 |
90天镜像期限 |
当部署在90天内未更新时发出警报。 |
已启用 |
构建或部署 |
使用ADD命令而不是COPY命令 |
当部署使用ADD命令时发出警报。 |
已禁用 |
构建或部署 |
镜像中的Alpine Linux包管理器(apk) |
当部署包含Alpine Linux包管理器(apk)时发出警报。 |
已启用 |
构建或部署 |
镜像中的Curl |
当部署包含curl时发出警报。 |
已禁用 |
构建或部署 |
Docker CIS 4.1:确保已为容器创建用户 |
确保容器以非root用户身份运行。 |
已启用 |
构建或部署 |
Docker CIS 4.7:关于更新指令的警报 |
确保在Dockerfile中不单独使用更新指令。 |
已启用 |
构建或部署 |
在CMD中指定不安全 |
当部署在命令中使用“insecure”时发出警报。 |
已启用 |
构建或部署 |
latest标签 |
当部署包含使用“latest”标签的镜像时发出警报。 |
已启用 |
构建或部署 |
镜像中的Red Hat包管理器 |
当部署包含Red Hat、Fedora或CentOS包管理系统的组件时发出警报。 |
已启用 |
构建或部署 |
必需的镜像标签 |
当部署包含缺少指定标签的镜像时发出警报。 |
已禁用 |
构建或部署 |
Ubuntu包管理器执行 |
检测Ubuntu包管理系统的使用。 |
已启用 |
构建或部署 |
镜像中的Ubuntu包管理器 |
当部署在镜像中包含Debian或Ubuntu包管理系统的组件时发出警报。 |
已启用 |
构建或部署 |
镜像中的Wget |
当部署包含wget时发出警报。 |
已禁用 |
部署 |
丢弃所有功能 |
当部署不丢弃所有功能时发出警报。 |
已禁用 |
部署 |
编排器密钥卷的使用不当 |
当部署使用带有“VOLUME /run/secrets”的Dockerfile时发出警报。 |
已启用 |
部署 |
部署了Kubernetes Dashboard |
检测到Kubernetes dashboard服务时发出警报。 |
已启用 |
部署 |
必需的注释:电子邮件 |
当部署缺少“email”注释时发出警报。 |
已禁用 |
部署 |
必需的注释:所有者/团队 |
当部署缺少“owner”或“team”注释时发出警报。 |
已禁用 |
部署 |
必需的标签:所有者/团队 |
当部署缺少“owner”或“team”标签时发出警报。 |
已禁用 |
运行时 |
Alpine Linux包管理器执行 |
运行时运行Alpine Linux包管理器(apk)时发出警报。 |
已启用 |
运行时 |
chkconfig执行 |
检测到通常不在容器中使用的ckconfig服务管理器的使用。 |
已启用 |
运行时 |
编译器工具执行 |
运行时运行编译软件的二进制文件时发出警报。 |
已启用 |
运行时 |
Red Hat包管理器执行 |
运行时运行Red Hat、Fedora或CentOS包管理器程序时发出警报。 |
已启用 |
运行时 |
Shell管理 |
运行添加或删除shell的命令时发出警报。 |
已禁用 |
运行时 |
systemctl执行 |
检测systemctl服务管理器的使用。 |
已启用 |
运行时 |
systemd执行 |
检测systemd服务管理器的使用。 |
已启用 |
Red Hat高级集群安全用于Kubernetes包含一组默认策略,这些策略提供广泛的覆盖范围,以识别安全问题并确保环境安全的最佳实践。您可以使用RHACS门户查看默认策略、克隆它们以及编辑克隆的默认策略。
默认策略不支持策略即代码功能。 |
查看默认策略
在RHACS门户中,转到**平台配置** → **策略管理**。
**策略**视图还允许您配置策略。
策略信息按以下组组织
**策略**:策略的名称。
**描述**:对策略警报的更长、更详细的描述。
**状态**:策略的当前状态,启用或禁用。
**通知器**:为策略配置的通知器列表。
严重性:对策略的等级评定,分为关键、高、中、低四级,表示所需关注程度。
生命周期:此策略适用的容器生命周期阶段(构建、部署或运行时),以及启用策略时强制执行的阶段。
策略类别:列出类别,并允许您管理策略的类别。默认情况下,列出所有类别。您可以选择使用类别名称过滤类别。
您无法删除默认策略或编辑默认策略的策略条件。 |