OpenShift Security (9) - 用 RHACS 扫描 Log4j 安全漏洞,屏蔽不安全镜像部署(附视频)

89 篇文章 3 订阅
76 篇文章 6 订阅

OpenShift 4.x HOL教程汇总
说明:本文已经在 OpenShift 4.11 + RHACS 3.71.0 环境中验证,需要先完成《OpenShift Security (2) - 安装 Red Hat Advanced Cluster Security(RHACS)

  • 本文将在 RHACS 中为 “Log4j” 安全漏洞对应的 “CVE-2021-44228” 配置单独的系统策略,并将策略运用在 build 和 deploy 镜像阶段。
  • RHACS 采用的是 “Kubernetes 的 Admission Controller 技术 + 安全策略库” 的机制对使用的镜像进行安全扫描和运行准入。

扫描特定的远程镜像

在 RHACS 的 Dashboard 页面中的 “Images at most risk” 区域点击 “View all” 按钮。
在这里插入图片描述
在 “MANAGE WATCHED IMAGES” 对话框中的 Image Name 中填入 “docker.io/elastic/logstash:7.13.0”,然后点击 ADD IMAGE 按钮。确认在对话框中显示成功对镜像扫描。
在这里插入图片描述
在 IMAGES 页面中确认可以找到 “docker.io/elastic/logstash:7.13.0”,其状态为 Inactive,另外还提示 Scanning via watch tag。
在这里插入图片描述
进入 “docker.io/elastic/logstash:7.13.0”,可以在其包括的 CVE 列表中看到 “CVE-2021-44228”。
在这里插入图片描述
进入 “CVE-2021-44228” 可以查看该 CVE 的描述,确认该漏洞由 Log4j 引起。
在这里插入图片描述
点击上图右侧 “2 COMPONENTS”,可以看到和 CVE 2021-44228 相关的 log4j 组件版本和被修复版本。
在这里插入图片描述

部署测试应用

执行以下命令在 OpenShift 中运行 “docker.io/elastic/logstash:7.13.0” 镜像,其中带有受漏洞影响的 Log4j 环境。

oc new-project log4shell 
oc run log4shell -n log4shell --image=docker.io/elastic/logstash:7.13.0
oc get pod -n log4shell

在 RHACS 中查看安全漏洞

进入 RHACS 控制台,在 Vulnerability Management 中的 “TOP RISKIEST IMAGES” 区域可以看到 “docker.io/elastic/logstash:7.13.0” 镜像。
在这里插入图片描述
然后点击上图 VIEW ALL,可以看到 “docker.io/elastic/logstash:7.13.0” 镜像已处于 Active 状态了,说明该镜像已经在运行了。
在这里插入图片描述

查看安全违规

  1. 在 RHACS 的 Dashborad 中确认有和 “Log4Shell” 相关的 violation 安全违规。
    在这里插入图片描述
  2. 通过 RHACS 的菜单进入 Violations 页面,通过 Severity 排名可以看到 Critical 级别的 Log4Shell: log4j Remote Code Execution vulnerability 违规项目。
    在这里插入图片描述
  3. 点击上图中包含的 “Log4Shell” 的违规项目,可以看到详细的违规内容和违规策略定义。
    在这里插入图片描述
    在这里插入图片描述

安全策略

修改安全策略

  1. 通过 Policy Management 菜单进入 RHACS 的安全策略管理页面。然后按照策略名称过滤 log4shell 以找到 “Log4Shell: log4j Remote Code Execution vulnerability” 策略。
    在这里插入图片描述
  2. 通过 Edit policy 菜单进入编辑策略页面。在 “Policy behavior” 步骤中将 Response method 改为 Inform and enforce,同时打开下方的 Enforce on Build 和 Enforce on Build 选项。最后保存安全策略。
    在这里插入图片描述

部署镜像,验证安全策略生效

  1. 先删除掉项目中所有资源。
oc delete all --all -n log4shell
  1. 然后在 “开发者” 视图中用 “部署镜像” 功能部署 “elastic/logstash:7.13.0”。在点击 “创建” 后会看到部署运行的 Pod 数量会从 1 减到 0。
    在这里插入图片描述
  2. 另外还可以在“部署详情”页面中的“事件”里看到 Pod 从 1 减到 0 的原因说明。
    在这里插入图片描述
  3. 在 RHACS 的 Violations 中找到 Log4Shell: log4j Remote Code Execution vulnerability 违规项目,确认其中 Enforcement 部分也说明了当发现 Deployment 中有该项安全违规,就将 replicas 的数量缩至 0。
    在这里插入图片描述
    在这里插入图片描述
  4. 将镜像换成更高的版本 “elastic/logstash:7.17.6” 后再 “创建” 部署,确认可以正常 部署运行 “elastic/logstash:7.17.6”。这说明新的镜像中已经不存在 log4j 的安全漏洞。

演示视频

视频

参考

http://cloud.redhat.com/blog/log4shell-practical-mitigations-and-impact-analysis
https://github.com/giannisalinetti/rhacs-log4shell-mitigation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值