<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Ceph認證的三層含義(上)

    一顆小胡椒2022-07-19 09:23:48

    1. 背景

    Ceph是分布式存儲系統,允許多用戶同時訪問,為了保證訪問的安全性,需要提供一套認證系統來對用戶進行認證。Ceph采用了Kerberos認證設計思想。

    2. Kerberos

    Kerberos是一種計算機網絡認證協議,它允許某實體在非安全網絡環境下通信,向另一個實體以一種安全的方式證明自己的身份。

    這個協議主要分為三部分

    • Key Distribution Center(KDC):認證中心以及分發ticket
    • Client:客戶端
    • Service:客戶端想要訪問的服務

    理論很復雜,簡單的講就是

    • Client帶著認證信息去KDC進行認證
    • 認證通過,從ticket server獲取service X服務的ticket-x
    • Client使用ticket-x去訪問service X服務

    tips: Kerberos用戶認證的一個核心就是客戶端用一個secret加密,服務端能解密出來就算認證成功。

    3. 從Kerberos到Ceph

    Ceph認證就是實現了Kerberos,首先把Ceph組件也進行三種組件分類

    • KDC:monitor
    • Client:radosclient、ceph-fuse
    • Service:MDS、OSD、MGR

    大體流程跟上面Kerberos一樣,多了service服務到monitor獲取service secret,這個是從Kerberos依葫蘆畫瓢想到的,其實Ceph里面“Client”是一個范指,主要包含monclient模塊的都可以稱為“client”,比如OSD、MDS、MGR都包含monclient,從這個角度講它們也屬于“Client”,比如以OSD作為“Client”如下示意

    下面來細說一下Ceph

    4. Ceph的實現

    為了方便理解我把Ceph認證分成三層含義(非kerberos原理):

    (1) 組件和monitor的連接認證
    (2) 用戶認證
    (3) 除monitor之外其他組件的連接認證
    

    4.1 組件和monitor之間的連接認證

    Ceph在tcp三次握手之上又加了一層自定義的網絡連接協議,主要用來確認一些信息,比如banner,客戶端的ip和端口,auth認證等

    只有auth認證通過之后,Ceph連接才算建立完成,后面就可以用于消息發送。然而不同組件之間連接的auth認證行為不一樣。這里先討論組件和monitor之間的連接認證。client和其他組件跟monitor通信都是無條件通過。

    我們可能好奇為什么這邊會無條件認證,按理認證不應該進行用戶身份的認證嗎,而需要用戶認證則需要在建立好的Ceph連接上發送MAuth消息,而現在Ceph連接都還沒建立,根本無從認證,如果這里不設置無條件通過,就會出現雞和蛋問題。

    4.2 用戶認證

    用戶認證是包含monclient模塊的“Client”跟mon建立連接之后通過authenticate發送MAuth消息來認證用戶

    從kerberos可以看出用戶認證的時候分為兩個階段發了兩次請求,Ceph也確實是這么實現的。

    第一階段:認證用戶
    第二階段:獲取service服務的ticket
    

    4.2.1 第一階段—認證用戶

    說到認證用戶,第一個想到的就是keyring,先簡單聊一下keyring

    4.2.1.1 訪問鑰匙

    Ceph在使用中,如果我們開啟了Cephx會有很多keyring,一個keyring類似如下:

    client.admin
        key: AQBPWeZhTnH6FhAAd6hoo1oMkw3/G4teWXwKAA==
        caps: [mds] allow *
        caps: [mgr] allow *
        caps: [mon] allow *
        caps: [osd] allow *
    

    這是一個admin用戶的keyring,可以看到keyring內容主要包含兩類: 一類是key,一類是caps,其中的key是一個secret,主要用來加密,caps是用戶對于各個服務的訪問權限。來一個靈魂四拷問:when、where、who、how

    • 何時生成(when)

    當我們運行如下類似命令的時候生成

    # ceph auth add xxx xxx
    
    • 存在哪里(where)

    ceph auth命令最后發給mon,存在了mon的rocksdb中。

    • 誰會使用(who)

    這個keyring誰會使用,主要大致有以下兩類:

    客戶端:radosclient、ceph-fuse
    組件服務:osd、mgr、mds
    

    這些都會包含一個monclient

    • 怎么使用(how)

    在客戶端或者組件服務啟動時,通過包含的monclient進行認證。

    Kerberos認證的核心就是客戶端使用秘鑰對消息進行加密,如果KDC能通過秘鑰進行解密成功就認證通過。Ceph有點不一樣,Ceph使用keyring中的key以及其他的東西(challenge)在monclient和monitor分別算出一個key,進行匹配是不是相同,相同則認證通過,反正。

    4.2.1.2 計算匹配

    匹配通過就算認證用戶ok

    4.2.2 第二階段—獲取service Ticket

    在發送client challenge請求的時候,也會把客戶端想要訪問組件以bit的方式(want_key)傳過來,比特位代表如下

    #define CEPH_ENTITY_TYPE_MON    0x01
    #define CEPH_ENTITY_TYPE_MDS    0x02
    #define CEPH_ENTITY_TYPE_OSD    0x04
    #define CEPH_ENTITY_TYPE_CLIENT 0x08
    #define CEPH_ENTITY_TYPE_MGR    0x10
    #define CEPH_ENTITY_TYPE_AUTH   0x20
    

    比如客戶端會和MDS和OSD訪問,則需要設置want_keys為6

    4.3 除monitor之外其他組件的連接認證

    有了service ticket,除montior之外其他組件就可以進行連接認證,如下


    這里從monitor除了獲取service ticket,還返回了session key,這個session key在下面驗證的時候會用到。

    4.3.1 驗證方法

    這里的連接認證方法和用戶認證不一樣,不是通過計算key來比對,而是通過加密解密來完成,大致思路就是monitor發送給客戶端的service ticket是用一個service_secret進行了加密,而客戶端會在加上一些其他的信息(比如nonce)通過session key加密然后和ticket一起發送給連接的另一端。

    認證的大體思路是這樣,那這里recv端的service secret是哪里來的?

    4.3.2 service secret

    service secret是用來加密service ticket的,monitor發送給客戶端的ticket就已經加密好,所以service secret是monitor那邊生成的,service服務組件獲取service secret是在所包含的monclient模塊用戶認證完成之后從monitor取回屬于自己service服務的service secret。

    ceph
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Rook 將存儲軟件轉變成自我管理、自我擴展和自我修復的存儲服務,通過自動化部署、啟動、配置、供應、擴展、升級、遷移、災難恢復、監控和資源管理來實現。Rook 利用擴展功能將其深度集成到云原生環境中,并為調度、生命周期管理、資源管理、安全性、監控等提供了無縫的體驗。
    這表示一個service服務所擁有的的service secret列表,每個service服務都會有這樣一個列表。
    Ceph采用了Kerberos認證設計思想。
    每個存儲池的目標比例除非明確指出,否則默認為 0。一欄中檢查存儲池的目標比例。可以對一個已存在的存儲池設置target_size_ratio。標志來打開或關閉所有的存儲池的 autoscaler。默認情況下,除非另有規定,否則偏置值應為1.0。指定存儲池允許的最小 pg 數量。使用 pg_num_max 設置存儲池最大的 PG 數量指定一個存儲池的最大 PG 數量是可能的。
    據Techspot報道,一名澳大利亞男子因涉嫌創建并向全球數以萬計的網絡犯罪分子銷售黑客工具而被捕。24歲的Jacob Wayne John Keen因涉嫌向來自128個不同國家的網絡犯罪分子、家庭暴力實施者等人出售名為Imminent Monitor的木馬病毒而被捕。這次逮捕是在2017年啟動的全球刺探行動之后進行的。Keen最近的逮捕是基于世界各地的參與執法機構向AFP提供的額外證據。
    據Techspot報道,一名澳大利亞男子因涉嫌創建并向全球數以萬計的網絡犯罪分子銷售黑客工具而被捕。這名24歲的黑客被指控創建并銷售一種遠程訪問木馬,旨在竊取個人信息并監視毫無戒心的目標。該病毒創造者通過銷售該工具賺取了30多萬美元,其中大部分似乎從其15歲起就被用在了外賣和快遞項目上。
    一名 24 歲的澳大利亞國民因涉嫌制造和銷售供家庭暴力犯罪者和兒童性犯罪者使用的間諜軟件而受到指控。 目前居住在墨爾本弗蘭克斯頓的雅各布·韋恩·約翰·基恩據說在 15 歲時創建了遠程訪問木馬 (RAT),同時還從 2013 年到2019 年作為歐洲刑警組織領導的協調行動的一部分管理該工具,直到2019 年關閉。鍛煉。
    最近,多個黑客開始使用Ezuri內存加載器,將惡意軟件直接執行到受害者的內存中。根據AT&T的Alien Labs的研究人員的說法,惡意軟件作者正在為其惡意代碼選擇Ezuri內存加載器。專家指出,盡管這種技術在Windows惡意軟件中很常見,但在Linux攻擊中卻很少。
    根據澳大利亞聯邦警察發布的一份聲明,其中包括家庭暴力犯罪者和其他罪犯。澳大利亞聯邦警察周六表示,已確認有201名澳大利亞人購買了該間諜軟件。聲明說,對可能使用該設備的潛在嫌疑人的調查正在進行中。今年7月早些時候,基恩被指控六項罪名,并將于下月在布里斯班地方法院出庭,他42歲的母親也被指控涉嫌從事犯罪所得交易。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类