介绍
我正在尝试通过与 Kubernetes 集群相关的一系列项目来减少漏洞数量,其中涉及的过程之一是强化我们的映像。为此,我目前正在利用 Twistlock 来突出显示所有潜在漏洞,目前我们正在尝试删除所有高/重要和关键漏洞。
根据 Twistlock 的仪表板,易受攻击的软件包之一与sqlite&另一个关联到libxml2。如果可以的话,我还想消除与总线,只是在这一点上我有点不确定如何解决这个问题。
过程
到目前为止,我正在尝试使用一个相当原始的过程来处理上面提到的包,因为我使用的是 CentOS,所以我在 dockerfile 中执行以下命令:
## Use the base image.
FROM base-img
## Utilise root for package management.
USER root
RUN yum update
RUN yum clean all
RUN yum remove sqlite
RUN yum remove libxml2
## Run as non root user.
USER jboss
## Now to remove yum.
RUN rpm -e $(rpm -qa '*yum*')
## etc.
然而,这会导致一些错误,例如,当尝试运行我们的 docker build 命令时:
...
Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected
...
结论
我想我需要 Linux 专家的帮助?由于该项目的要求是确保最大程度地保证安全性,因此我们非常希望消除尽可能多的潜在威胁,我已经差不多已经确定了应用层。现在我正在深入研究操作系统层,很快我也会深入研究网络层,因此,如果有人可以提供有关如何消除此类威胁的任何意见或指导,我们将不胜感激。
免责声明
不幸的是,我距离 Linux 专业人士还很远,最多可能是中级,所以如果我遗漏了什么,请耐心等待。我还创建了一个关于SO的问题,只是这与 JBoss 更相关,如果你们中的任何人能够帮助解决这个问题,我们也将不胜感激。
答案1
您的流程存在一些问题,这使得它变得相当困难(如果不是棘手的话)。
您从一个大的基础图像开始:
jboss/wildfly
, 基于jboss/base-jdk:11
, 基于jboss/base
, 基于centos:7
。清理基础镜像很困难;从没有您需要的所有内容的图像开始并向其中添加比从包含太多内容的图像开始然后从中删除要容易得多。我不知道有什么基于 CentOS 7 的漂亮、最小的镜像;我用UBI 基础镜像但它们可能不适合您的情况。您假设任何 CVE 都反映了您需要解决的漏洞。 CVE 只是一个唯一标识符;它应该代表一个真正的漏洞,但并不总是如此,即使它确实如此,该漏洞也可能与您的情况无关。例如,CVE-2017-15412涉及 XPath 扩展函数,这意味着它只是一个脆弱性在设置 XPath 扩展函数的程序中(并使它们可供用户控制的输入访问);这就是为什么您会看到它与 Chromium 一起列出,而不仅仅是
libxml2
. do的最新版本libxml2
包含一个修复程序,可以防止所有相关程序中的漏洞,但只有在您首先使用易受攻击的程序时才需要它。
评估和解决漏洞需要大量资源,这就是为什么大多数人依赖他们的提供商来这样做的原因:通常,谁生成了构建基础镜像的发行版,谁构建了您的基础镜像(如果是这样的话)不是你),也许还有托管你的基础设施的人。尽管 CentOS 7 仍在接收安全更新,但 Twistlock 在仪表板中显示的漏洞尚未得到修复,这一事实表明这些漏洞并不重要到需要解决。当然,这不是保证(一分钱一分货),但是如果您不打算盲目信任 CentOS,那么您也不应该盲目信任 Twistlock — 您需要进行自己的安全评估。