前言
最近暴露出一个炸弹级别的漏洞 log4j
Log4j的GitHub公开披露了一个影响 Apache Log4j 2 实用程序多个版本的高严重性漏洞 (CVE-2021-44228)。
该漏洞影响了 Apache Log4j 2 的 2.0 到 2.14.1 版本。
2.0 <= Apache log4j2 <= 2.14.1
具体详情可以参看 https://logging.apache.org/log4j/2.x/
首先,受到影响的Es家族系列有
- Elasticsearch
- Logstash
- Elastic Cloud
- APM Java Agent
- Elastic Cloud Enterprise
- Elastic Cloud on Kubernetes
- Swiftype
很不幸,鄙人维护的多个Es项目都在此内,需要立马处理并且解决问题
处理方案
处理方案(1)
- 检查所有使用了 Log4j 组件的系统,并且立即使用log4j-2.17进行替换
- 重启 Elasticsearch 节点
检查所有使用了 Log4j 组件的系统,并且立即使用log4j-2.17进行替换
原来是2.15版本。但是2.15版本被暴露出有新的bug。。。
这个修复起来属实没完了,所以我这里是最新的2.17版本!
官方给出了具体链接:https://logging.apache.org/log4j/2.x/changes-report.html#a2.17.0
但是我寻思估计大家都比较懒。。。
所以我写了个脚本去处理这个问题
我把脚本和包都放置到了github里,直接调用bash就行了,应该是最简单的办法
具体使用方法在下面
处理方案(2)
如果不方便替换jar,则必须修改系统变量
- 修改 JVM 参数 -Dlog4j2.formatMsgNoLookups=true
- 修改配置 log4j2.formatMsgNoLookups=True
- 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
- 重启 Elasticsearch 节点
处理方案(3)
立马将线上机器下线,并且进行网关配置
例如nginx其他API访问阻隔请求,这里我不说了,因为我这里没涉及到。
脚本处理方案
首先把我的脚本下下来
地址:https://github.com/Alexanderklau/Amusing_python/tree/master/Network_security/log4j-fix
或者直接拖那个rar下来,都是一样的
https://github.com/Alexanderklau/Amusing_python/blob/master/Network_security/log4j-fix/log4j-fix.rar
解压完之后
首先进行检查
此处显示无风险,因为我已经修复过了,如果你的jar版本低于15,应该会显示有风险
再运行脚本进行替换
替换完毕
手动重启Es服务
1 | systemctl restart elasticsearch |
结束