目前我們的大數據基礎平臺類似于CDH枫弟,集成了各個開源軟件,Log4j2漏洞出現的時候鹏往,我們采用了兩個方案淡诗,一個是開啟防火墻,二是對應每個大數據組件進行更新伊履。
一韩容、防火墻
方案思路是,在初始化主機的時候加上防火墻策略唐瀑,集群間開啟白名單群凶,對外開放我們需要用到的端口,firewall
可能要用到的語句如下:
//開放端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent
//批量開放端口
firewall-cmd --zone=public --add-port=9200-9202/tcp --permanent
//開放ip
firewall-cmd --zone=trusted --add-source=對應IP/32 --permanent
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="對應IP/32" accept" --permanent
//開放端口給特定ip
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="對應IP/16" port protocol="tcp" port="9200" accept" --permanent
//以上命令增加使用命令刷新才生效
firewall-cmd --reload
//查看default zone規(guī)則
firewall-cmd --list-all
//查看指定zone規(guī)則
firewall-cmd --zone=trusted --list-all
二哄辣、大數據組件
其實一些像Zookeeper和Kafka這些用的Log4j是沒有啥影響的请梢,但是合作商需要你升級,因為一個漏洞就要把對應組件版本升級不太實際力穗,組件的版本升級我們還需要做版本調研和適配毅弧,所以采用的方案是更換jar包
重新打包,目前基于Java的組件如下:Zookeeper
当窗、Kafka
够坐、Flink
、Elastiserch
崖面、Neo4j
還有自身的基于SpringBoot基礎平臺服務元咙。
1、SpringBoot(V2.1.3)
SpringBoot升級對應log4j2版本即可嘶朱。
<properties>
<log4j2.version>2.17.0</log4j2.version>
</properties>
2蛾坯、Zookeeper(V3.4.14)
2.1 更換jar包
刪除jar包
log4j-1.2.17.jar
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
添加jar包
log4j-1.2-api-2.17.0.jar
log4j-api-2.17.0.jar
log4j-core-2.17.0.jar
log4j-slf4j-impl-2.17.0.jar
slf4j-api-1.7.30.jar
2.2 替換log4j.properties文件
log4j.properties
文件
property.filename = /var/log/zookeeper/zookeeper.log
filter.threshold.type = ThresholdFilter
filter.threshold.level = info
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n
appender.console.filter.threshold.type = ThresholdFilter
appender.console.filter.threshold.level = error
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${filename}
appender.rolling.filePattern = /var/log/zookeeper/zookeeper.log.%d{yyyy-MM-dd}
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d %p %C{1.} [%t] %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 30
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 30
rootLogger.level = info
rootLogger.appenderRef.rolling.ref=RollingFile
2.3 修改java.env
添加JVM配置,其中log4j.configurationFile
用于指定log4j2的日志配置文件疏遏,zookeeper.jmx.log4j.disable
用于關閉jmx脉课。
-Dlog4j.configurationFile=/usr/local/zookeeper-3.4.14/conf/log4j.properties -Dzookeeper.jmx.log4j.disable=true
3救军、Kafka(V2.11_2.1.1)
刪除jar包
log4j-1.2.17.jar
slf4j-api-1.7.25.jar
slf4j-log4j12-1.7.25.jar
添加jar包
log4j-1.2-api-2.17.0.jar
log4j-api-2.17.0.jar
log4j-core-2.17.0.jar
log4j-slf4j-impl-2.17.0.jar
slf4j-api-1.7.30.jar
4、Flink(V1.9.0)
刪除jar包
log4j-1.2.17.jar
slf4j-log4j12-1.7.15.jar
添加jar包
log4j-1.2-api-2.17.0.jar
log4j-api-2.17.0.jar
log4j-core-2.17.0.jar
log4j-slf4j-impl-2.17.0.jar
slf4j-api-1.7.30.jar
5倘零、Elastiserch(V7.2.0)
刪除jar包
log4j-1.2-api-2.11.1.jar
log4j-api-2.11.1.jar
log4j-core-2.11.1.jar
添加jar包
log4j-1.2-api-2.17.0.jar
log4j-api-2.17.0.jar
log4j-core-2.17.0.jar
6唱遭、Neo4j(V3.5.26)
Neo4j
我們的版本沒有影響,可以參考官方《Apache Log4j Security Vulnerability》
image.png
像Hadoop
呈驶、Hbase
拷泽、Hive
、Spark
這些組件我們目前不做調整袖瞻,有做過適配的歡迎推薦參考資料司致,因為不排除后期也要做升級處理。