大數據平臺基礎架構hadoop安全分析



內容來源:2017 年 07 月 29 日,威客安全技術合夥人安琪在「CDAS 2017 中國數據分析師行業峯會」進行《大數據平臺基礎架構hadoop安全分析》演講分享。IT 大咖說(微信id:itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。linux

閱讀字數:5817 | 15分鐘閱讀web

嘉賓演講視頻地址及PPT:suo.im/5dKZpw算法

摘要

分析hadoop現有安全技術架構,對hadoop框架組件的應用、結構進行分析,對現有的安全措施進行說明,分析分佈式文件系統、MapReduce、kerberos、Hive、Hbase等相關組件的安全以及大數據平臺網絡訪問、數據安全的機制,並總結研究hadoop的安全技術架構。數據庫

Hadoop安全現狀

Hadoop安全漏洞

上圖是列出的是Hadoop近年來的一些安全漏洞,接下來會針對其中的幾個案例進行簡要說明。跨域

Apache的Ambari引用給Hadoop帶來了不少便利,能夠直接經過外部的管理對Hadoop的生態組件進行管控,但在這個過程當中因爲外部技術的引用,致使了一些外部應用層的漏洞,主要是SSRF僞造請求漏洞。這是由惡意攻擊者經過SSRF攻擊,遠程對Hadoop服務以及進程進行操縱和讀取數據。安全

MapRedure信息漏洞主要是因爲數據文件、用戶產生的數據以及加密祕鑰都存儲在同一個文件和磁盤中,致使惡意用戶獲取到加密祕鑰同時讀取了數據塊中的數據。服務器

Ambari重定向漏洞是因爲target的URI參數被修改爲了黑客指定的任意網址,由此形成了釣魚攻擊,甚至結合Linux底層的操做系統漏洞以及Hadoop的其餘漏洞還能實現惡意代碼的加載。微信

2017年hadoop的一個新的漏洞被曝光,漏洞的主要緣由在於Hadoop引入了Docker組件,可是在linux這層沒有輸入過程的認證,而且Docker命令又是經過root身份來執行的。所以黑客就經過Docker命令僞造了root身份,而後對Hadoop進行了全線帳戶的提權,實現了整個操做系統的權限控制。網絡

Hadoop因爲自身的業務特色,通常都是部署在用戶內網中,因此在早期設計的時候不是太注重安全方面的設計,而更多的專一於實現業務的功能。經過分析能夠發現,這些漏洞的產生大部分都是因爲Hadoop的身份認證受權沒有作好。架構

早期Hadoop在的默認狀況下,是沒有身份認證和訪問控制機制的,基本上是繼承了Linux的權限控制體系。另外它在數據傳輸的過程當中和靜態數據保存過程當中都沒有有效的加密措施。

Hadoop關鍵安全因素

基於Hadoop面臨的這些問題反過來思考,咱們認爲要想實現安全的Hadoop要從這幾點出發。

一是認證,提供單點的登陸,經過這種方式實現用戶身份的認證。

二是受權,要可以肯定用戶訪問權限,好比對數據集的訪問、服務請求等。

三是訪問控制,要有一個基於細粒度和角色的訪問控制機制。

四是數據加密,包括數據處理過程當中對中間數據的處理,以及在數據傳輸和數據存儲過程當中的處理,都須要引入數據加密的技術。

五是網路安全,是否有一個有效的隔離措施,以及對業務行爲的安全控制是否有保障。

六是系統安全,Hadoop大部分是基於Linux操做系統,要有對底層操做系統漏洞的防禦。

七是基礎架構安全,物理層面的安全以及基於安全架構逐步完善的安全措施。

最後是審計監控,是否可以對全部的用戶行爲和受權行爲等進行有效監控,並基於這些來識別潛在的危險行爲。

Hadoop認證受權

Hadoop自身認證模型的缺陷

上圖是服務和數據塊的結構圖。Hadoop使用的是HDFS分佈式存儲文件系統。當用戶登陸到DataNode訪問數據的時候,用戶的權限能夠訪問到DataNode目錄下的全部數據塊。這其實是一個安全風險,由於Hadoop沒有對用戶、用戶組和服務進行有效的認證,當執行Hadoop命令的時只是單單經過whoami肯定用戶身份,這個過程當中黑客能夠編寫whoami腳本模擬超級用戶。

Hadoop須要實現的安全認證

提升Hadoop的安全要從兩個層面着手,一是用戶層次訪問控制,二是服務層次訪問控制。

用戶層次訪問控制,要有對用戶和用戶組的認證機制。(如下爲具體細節)

  • Hadoop用戶只能訪問受權的數據。

  • 只有認證的用戶能夠向Hadoop集羣提交做業。

  • 用戶能夠査看、修改和終止他們的做業。

  • 只有認證的服務能夠註冊爲DataNode或TaskTrackero

  • DataNode中數據塊的訪問須要保證安全,只有認證用戶 才能訪問Hadoop集羣中存儲的數據。

服務層次控制,服務之間的互相認證。(如下爲具體細節)

  • 可擴展的認證:Hadoop集羣包括大量的節點,認證模型須要能 夠支持大規模的網絡認證。

  • 假裝:Hadoop能夠識別假裝用戶,保證正確的用戶做業隔離。

  • 自我服務:Hadoop做業可能執行很長時間,要確保這些做業可 以自我進行委託用戶認證,保證做業完整執行。

  • 安全的IPC : Hadoop服務要能夠相互認證,保證它們之間的安全 通訊。

Kerberos

Kerberos是Hadoop的安全基礎,將來Hadoop的全部安全措施都要基於Kerberos認證原理才能實現。

Kerberos實際上是網絡的認證協議,能夠實如今網絡中不傳輸密碼就能完成身份認證。其原理在於經過對稱加密算法生成時間敏感的受權票據。下面來看下Kerberos的基本實現原理。

首先Hadoop的客戶端向KDC請求,得到受權票據受權(TGT),以後KDC會返回TGT和Session Key給客戶端。(TGT是一個特殊的票據,做用在於客戶端訪問目標服務器的時候,提供一個容許訪問的票據,失效時間大概爲8到10個小時。Session Key用於加密客服端與服務端通訊過程當中的數據。)接着客戶端會使用TGT向目標服務端請求服務票據,這時KDC會再返回Session Key和目標服務器的服務票據,本次的Session key已經成爲了服務器私用的,也就是說Kerberos實現了每一個服務端都有一個私鑰。最後客戶端會使用TGT向目標服務器請求,目標服務器則使用私有Session Key解密,識別客戶端爲合法請求後返回私有Session Key,而且用私有Session Key加密這段通訊。這樣客戶端和服務端就實現了傳輸通訊上的加密以及身份上的認證。

安全Hadoop加護行爲

Kerberos認證使Hadoop擁有了必定的安全能力。因爲實現了用戶和服務的認證,Hadoop各個組件和用戶交互過程當中會有三個概念,分別是受權令牌、做業令牌和數據塊訪問令牌。

客戶端向NameNode請求的時候,Kerberos會進行身份認證,這時NameNode會給客戶端返回受權令牌,基於令牌客戶端能夠無需再對Kerberos進行認證就能作後續的操做。

客戶端向Hadoop提交做業指令的時候,要肯定被認證的用戶在Node下的文件權限必須是該認證用戶的權限。這時就要依靠做業令牌對權限進行控制。

數據塊訪問的時候通常都是客戶端先向NameNode請求,請求完成以後NameNode會進行認證而後返回受權令牌,這時若是身份合法NameNode會再返回文件塊ID以及DataNode的位置信息,最終客戶端使用這些信息向DataNode請求相應數據塊的信息。這段過程當中NameNode和客戶端有認證,但DataNode和客戶端沒有認證,所以就有了數據塊的訪問令牌,經過這個令牌就平移NameNode和客戶端之間的認證信息,實現一次受權兩次認證的機制。

整個訪問的交互過程一共就三步,第一步是服務向KDC註冊,註冊內容包括DataNode向NameNode註冊,TaskTracker向JobTracker註冊。第二步四客戶端向KDC註冊,經過受權令牌客戶端向NameNode的註冊。第三步是數據塊的註冊 ,經過DataNode給數據塊的訪問令牌識別客戶端的相應數據訪問權限。以上基本就是Kerberos實現的整個生態體系的認證。

Hadoop網絡訪問安全

統一身份認證管理機制

關注安全的企業每每都有一套統一身份認證管理機制,用來管理企業內部的終端、網路設備、上網行爲等。Kerberos則實現了Hadoop內部的身份認證管理。Kerberos如何和企業統一身份認證管理進行有效結合是實現企業網絡生態安全的第一步。

向Hadoop請求的客戶端用戶須要在EIM(統一身份認證管理系統)中註冊身份,再由EIM向終端用戶發放Kerberos受權票據,這時客戶端會使用該票據向Hadoop請求。整個過程當中EIM系統須要和Hadoop的本地KDC進行數據同步,創建跨域信任。

Hadoop網絡訪問安全

目前主流的Hadoop網絡安全措施是經過防火牆將客戶端和Hadoop集羣進行邏輯隔離。防火牆做爲網絡層面的控制,對於惡意端口、無用協議進行有效過濾,以後部署有不少Hadoop生態組件工具的網關服務器,客戶端用戶經過統一登陸網關服務器對Hadoop集羣進行維護以及提交做業。這樣就初步實現了網絡層的訪問控制、用戶的認證受權以及行爲的訪問控制過濾。

Hadoop網絡訪問之HUE

隨着Hadoop的發展,它又在網關層上引入了開源項目HUE,基本的架構和前面相似,只不過多了HUE的相關功能。HUE能夠與EIM系統的身份認證結合,支持LDAP同步用戶和用戶組信息,採用HttpFS代理,經過SPANWFO-Base認證協議訪問SSL加密,實現了細粒度的用戶訪問控制。

Hadoop網絡訪問之Know Gateway Server

隨後Hadoop又有了Know Gateway Server,它結合了HUE和傳統的優點,內部仍是以網關的形式作代理,實現了防火牆的功能對端口和協議進行過濾,同時對用戶進行細粒度的訪問控制,不只如此,它仍是實現了單點登陸。

Hadoop數據安全

Hadoop數據傳輸的通道加密

對於傳輸數據加密目前Hadoop採用SASL框架,它能夠實現客戶端向服務端請求過程當中的數據加密。SASL分爲SSL和Hadoop的RPC協議,SSL用於web層面的數據通道加密,客戶端向NameNode以及DataNode請求的時候走的則是RPC協議或者是基於TCP的 HTTP協議。這種狀況下就必須封裝SASL安全框架進行總體加密,同時SASL還支持JDBC保護,與第三方數據庫交互時也能加密。

Hadoop靜態數據加密

靜態數據的保護咱們有兩種思路。

第一個是先加密後存儲,可是這種方案存在問題。它在向Hadoop存儲文件時,首先把整個文件進行加密,而後存儲。這樣,每一個DataNode中數據塊沒法被解密。所以這種方案是不太可行的。

第二個是加密數據塊,確保MapReduce程序能夠獨立的訪問每一個數據塊,解密邏輯能夠在 MapReduce做業中進行。解密密鑰須要告訴 MapReduce做業。這種方案是可擴展的。

Hadoop安全審計和監控

Hadoop安全監控要點

用戶登陸和受權事件:當用戶或服務標識在KDC或EIM系統進行認證時會生成用戶登陸事件,在集中EIM系統(活動 目錄或類似系統)將記錄用戶受權事件。用戶向Hadoop 進程每次請求服務票據都會生成日誌。

HDFS文件操做錯誤:當用戶訪問HDFS , Name Node會驗證用戶的訪問權限。當存在越權訪問時會在hadoop日誌文件中產生錯誤事件,Hive 或Pig做業遇到任何訪問HDFS 權限問題時都會產生相同的錯誤。

RPC受權錯誤:任何對Hadoop進程未受權的訪問請求,異常會記錄至到Hadoop 安全日誌文件中。監控這些異常能夠識別未受權訪問。

RPC認證錯誤:Hadoop RPC使用Java SASL APIS進行驗證。這個交互過程能夠設置質量保護,確保客戶端能夠安全的聯機Hadoop服務,任何中間人攻擊致使的驗證失效均可以被記錄下來。

HDFS敏感文件下載:Hadoop支持記錄每個文件系統操做到HDFS審計日誌文件。該審計文件,能夠識別哪些用戶訪問或下載了敏感文件。

MapReduce做業事件:Hadoop支持在日誌中記錄全部MapReduce 做業提交和執行事件。審計日誌會記錄做業的提交、啓動、査 看和修改行爲。所以 該審計文件能夠用來識別哪一個用戶訪問和運行了集羣上的做業。

Oozie、HUE和 WebHDFS 的訪問:用戶訪問Oozie並進行工做流提交都 會記錄到Oozie的審計日誌。全部用戶與Oozie的交互也會記錄到日誌,能夠用來跟蹤執行特定工做流的用戶信息。

其餘異常:除了用戶認證和受權產生的異常,記錄Hadoop中任何其餘類型的異常也頗有用。這些異常提供潛在訊息發現系統的脆弱性,也能夠識別潛在的安全事故。

Hadoop安全監控與審計系統

對於Hadoop的安全監控和審計系統也有着相應的開源組件——OSSEC,它是一個基於主機入侵檢測系統的開源項目,支持收集Hadoop集羣中的各類日誌和事件。原理是經過在各個組件內部署日誌代理,收集各組件的日誌,而後統一彙總到管理端,以後由管理端進行統一展現 ,最後經過制定的安全規則作篩查和告警。

Hadoop審計日誌的配置

下圖展現的是開啓日誌的各類方法。

對於Hadoop的安全監控和審計系統也有着相應的開源組件——OSSEC,它是一個基於主機入侵檢測系統的開源項目,支持收集Hadoop集羣中的各類日誌和事件。原理是經過在各個組件內部署日誌代理,收集各組件的日誌,而後統一彙總到管理端,以後由管理端進行統一展現 ,最後經過制定的安全規則作篩查和告警。

Hadoop安全技術架構總結

上圖是Hadoop現有的安全架構。首先是基礎設施安全,包括物理安全和Kerberos。操做系統層面採用主機加護的方式,經過白名單的機制對系統的服務、進程、端口、軟件等等進行控制,從而抵禦非法攻擊。應用安全是經過HUE在網關之上提供的一些用戶細粒度的訪問控制。網絡邊界安全是利用堡壘機和防火牆的技術實現了網絡和應用的控制。數據加密一方面使用SASL框架實現通道加密,一方面使用壓縮文件的能力對數據塊直接加密。

相關文章
相關標籤/搜索