【干貨】如何保護(hù)Hadoop集群免受惡意軟件攻擊!
有兩個新的惡意軟件,XBash和DemonBot,是針對Apache Hadoop服務(wù)器比特幣挖礦和DDOS目的。這種惡意軟件瘋狂掃描互聯(lián)網(wǎng)尋找Hadoop集群,當(dāng)有未設(shè)安全的集群連接到公共互聯(lián)網(wǎng)上,幾分鐘內(nèi)便可被感染。本文將描述此惡意軟件使用的機(jī)制,并提供保護(hù)Hadoop群集的相應(yīng)操作。
Hadoop惡意軟件的歷史
大約兩年前,對開源數(shù)據(jù)庫解決方案MongoDB以及Hadoop發(fā)生了大量攻擊。這些攻擊來自勒索軟件:攻擊者擦除或加密數(shù)據(jù),然后要求贖金來恢復(fù)數(shù)據(jù)。就像最近的攻擊一樣,當(dāng)時受影響的唯一Hadoop集群是那些直接連接到互聯(lián)網(wǎng)并且沒有啟用安全功能的集群。Cloudera曾在2017年1月發(fā)布了一篇關(guān)于此威脅的博客。該博客闡述了如何確保Hadoop集群不直接連接到互聯(lián)網(wǎng),并建議啟用Cloudera的安全和治理功能。
XBash和DemonBot的起源故事說明了安全研究人員如何看待Hadoop生態(tài)系統(tǒng)和漏洞的生命周期。 在2016年盧森堡的Hack.lu會議上,兩位安全研究人員發(fā)表了題為“Hadoop Safari:尋找漏洞”的演講。 他們描述了Hadoop及其安全模型,然后針對沒有啟用安全功能的集群提出了一些“攻擊”。這些攻擊類似于在大門敞開時闖入房屋。
使用Kerber進(jìn)行強(qiáng)身份驗(yàn)證
這些攻擊受到基本安全功能的阻礙,該功能多年來一直是hadoop的一部分:使用Kerberos進(jìn)行強(qiáng)身份驗(yàn)證。如果沒有Kerberos,任何與集群交互的用戶都可以偽裝成任何其他用戶,不需要特定驗(yàn)證,任何用戶都可以像任何用戶那樣執(zhí)行任何操作。就好比在Linux系統(tǒng)中每個人都知道root密碼。
但是,在正確配置的群集中,Kerberos用于身份驗(yàn)證。這意味著要與群集進(jìn)行交互,用戶必須首先輸入認(rèn)證(如用戶名和密碼)以證明他們是他們所說的人。此身份驗(yàn)證提供了用戶和管理員期望的安全性:用戶在系統(tǒng)中具有某些功能,他們無法模擬其他人,只有管理員可以訪問管理帳戶。
但是,如果沒有Kerberos,任何人都可以接觸Hadoop集群做各種不好的事情。安全研究人員在Hack.lu建議的一個示例攻擊是提交一個簡單的YARN作業(yè)在集群中的所有機(jī)器上執(zhí)行代碼。這可以用來在該集群中的每臺機(jī)器上獲取shell。
觀察一個真實(shí)的攻擊
為了觀察攻擊的真實(shí)性,我們用Cloudera Altus創(chuàng)建了一個Hadoop集群。Altus是一個云服務(wù)平臺,該服務(wù)使用CDH在公共云基礎(chǔ)架構(gòu)內(nèi)大規(guī)模分析和處理數(shù)據(jù)。雖然使用Altus創(chuàng)建不受這些攻擊影響的安全集群很簡單,但也可能將Altus集群設(shè)置成易受攻擊。
在Altus中,要使集群易受攻擊,就不要勾選Secure Clusters的框,也不要用AWS安全組,允許來自互聯(lián)網(wǎng)上任何位置的傳入流量。在創(chuàng)建這個對世界敞開的不安全的集群的幾分鐘內(nèi),我們就觀察到了攻擊行動。 YARN Web UI顯示了許多正在提交和運(yùn)行的作業(yè):
大約每分鐘一次,DemonBot試圖利用集群。對我們來說幸運(yùn)的是,由于DemonBot本身的錯誤配置(換句話說,我們很幸運(yùn)),這些攻擊失敗了。
教訓(xùn):如果你放一個不安全的群集,它一定會受到攻擊。
Cloudera Altus的安全保障
現(xiàn)在我們已經(jīng)看到了一個不安全的集群會發(fā)生什么,那讓我們來設(shè)置一個更安全些的集群。 我們的目標(biāo)是
1.僅允許從一組有限的計算機(jī)對群集進(jìn)行SSH訪問
2.使用Kerberos啟用強(qiáng)身份驗(yàn)證
好在這在Altus中很容易配置。在Altus中,集群是在環(huán)境內(nèi)創(chuàng)建的。一個環(huán)境會描述如何訪問用戶的云帳號及其包含的資源。它還指定了如何創(chuàng)建集群的一些基本內(nèi)容。因此,我們感興趣的配置選項(xiàng)出現(xiàn)在Altus環(huán)境中。創(chuàng)建環(huán)境有兩種方法:通過簡單的快速入門過程或通過設(shè)置向?qū)в懈蟮撵`活性。
快速入門過程當(dāng)然是最簡單的。創(chuàng)建環(huán)境時,選擇“Environment Quickstart”路徑,然后選擇“Secure Clusters”中的“Enable”復(fù)選框:
完成!啟用安全群集后,就啟用了Kerberos。 Quickstart路徑還將創(chuàng)建了一個外部世界無法訪問的安全組,防范DemonBot和XBash等漏洞。我們在此環(huán)境中創(chuàng)建了這樣一個集群,當(dāng)然就沒有在集群上發(fā)生攻擊。
如果需要使用環(huán)境創(chuàng)建向?qū)?,也可以選擇像“快速啟動”中的“安全群集”復(fù)選框。 不同之處在于,在向?qū)е?,您必須自己提供安全組。創(chuàng)建此安全組時,請確保它僅允許從Altus IP地址進(jìn)行SSH訪問。
總結(jié)
互聯(lián)網(wǎng)是Hadoop集群的危險場所。 因此,我們建議如下:
- 不要將群集直接暴露給互聯(lián)網(wǎng)
- 始終啟用Kerberos身份驗(yàn)證
- 使用Altus時,選擇“Secure Clusters”復(fù)選框
通過這些簡單的步驟,您的Hadoop集群將受到保護(hù),免受此處描述的攻擊類型的影響。