2022年log4j爆出严重的安全漏洞,对于ElasticSearch-7.14.0同样使用了log4j的不安全版本。下边就介绍下ElasticSearch-7.14.0升级log4j的方法:
在ES的安装目录查找所有使用log4j相关jar的地方
find ./ -name "log4j*"
预计可以查到以下文件:
/elasticsearch/lib/log4j-api-2.11.1.jar
/elasticsearch/lib/log4j-core-2.11.1.jar
/elasticsearch/modules/repository-url/log4j-1.2-api-2.11.1.jar
/elasticsearch/modules/x-pack-core/log4j-1.2-api-2.11.1.jar
/elasticsearch/modules/x-pack-identity-provider/log4j-slf4j-impl-2.11.1.jar
/elasticsearch/modules/x-pack-security/log4j-slf4j-impl-2.11.1.jar
将以上文件更换成log4j安全版本log4j-*-2.17.1.jar
启动ES
进入ES安装目录的bin子目录下执行以下命令:
./elasticsearch -d
启动遇见的问题:
更换之后,启动ES过程中报了如下错误:
java.security.AccessControlException: access denied("java.lang.RuntimePermission", "getClassLoader")
经过分析排查,原因在于JDK有一些安全限制。
最后解决办法:在es使用的jdk安装目录的/conf/security,修改java.policy,添加一下配置即可
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";