[转帖]kafka漏洞升级记录,基于SASL JAAS 配置和 SASL 协议,涉及版本3.4以下

kafka,漏洞,升级,记录,基于,sasl,jaas,配置,协议,涉及,版本,以下 · 浏览次数 : 0

小编点评

**攻击者可以使用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,在对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入。** **影响范围:**2.3.0 <= Apache Kafka <= 3.3.2 **解决办法:**升级到 3.4 版本。 **具体步骤:** 1. 下载 kafka3.4 并解压。 2. 将原配置文件复制一份到 3.4 版本。 3. 修改 3.4 版本配置文件,停止原 Kafka,启动 3.4 版本。 4. 下载并解压 kafka_2.12-3.4。 5. 将原配置文件复制一份到 3.4 版本的 `config` 目录下。 6. 修改 `config/service.properties` 文件中的 `KAFKA_HEAP_OPTS` 参数,注释掉 `authorizer.class.name` 参数。 7. 修改 `kafka-server-start.sh` 文件的 JVM 参数,添加 `-Djava.security.auth.login.config=../config/kafka_server_jaas.conf`。 8. 重置 `kafka_server-start.sh` 文件,启动 Kafka 服务。

正文

攻击者可以使用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,在对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入。
影响范围:2.3.0 <= Apache Kafka <= 3.3.2
解决办法:升级到3.4版本

具体步骤:原本的版本是kafka_2.11-2.3.1,升级到了kafka_2.12-3.4
1下载kafka3.4并解压
2将原配置文件复制一份到3.4版本
3修改3.4版本的配置文件,停止原kafka,启动3.4版本

1下载kafka3.4并解压

下载地址https://kafka.apache.org/downloads
拷贝到linux目标机器上,tar -zxvf kafka_2.12-3.4 进行解压

2将原配置文件复制一份到3.4版本

主要是把config/service.properties 复制到3.4版本的config目录下
鉴权的配置文件kafka_server_jaas.conf放到config目录下(请按照自己的配置文件修改)

修改3.4版本的kafka-server-start.sh server启动脚本的JVM参数进行修改
注意,我原本使用了kafka_server_jaas鉴权,请自行修改文件的相对路径

把export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"这一行,改为
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=../config/kafka_server_jaas.conf"

    3修改3.4版本的配置文件

    由于kafka3.4做了升级,和低版本配置文件是不一致的。
    目的是为了高版本兼容使用低版本的文件格式(万一高版本不适应,可以恢复到低版本)。如果数据量不大,可以直接写当前版本3.4,此处由于我是生产环境,而且是集群模式,所以使用的是2.3.1

    #如果您是从 0.11.0.x 或以上版本升级,并且您没有覆盖消息格式,那么您只需要覆盖 inter-broker 协议版本即可。
    inter.broker.protocol.version=CURRENT_KAFKA_VERSION(例如3.3,3.2等)
    #例如我现在版本是2.3.1,就写2.3.1
    inter.broker.protocol.version=2.3.1
    

      重点来了,由于我使用的低版本设置鉴权类,有设置这个参数时,“authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer” ,这个参数在3.4版本是不需要的,直接注释就好,否则会报错。

      #auth add properties
      security.inter.broker.protocol=SASL_PLAINTEXT
      sasl.enabled.mechanisms=PLAIN
      sasl.mechanism.inter.broker.protocol=PLAIN
      #authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
      allow.everyone.if.no.acl.found=true
      super.users=xxx:xxx
      

        如果是集群,注意Broker.id的配置项

        先将低版本kafka停止,然后启动高版本kafka,再修改inter.broker.protocol.version=2.3.1为高版号,重新启动。至此,kafka漏洞升级完毕。

        参考官网,会英文的可自行使用https://kafka.apache.org/documentation/#security_sasl

        文章知识点与官方知识档案匹配,可进一步学习相关知识
        Java技能树首页概览121039 人正在系统学习中

        与[转帖]kafka漏洞升级记录,基于SASL JAAS 配置和 SASL 协议,涉及版本3.4以下相似的内容:

        [转帖]kafka漏洞升级记录,基于SASL JAAS 配置和 SASL 协议,涉及版本3.4以下

        攻击者可以使用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,在对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入。 影响范围:2.3.0 <= Apache Kafka <= 3.3.2 解决办法:升级到3.4版本

        [转帖]Kafka 基本概念大全

        https://my.oschina.net/jiagoushi/blog/5600943 下面给出 Kafka 一些重要概念,让大家对 Kafka 有个整体的认识和感知,后面还会详细的解析每一个概念的作用以及更深入的原理 ・Producer:消息生产者,向 Kafka Broker 发消息的客户端

        [转帖]Kafka 与RocketMQ 落盘机制比较

        https://www.jianshu.com/p/fd50befccfdd 引言 前几期的评测中,我们对比了Kafka和RocketMQ的吞吐量和稳定性,本期我们要引入一个新的评测标准——软件可靠性。 何为“可靠性”? 先看下面这种情况:有A,B两辆越野汽车,在城市的周边地区均能很好应对泥泞的路况

        [转帖]Kafka关键参数设置

        https://www.cnblogs.com/wwcom123/p/11181680.html 生产环境中使用Kafka,参数调优非常重要,而Kafka参数众多,我们的java的Configuration代码中,经常设置的参数如下: Properties props = new Propertie

        [转帖]kafka压测多维度分析实战

        设置虚拟机不同的带宽来进行模拟压测 kafka数据压测 1、公司生产kafka集群硬盘:单台500G、共3台、日志保留7天。 1.1 版本:1.1.0 2、压测kafka。 2.1 使用kafka自带压测工具:bin/kafka-producer-perf-test.sh 命令参数解释: --num

        [转帖]Kafka—配置SASL/PLAIN认证客户端及常用操作命令

        介绍 SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程。 配置 增加jaas.properties 在kafka的config目录下增加jaas.properties文件指定认证协议为SASL_PLAI

        [转帖]kafka 配置认证与授权

        https://www.cnblogs.com/yjt1993/p/14739130.html 本例不使用kerberos做认证,使用用户名和密码的方式来进行认证 1、服务端配置 1.0 配置server.properties 添加如下配置 #配置 ACL 入口类 authorizer.class.

        [转帖]Kafka—配置SASL/PLAIN认证客户端及常用命令

        https://www.jianshu.com/p/c1a02fb1779f 介绍 SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程。 配置 增加jaas.properties 在kafka的confi

        [转帖]kafka搭建kraft集群模式

        kafka2.8之后不适用zookeeper进行leader选举,使用自己的controller进行选举 1.准备工作 准备三台服务器 192.168.3.110 192.168.3.111 192.168.3.112,三台服务器都要先安装好jdk1.8,配置好环境变量, 下载好kafka3.0.0

        [转帖]Kafka高可用 — KRaft集群搭建

        Apache Kafka Raft 是一种共识协议,它的引入是为了消除 Kafka 对 ZooKeeper 的元数据管理的依赖,被社区称之为 Kafka Raft metadata mode,简称 KRaft 模式。本文介绍了KRaft模式及三节点的 KRaft 集群搭建。 1 KRaft介绍 KR