Zookeeper添加SASL安全認證 修復方案

#作者:任少近

文章目錄

  • 1修復背景
  • 2 修復方案說明
  • 3 配置流程
    • 3.1停止zookeeper服務
    • 3.2Zookeeper添加SASL參數
    • 3.3配置jaas密碼文件
    • 3.4 添加啟動參數
    • 3.5啟動zookeeper服務
    • 3.6訪問測試
  • 4 Kafka連接zookeeper服務端配置
    • 4.1未配置身份認證
    • 4.2停止kafka服務
    • 4.3配置身份認證
    • 4.4啟動kafka服務
  • 5 回滾方案
    • 5.1 Zookeeper回滾方案
    • 5.2 Kafka回滾方案

1修復背景

Zookeeper未授權訪問漏洞通常指的是Zookeeper服務未進行適當的安全配置,導致外部用戶可未經認證和授權訪問Zookeeper服務,從而獲取到服務控制權。

2 修復方案說明

SASL:SASL(即簡單身份驗證和安全層)是一個身份驗證框架,它指定和描述將身份驗證機制插入應用程序協議的過程。它是一種用于驗證遠程計算機的互聯網標準框架或跟蹤方法。
涉及版本:3.6.0+

3 配置流程

3.1停止zookeeper服務

zookeeper]# ./bin/zkServer.sh stop

3.2Zookeeper添加SASL參數

  1. 先備份zookeeper/conf/zoo.cfg配置文件
  2. 在zookeeper/conf/zoo.cfg配置文件中添加如下SASL配置:
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    sessionRequireClientSASLAuth=true

3.2.1配置解析

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider	#啟用 SASL 認證

sessionRequireClientSASLAuth=true #自 3.6.0 版本開始:當設置為 true 時,ZooKeeper 服務器將只接受通過 SASL 與服務器進行認證的客戶端的連接和請求。未配置 SASL 認證或配置了 SASL 但認證失敗(即憑證無效)的客戶端將無法與服務器建立會話。在這種情況下,將返回一個類型錯誤代碼(-124),之后 Java 和 C 客戶端將關閉與服務器的會話,而不會嘗試重新連接。

3.3配置jaas密碼文件

  1. 創建zookeeper/conf/zk_jaas.conf密碼文件并寫入如下密碼配置:
Server {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zkadmin"      #服務端身份認證用戶名password="zkadmin"      #服務端身份認證密碼user_zkuser1="password1";     #允許用戶名zkuser1且密碼為password1的用戶訪問 user_zkuser2="password2";     #允許用戶名zkuser2且密碼為password2的用戶訪問user_zkuser3="password3";     #允許用戶名zkuser3且密碼為password3的用戶訪問
…
};Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zkuser1"      #客戶端用戶名1password="password1";   #客戶端密碼1
};Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zkuser2"password="password2";
};Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zkuser3"password="password3";
};

3.4 添加啟動參數

  1. 先備份zookeeper/bin/zkEnv.sh腳本文件
  2. 在zookeeper/bin/zkEnv.sh中添加如下配置:
export JVMFLAGS="-Djava.security.auth.login.config=/root/zookeeper/conf/zk_jaas.conf -Dzookeeper.requireClientAuthScheme=sasl"

3.5啟動zookeeper服務

zookeeper]# ./bin/zkServer.sh start

3.6訪問測試

  1. 使用配置zkEnv.sh的zkCli.sh命令
    在這里插入圖片描述
  2. 使用未配置zkEnv.sh的zkCli.sh命令
    在這里插入圖片描述

4 Kafka連接zookeeper服務端配置

4.1未配置身份認證

在kafka未配置zookeeper對應的Jaas.conf密碼時,使用kafka去連接zookeeper,Kafka連接失敗,出現缺少認證報錯信息。

在這里插入圖片描述

4.2停止kafka服務

kafka]#./bin/kafka-server-stop.sh

4.3配置身份認證

4.3.1配置jaas密碼文件
在/kafka/config/kafka_jaas.conf編寫如下jaas.conf密碼:

Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="zkuser"password="password";
};

4.3.2配置kafka啟動參數

  1. 在/kafka/bin/kafka-run-class.sh腳本中# JMX settings下添加如下配置:
-Djava.security.auth.login.config=/root/kafka/config/kafka_jaas.conf
  1. 整體配置展示:
# JMX settings
if [ -z "$KAFKA_JMX_OPTS" ]; thenKAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -Djava.security.auth.login.config=/root/kafka/config/kafka_jaas.conf "
Fi
  1. 配置圖片
    在這里插入圖片描述

4.4啟動kafka服務

kafka]#./kafka/bin/kafka-server-start.sh -daemon kafka/config/server.properties

5 回滾方案

5.1 Zookeeper回滾方案

  1. 停止zookeeper服務
  2. 恢復zookeeper的zkEnv.sh和zoo.cfg配置文件
  3. 啟動zookeeper服務

5.2 Kafka回滾方案

  1. 停止kafka服務
  2. 恢復kafka的kafka-run-class.sh腳本文件
  3. 啟動kafka服務

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88592.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI進化論07:第二次AI寒冬——AI“改頭換面”,從“AI”變成“機器學習”

書接上回,上回咱們聊了神經網絡在第一次寒冬中的“蟄伏”與“萌動”。但別高興太早,AI很快就迎來了它的第二次“寒冬”(大概從20世紀80年代末到90年代中期)。這次寒冬啊,比第一次還“冷”,還“漫長”。AI這…

基于開源AI智能名片鏈動2+1模式與S2B2C商城小程序的渠道選擇策略研究

摘要:在數字化商業環境下,品牌與產品的渠道選擇對其市場推廣和運營成功至關重要。本文聚焦于如何依據自身品牌和產品特性,結合開源AI智能名片鏈動21模式與S2B2C商城小程序,運用科學的渠道選擇方法,慎重挑選1 - 2個適宜…

開源 C# .net mvc 開發(八)IIS Express輕量化Web服務器的配置和使用

文章的目的為了記錄.net mvc學習的經歷。本職為嵌入式軟件開發,公司安排開發文件系統,臨時進行學習開發,系統上線3年未出沒有大問題。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。 相關鏈接: 開源 C# .net mvc 開…

PostgreSQL安裝及簡單應用

下載地址:EDB: Open-Source, Enterprise Postgres Database Management 安裝 注意:端口號默認是5432 配置dbeaver應用,創建數據庫和表 -- 創建模式(如果不存在) CREATE SCHEMA IF NOT EXISTS bbbase;-- 創建序列&…

wedo智能車庫-----第31節(免費分享圖紙)

夸克網盤:https://pan.quark.cn/s/10302f7bbae0 高清圖紙源文件,需要的請自取

【springboot】IDEA創建SpringBoot簡單工程(有插件)

需求 使用SpringBoot開發一個web應用,瀏覽器發起請求/hello后,給瀏覽器返回字符串 hello world~ 步驟 1.創建Maven工程 2.導入spring-boot-stater-web起步依賴 3.編寫controller 4.提供啟動類 pom.xml文件了解 啟動類 新建包 創建類 package com.zw…

python正則表達式re(Regular Expression)

目錄 正則表達式: match()函數: search()函數: findall()函數: 正則表達式的參數: 表示字符范圍的參數: 表示字符出現的次數的參數: 表示同一類字符的參數: 貪婪和非貪婪模式…

事件驅動設計:Spring監聽器如何像咖啡師一樣優雅處理高并發

架構哲學:當咖啡店面對洶涌客流時,真正的優雅不是更快的動作,而是科學的協作機制。Spring事件驅動正是通過發布-訂閱模式,讓系統像頂級咖啡師般從容應對突發流量。一、從咖啡店看監聽器本質:3大核心組件拆解 場景還原&…

C++ const 關鍵字解析

const 是 C 中用于定義常量或指定不可變性的關鍵字,它在不同上下文中有不同的含義和用法。下面是對 const 的全面解析:1. 基本用法定義常量const int MAX_SIZE 100; const double PI 3.14159;這些值在程序運行期間不能被修改必須在定義時初始化與指針結…

[es自動化更新] Updatecli編排配置.yaml | dockerfilePath值文件.yml

鏈接:https://github.com/elastic/elasticsearch/tree/main/build-conventions elasticsearch自動化更新 本專欄使用updatecli實現自動化版本更新與依賴管理。 其配置通過編排文件(updatecli-compose.yaml)實現,該文件羅列了稱…

新手向:使用Python將多種圖像格式統一轉換為JPG

本文將詳細解析一個專業的Python腳本,它能夠將指定文件夾中的所有非JPG格式圖像批量轉換為JPG格式。這個腳本雖然代碼量不大,但包含了文件操作、圖像處理、異常處理等多個重要編程概念,非常適合初學者系統學習。環境準備在開始之前&#xff0…

深入剖析C++ RPC框架原理:有棧協程與分布式系統設計

深入剖析C RPC框架原理:有棧協程與分布式系統設計 🛠? 第一部分:RPC框架核心原理與技術架構 🌐 1.1 RPC在分布式系統中的核心地位 遠程過程調用(RPC)是現代分布式系統的基石,它實現了&#xf…

基于springboot+Vue的二手物品交易的設計與實現

基于springbootVue的二手物品交易的設計與實現 作者: Mr順 | 某大廠全棧開發工程師 | CSDN新星計劃導師 | Java領域優質創作者 技術棧: SpringBoot, JavaWeb, 數據庫等。精通Java、微信小程序開發。 項目亮點: 完整可運行: 提供…

騰訊云輕量服務器創建快照免費API接口教程

接口簡介 該API用于騰訊云輕量服務器系統盤快照創建,無需關機即可自動刪除舊快照并創建新快照。特點包括: 不占用騰訊云快照配額支持自動備份策略適用于定時備份任務僅支持系統盤快照(云硬盤需調用專用接口) ?請求地址? https…

C++中的智能指針(1):unique_ptr

一、背景普通指針是指向某塊內存區域地址的變量。如果一個指針指向的是一塊動態分配的內存區域,那么即使這個指針變量離開了所在的作用域,這塊內存區域也不會被自動銷毀。動態分配的內存不進行釋放則會導致內存泄漏。如果一個指針指向的是一塊已經被釋放…

HTTPS安全機制:從加密到證書全解析

目錄 1.HTTPS是什么 2.加密是什么 3.HTTPS的加密過程 3.1對稱加密 3.2非對稱加密 4.引入證書 4.1"中間人"攻擊 4.2 引入證書機制 4.3 理解數據簽名 4.4 非對稱加密 對稱加密 證書認證 5.常見問題 5.1 Fiddler等抓包工具,為啥能解析HTTPS的數據…

2024年深度學習技術主要發展分析

摘要:深度學習作為人工智能領域的戰略級技術,在2024年持續取得突破性進展,持續重構現代戰爭規則,成為大國軍事智能化競爭的核心角力點。對2024年深度學習技術熱門領域的主要發展進行了綜合評述。研究了深度學習技術的發展現狀&…

Swift 枚舉:深入理解與高效使用

Swift 枚舉:深入理解與高效使用 引言 Swift 枚舉(Enum)是 Swift 編程語言中的一種基本數據類型,它允許我們將一組相關的值組合在一起。枚舉在 Swift 中有著廣泛的應用,從簡單的數據分類到復雜的業務邏輯處理,枚舉都能發揮巨大的作用。本文將深入探討 Swift 枚舉的原理、…

從大模型到云游戲,國鑫SY8108G-G4如何化身“全能AI引擎”?

當大模型參數量突破萬億級,傳統服務器在散熱枷鎖與擴展瓶頸前舉步維艱。國鑫全新推出的 SY8108G-G4 8U8卡AI服務器 ,以顛覆性架構支持8張600W GPU全速并行,結合CPU-GPU直連、冗余電源和彈性擴展三大優勢,為AI訓練、生成式創作、數…

在多個DHCP服務器的網絡環境中選擇指定的DHCP服務

問題 學校有兩個網絡,我電腦網線插在同一個交換機的同一個接口上,有時候獲取的是172.27開頭的IP,有時候獲取的是192.168開頭的IP。 通常第一次開機獲取的是172.27的IP,插拔網線或重啟網絡接口后會變為192.168的IP。 兩個網絡各有…