Apache Log4j 2 是一款开源的日志记录工具,被广泛应用于各类框架中。近期,Apache Log4j 2 被爆出存在破绽,破绽现已公开,本文为 KubeSphere 用户提供倡议的修复计划。
此次破绽是因为 Log4j 2 提供的 lookup 性能造成的,该性能容许开发者通过一些协定去读取相应环境中的配置。但在实现的过程中,并未对输出进行严格的判断,从而造成破绽的产生。因为大量的软件都应用了 Log4j 2 插件,所以大量的 Java 类产品均被波及,包含但不限于 Apache Solr、srping-boot-strater-log4j2、Apache Struts2、ElasticSearch、Dubbo、Redis、Logstash、Kafka… 更多组件能够参考 Log4j 2 相干文档。
受影响的 Log4j 版本为 Apache Log4j 2.x < 2.15.0-rc2。目前官网公布了 Apache 2.15.0-rc2 版本对该破绽进行了修复,然而该版本并非正式发行版,故存在不稳固的因素,如要降级倡议对相干数据进行备份。
同时,也提供了三种办法对破绽进行补救,为
- 将零碎环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS
设置为true
- 批改配置
log4j2.formatMsgNoLookups=True
- 批改 JVM 参数
-Dlog4j2.formatMsgNoLookups=true
以下三种解决办法,您能够任选其中一种进行参考。
办法一:批改零碎环境变量
因为 KubeSphere 默认应用了 ElasticSearch 收集日志,所以也应该在 KubeSphere 批改相应的配置来对破绽进行修复。以下阐明如何在 KubeSphere 中进行相应的操作对 ElasticSearch 进行修复。
将零碎环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS
设置为 True,为此,咱们须要批改 ElasticSearch 的 Yaml 文件,因为它是一个 StatefulSet 文件,所以须要进行如下批改:
kubectl edit statefulset elasticsearch-logging-data -n kubesphere-logging-system
kubectl edit statefulset elasticsearch-logging-discovery -n kubesphere-logging-system
在这两个 Yaml 文件中插入环境变量设置:
env:
- name: FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS
value: "true"
办法二:批改 Log4j 2 配置
另外,您也能够批改配置 log4j2.formatMsgNoLookups=True
,您能够执行如下命令:
kubectl edit configmaps elasticsearch-logging -n kubesphere-logging-system
而后插入下面所提到的配置:
log4j2.properties: |-
status=error
appender.console.type=Console
appender.console.name=console
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=[%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
rootLogger.level=info
rootLogger.appenderRef.console.ref=console
logger.searchguard.name=com.floragunn
logger.searchguard.level=info
# 插入此行
log4j2.formatMsgNoLookups=true
留神:
- 批改后请留神相干配置是否挂载进去,如果没有挂载进去,请重启 Pod。
- 如果您将 KubeSphere Logging 组件重新安装,ks-installer 可能会导致该 ConfigMap 的配置被重置,须要再参考办法二手动配置一遍,或者采取办法一,设置零碎环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 为 true
。
办法三:批改 ElasticSearch 的 JVM 参数
除了上述两种办法,您还能够抉择在 KubeSphere 集群中的 ElasticSearch 增加配置文件,独自配置 JVM 参数,详见 ElasticSearch 布告申明。
相干参考
- 对于 Apache Log4j 2 近程代码执行最新破绽的危险提醒:https://itsc.nju.edu.cn/7a/42…
- Artifacts using Apache Log4j Core:https://mvnrepository.com/art…
本文由博客一文多发平台 OpenWrite 公布!