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 远程代码执行最新缝隙的危险提示: itsc.nju.edu.cn/7a/42/c4194…
- Artifacts using Apache Log4j Core:mvnrepository.com/artifact/or…
本文由博客一文多发渠道 OpenWrite 发布!