通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)_第1頁(yè)
通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)_第2頁(yè)
通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)_第3頁(yè)
通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)_第4頁(yè)
通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

通過(guò)日志分析檢測(cè)受危害的MapReduce工作節(jié)點(diǎn)報(bào)告人:TowardDetectingCompromisedMapReduceWorkersthroughLogAnalysis“

”MapReduce是適合于在普通設(shè)備上進(jìn)行數(shù)據(jù)密集型計(jì)算的并行編程模型。當(dāng)MapReduce在分布式系統(tǒng)上運(yùn)行時(shí),用戶對(duì)計(jì)算的控制非常少,導(dǎo)致一系列安全和隱私問(wèn)題。MapReduce活動(dòng)可能會(huì)被惡意節(jié)點(diǎn)或欺騙節(jié)點(diǎn)攻擊。本文重點(diǎn)分析和檢測(cè)由惡意或錯(cuò)誤配置節(jié)點(diǎn)所發(fā)起的攻擊。我們的目標(biāo)是,在不修改MapReduce原始操作和不引入額外操作的前提下,研究如何證實(shí)MapReduce環(huán)境下計(jì)算(不論是計(jì)算型的還是密碼型的)的完整性和正確性。我們根據(jù)收集的低層次系統(tǒng)路徑和Hadoop日志定義了一系列數(shù)據(jù)和計(jì)算完整度檢查方法,并相互關(guān)聯(lián)去獲取節(jié)點(diǎn)上正在執(zhí)行的操作的信息。然后將這些信息和系統(tǒng)與程序不變量比較,去有效的檢測(cè)惡意活動(dòng),包括懶惰節(jié)點(diǎn)、修改輸入/輸出的節(jié)點(diǎn)或運(yùn)行異常計(jì)算的節(jié)點(diǎn)。摘要目錄介紹相關(guān)工作背景和問(wèn)題陳述MapReduce執(zhí)行路徑監(jiān)測(cè)完整性檢查MapReduce不變量完整性檢查匹配不變量實(shí)驗(yàn)討論和總結(jié)1234567891.介紹隨著最近云計(jì)算服務(wù)的興起,MapReduce框架已經(jīng)變成分布式環(huán)境下高效并行處理大規(guī)模數(shù)據(jù)的一種流行方法。它提供計(jì)算任務(wù)在計(jì)算節(jié)點(diǎn)上的無(wú)縫分布,對(duì)程序員透明。它已經(jīng)被許多大公司廣泛的采用,如Google,Yahoo,Amazon,F(xiàn)acebook,AOL等。Yahoo公司的Hadoop進(jìn)一步推動(dòng)的MapReduce的廣泛采用。盡管它具有自由靈活和能夠處理大規(guī)模數(shù)據(jù)的優(yōu)點(diǎn),MapReduce也易受第三方的攻擊和非法行為的破壞。由于用戶對(duì)運(yùn)行在用戶數(shù)據(jù)上的程序控制較少,數(shù)據(jù)的錯(cuò)誤計(jì)算很容易檢測(cè)不到,這在有惡意服務(wù)的情況下更糟糕。1.介紹本文重點(diǎn)分析和檢測(cè)由惡意或錯(cuò)誤配置節(jié)點(diǎn)所發(fā)起的攻擊。

我們的目標(biāo)是:在不修改MapReduce原始操作和不引入額外操作的前提下,研究如何證實(shí)MapReduce環(huán)境下計(jì)算(不論是計(jì)算型的還是密碼型的)的完整性和正確性。目前處理遠(yuǎn)程計(jì)算核實(shí)問(wèn)題的研究非常多,通常的方法主要依賴于備份、密碼協(xié)議或認(rèn)證協(xié)議。其中大多數(shù)方法盡管有效,但是需要修改MapReduce原始操作流,或是需要修改提交的MapReduce任務(wù)。我們的挑戰(zhàn)是設(shè)計(jì)一種替代的方法而不需要這些干擾性的修改。1.介紹最終,我們提出一種新奇的方法來(lái)檢測(cè)MapReduce框架下的錯(cuò)誤使用和攻擊,即對(duì)系統(tǒng)調(diào)用和MapReduce日志進(jìn)行語(yǔ)義分析。

系統(tǒng)調(diào)用活動(dòng)流包含了豐富的性能和故障方面的數(shù)據(jù)信息及語(yǔ)義信息。

在給定整個(gè)系統(tǒng)準(zhǔn)確的執(zhí)行蹤跡的情況下,可以推導(dǎo)出正在執(zhí)行的操作。這些信息還可以用來(lái)描述某些操作沒(méi)有發(fā)生,這一屬性對(duì)于保證信息安全非常重要。進(jìn)一步,我們確定一個(gè)不變量集合來(lái)形成Hadoop框架和其應(yīng)用程序的基準(zhǔn)行為。將Hadoop日志和特定的系統(tǒng)調(diào)用關(guān)聯(lián)起來(lái),并把他們和確定的不變量比較分析,就可以確定是否有惡意節(jié)點(diǎn)攻擊MapReduce操作函數(shù)或修改計(jì)算的原始工作流。2.相關(guān)工作在各種各樣的計(jì)算應(yīng)用中,從網(wǎng)格到云計(jì)算,都有大量的研究工作在處理計(jì)算核實(shí)問(wèn)題。Du等人使用采樣技術(shù)來(lái)實(shí)現(xiàn)有效可行的非欺騙網(wǎng)格計(jì)算。Zhao等人提出一種模式來(lái)處理結(jié)果認(rèn)證的協(xié)同作弊。Sarmenta等人引入多數(shù)選舉和定點(diǎn)檢測(cè)技術(shù)來(lái)減少錯(cuò)誤率。Xiao等人給出一個(gè)有效的MapReduce平臺(tái),檢查所有正在運(yùn)行的機(jī)器,實(shí)時(shí)監(jiān)測(cè)惡意節(jié)點(diǎn)。文獻(xiàn)26采用了一種基于備份的模式,允許冗余度基于動(dòng)態(tài)計(jì)算和工作節(jié)點(diǎn)的可行度適應(yīng)性的調(diào)整。文獻(xiàn)30的SecureMR框架,采用一種新的離散化的、基于備份的完整度認(rèn)證模式,并且利用現(xiàn)存的MapReduce層次結(jié)構(gòu)作為備份。Roy等人提出的Airavat系統(tǒng)是一個(gè)MapReduce系統(tǒng)的安全和隱私框架。Airavat通過(guò)向DFS加入SELinux-like強(qiáng)制訪問(wèn)協(xié)議,修改JVM和MapReduce框架,保證差別隱私。2.相關(guān)工作上述所提到的研究都基于備份技術(shù),或需要修改MapReduce配置來(lái)提高安全保障。任務(wù)要么被復(fù)制到兩個(gè)及兩個(gè)以上不同的部分處理,要么使用密碼檢測(cè)來(lái)保證執(zhí)行的正確性。這樣的冗余操作盡管準(zhǔn)確但卻浪費(fèi)系統(tǒng)系統(tǒng)資源,經(jīng)常是不切實(shí)際的。我們研究消除了額外操作的限制,并且研究細(xì)致的關(guān)聯(lián)分析和準(zhǔn)確的日志解析怎樣可以幫助檢測(cè)惡意活動(dòng)。除了在計(jì)算驗(yàn)證和完整度方面的工作,還有大量的通過(guò)日志分析進(jìn)行系統(tǒng)錯(cuò)誤檢測(cè)方面的工作。這些工作重點(diǎn)在系統(tǒng)日志上使用挖掘和靜態(tài)學(xué)習(xí)技術(shù),確定可能的錯(cuò)誤配置和計(jì)算問(wèn)題。如,Xu等人使用基于頻率模式挖掘的兩階段方法和分布估計(jì)技術(shù)來(lái)描述主模式。而我們的方法和目標(biāo)不同,因?yàn)槲覀兊臋z測(cè)重點(diǎn)是蓄意惡意活動(dòng),而不是系統(tǒng)錯(cuò)誤。挖掘技術(shù)不足以檢測(cè)惡意活動(dòng),因?yàn)榭蛻舳颂峁┑某绦蛟诒惶峤坏組apReduce框架之前是無(wú)法知道的。因此,通過(guò)訓(xùn)練程序來(lái)區(qū)分正常和非正常行為是幾乎不可能或不切實(shí)際的。3.背景和問(wèn)題陳述A.MapReduce框架1)HadoopHadoop是一個(gè)可運(yùn)行于大規(guī)模集群上的MapReduce編程模型的開(kāi)源實(shí)現(xiàn)。它基于master/slave(主/從)結(jié)構(gòu)。主節(jié)點(diǎn)運(yùn)行JobTracker、TaskTracker、NameNode和DataNode,從節(jié)點(diǎn)運(yùn)行TaskTracker和DataNode。JobTracker負(fù)責(zé)分配作業(yè),并協(xié)調(diào)整個(gè)作業(yè)的執(zhí)行;TaskTracker負(fù)責(zé)執(zhí)行分配到的作業(yè)。MapReduce是Google提出的一個(gè)適合處理大數(shù)據(jù)的并行分布式編程模型。它用Map和Reduce兩個(gè)函數(shù)來(lái)表達(dá)基本的并行計(jì)算任務(wù)。Map函數(shù)接收一個(gè)鍵/值對(duì)作為輸入,生成另外一組鍵/值對(duì)作為中間結(jié)果;Reduce函數(shù)接收所有的中間結(jié)果,根據(jù)鍵值進(jìn)行合并歸約操作,產(chǎn)生最終結(jié)果。在云計(jì)算環(huán)境下這些函數(shù)由主節(jié)點(diǎn)協(xié)調(diào)控制,負(fù)責(zé)任務(wù)分配和任務(wù)管理等等。由于Hadoop是我們研究中的參考架構(gòu),下面簡(jiǎn)要介紹一下Hadoop模型。3.背景和問(wèn)題陳述A.MapReduce框架2)Hadoop分布式文件系統(tǒng)HDFS是適合部署在通用硬件上、適合大規(guī)模數(shù)據(jù)集應(yīng)用的一種分布式的、可擴(kuò)展的文件系統(tǒng)。用戶應(yīng)用程序通過(guò)HDFS客戶端訪問(wèn)文件系統(tǒng)。HDFS使用機(jī)架感知策略,數(shù)據(jù)塊只存在兩個(gè)不同的機(jī)架上,減少了讀取數(shù)據(jù)需要的網(wǎng)絡(luò)傳輸總帶寬,同時(shí)提高了寫操作的效率。一個(gè)典型的HDFS集群由單個(gè)NameNode(名稱節(jié)點(diǎn)或主服務(wù)器)和若干個(gè)DataNode(數(shù)據(jù)節(jié)點(diǎn)或數(shù)據(jù)服務(wù)器)組成。NameNode負(fù)責(zé)維護(hù)文件系統(tǒng)的目錄結(jié)構(gòu),并可以根據(jù)用戶請(qǐng)求返回文件數(shù)據(jù)在Hadoop集群上的位置。NameNode是單點(diǎn)故障節(jié)點(diǎn),一旦NameNode宕機(jī),整個(gè)系統(tǒng)就崩潰了(可以運(yùn)行一個(gè)二級(jí)名稱節(jié)點(diǎn))。NameNode本身不存儲(chǔ)任何數(shù)據(jù),DataNode是實(shí)際存儲(chǔ)數(shù)據(jù)的地方。一個(gè)優(yōu)化的集群通常使用多個(gè)Datanode交叉存儲(chǔ)數(shù)據(jù)來(lái)提高系統(tǒng)的可信度。3.背景和問(wèn)題陳述B.目標(biāo)我們的目標(biāo)是:研究通過(guò)監(jiān)控節(jié)點(diǎn)的執(zhí)行行為的方法來(lái)檢測(cè)工作節(jié)點(diǎn)上的欺騙或惡意行為的可能性。欺騙節(jié)點(diǎn)是指那些為了節(jié)省計(jì)算資源而跳過(guò)所要求計(jì)算的一部分或全部的節(jié)點(diǎn)。惡意節(jié)點(diǎn)是指那些為了獲取一些自私利益而故意破壞計(jì)算的節(jié)點(diǎn)。例如,它們可能執(zhí)行一些額外的計(jì)算任務(wù)來(lái)控制客戶端,或者試圖去獲取用戶的輸入輸出數(shù)據(jù)。

我們不會(huì)提供數(shù)據(jù)層次的程序認(rèn)證技術(shù),因?yàn)檫@是不切實(shí)際的。我們也不致力于放大那些涉及隱藏或危害系統(tǒng)調(diào)用的未知的攻擊,如偽裝攻擊,它通過(guò)修改系統(tǒng)調(diào)用序列來(lái)偽裝成正常的行為,這超出了我們的工作范圍。另外,有些攻擊可以在不導(dǎo)致系統(tǒng)失敗的條件下產(chǎn)生錯(cuò)誤結(jié)果,這不在我們研究的之內(nèi)。錯(cuò)誤行為模式在之前工作中已經(jīng)有所研究,也不在我們的工作范圍之內(nèi)。3.背景和問(wèn)題陳述C.假設(shè)我們研究依賴于以下一些假設(shè):1)MapReduce框架是不受干擾的。Hadoop系統(tǒng)在安排、分配任務(wù)和收集結(jié)果方面是沒(méi)有被破壞的。我們假設(shè)工作節(jié)點(diǎn)在同一時(shí)間、相同輸入數(shù)據(jù)部分執(zhí)行相同的MapReduce任務(wù)。2)工作節(jié)點(diǎn)有相同的硬件配置。這一假設(shè)和現(xiàn)實(shí)應(yīng)用是一致的,因?yàn)榇蠖鄶?shù)MapReduce集群實(shí)現(xiàn)都有相同的技術(shù)規(guī)格。我們盡量使得不同工作節(jié)點(diǎn)上的對(duì)比是公平的、可比較的。3)Master節(jié)點(diǎn)和HDFS是可信任的。在HadoopMapReduce環(huán)境下,Master節(jié)點(diǎn)是個(gè)單點(diǎn)故障節(jié)點(diǎn),它負(fù)責(zé)分配、控制、管理文件系統(tǒng)命名空間、控制客戶端對(duì)文件的訪問(wèn)等。相應(yīng)的,我們假設(shè)Hadoop的日志設(shè)施是可信的,節(jié)點(diǎn)上的系統(tǒng)調(diào)用日志是可信的??梢钥闯?,這些假設(shè)是合理的,因?yàn)镸apReduce環(huán)境下已經(jīng)配置和使用了一些安全日志系統(tǒng)。4)大多數(shù)MapReduce節(jié)點(diǎn)是誠(chéng)實(shí)的。5)節(jié)點(diǎn)執(zhí)行的Map函數(shù)是確定的,也就說(shuō)給定相同的輸入,MapReduce產(chǎn)生相同的輸出。3.背景和問(wèn)題陳述D.方法綜述我們采用黑盒、低層次、動(dòng)態(tài)監(jiān)測(cè)方法來(lái)收集系統(tǒng)調(diào)用層次路徑,這保證了不會(huì)修改Hadoop框架,并且將Hadoop日志和系統(tǒng)調(diào)用日志關(guān)聯(lián)起來(lái)。關(guān)聯(lián)Hadoop日志和低層次系統(tǒng)路徑可以使我們獲得對(duì)執(zhí)行流和數(shù)據(jù)流的一個(gè)綜合認(rèn)識(shí)。分析通過(guò)動(dòng)態(tài)檢測(cè)方法收集到的系統(tǒng)路徑,以一個(gè)細(xì)粒度的方式抽取程序的執(zhí)行流,來(lái)發(fā)現(xiàn)可疑執(zhí)行行為模式。這里的可疑執(zhí)行行為要么是指違反計(jì)算節(jié)點(diǎn)的應(yīng)該負(fù)責(zé)執(zhí)行的MapReduce任務(wù)操作的行為,要么是指成功的破壞MapReduce操作或全局Hadoop執(zhí)行流的行為。3.背景和問(wèn)題陳述D.方法綜述所有MapReduce作業(yè)都遵從相同的執(zhí)行流:1)Map任務(wù)被分配,首先從DataNodes中讀取輸入數(shù)據(jù)開(kāi)始;2)一旦Map任務(wù)完成,Map輸出就被傳送到Reducers;3)Reducers將它們的輸出寫回HDFS,作業(yè)結(jié)束。每個(gè)從節(jié)點(diǎn)都執(zhí)行全部Map和Reduce任務(wù)的一個(gè)子集,這個(gè)時(shí)間順序也反應(yīng)在從節(jié)點(diǎn)上。最近在云計(jì)算和MapReduce應(yīng)用上的錯(cuò)誤分析方面的工作已經(jīng)在文獻(xiàn)[14]和[17]中描述,從節(jié)點(diǎn)遇到相似的工作負(fù)載是正常的,這個(gè)負(fù)載被映射到一致的相似工作路徑。分析這些路徑和MapReduce配置信息、輸入數(shù)據(jù)和系統(tǒng)設(shè)置,可以揭示節(jié)點(diǎn)正在上運(yùn)行的活動(dòng)的重要信息。更重要的是,關(guān)聯(lián)這些路徑和預(yù)期程序執(zhí)行及工作流上的不變量,我們可以發(fā)現(xiàn)正在運(yùn)行的惡意活動(dòng),這些惡意活動(dòng)影響用戶數(shù)據(jù)和計(jì)算的機(jī)密性、完整性和可用性。3.背景和問(wèn)題陳述D.方法綜述可以使用恰當(dāng)?shù)臋z測(cè)技術(shù)和深度分析來(lái)檢測(cè)惡意活動(dòng),使用動(dòng)態(tài)檢測(cè)工具,通過(guò)檢查以下幾種類型的行為和活動(dòng),來(lái)監(jiān)控MapReduce執(zhí)行流。1)程序完整性:通過(guò)已知的不變量,檢查map/reduce函數(shù)執(zhí)行流是否遵從預(yù)期的工作流。2)輸入操作:檢查map函數(shù)的文件輸入片是否來(lái)自正確的HDFS地址。3)輸出操作:檢查reduce任務(wù)的輸出文件是否被映射到預(yù)期的正確的HDFS地址。4)MapReduce函數(shù)層次的I/O活動(dòng):跟蹤分析和文件I/O活動(dòng)相關(guān)的系統(tǒng)調(diào)用子集,如每個(gè)map和reduce函數(shù)中的read()和write(),并把這些信息和Hadoop日志和配置語(yǔ)義關(guān)聯(lián)起來(lái)。4.MapReduce執(zhí)行蹤跡監(jiān)測(cè)我們收集運(yùn)行在每個(gè)Slave節(jié)點(diǎn)上的TaskTracker的執(zhí)行蹤跡,并將聚合的執(zhí)行蹤跡存儲(chǔ)到HDFS上作為日志文件。更準(zhǔn)確的說(shuō),我們使用Hadoop日志來(lái)高層次分析HDFS和Map/Reduce任務(wù)之間的交互。具體的說(shuō),Hadoop使用ApacheLog4j設(shè)施來(lái)產(chǎn)生日志(白盒方法);日志由JobTracker、TaskTracker、NameNode和DateNode的后臺(tái)程序產(chǎn)生,包含配置日志、統(tǒng)計(jì)資料、標(biāo)準(zhǔn)錯(cuò)誤、標(biāo)準(zhǔn)輸出和內(nèi)部診斷信息。由于每個(gè)TaskTracker執(zhí)行Map和Reduce任務(wù)的一個(gè)子集,每個(gè)TaskTracker觀察完成任務(wù)的一個(gè)全局分布樣本。

我們通過(guò)分析Map和ReduceJVM產(chǎn)生的系統(tǒng)調(diào)用日志來(lái)觀察Map和Reduce函數(shù)的執(zhí)行行為。系統(tǒng)調(diào)用日志由動(dòng)態(tài)檢測(cè)TaskTracker的后臺(tái)程序產(chǎn)生。我們注意到系統(tǒng)調(diào)用日志對(duì)于獲取MapReduce任務(wù)程序執(zhí)行行為非常重要。4.MapReduce執(zhí)行蹤跡監(jiān)測(cè)日志分析基于對(duì)Hadoop日志和系統(tǒng)調(diào)用日志可用信息的深入理解Hadoop上有JobTracker、TaskTracker、NameNode和DataNode的唯一標(biāo)示符:1)JobID:JobTracker和TaskTracker日志包含JobID,表示作業(yè)的唯一標(biāo)識(shí)符;2)BlockID:DataNode日志包含BlockID,代表數(shù)據(jù)文件原始HDFS塊;3)TaskID:表示是要么是Map任務(wù),要么是Reduce任務(wù)。TaskID=JobID+嘗試號(hào)+‘m’或‘r’+任務(wù)號(hào)

系統(tǒng)調(diào)用路徑提供比Hadoop日志更細(xì)粒度的執(zhí)行日志。系統(tǒng)調(diào)用日志根據(jù)進(jìn)程ID分組,進(jìn)程ID是TaskTracker子JVM進(jìn)程的唯一標(biāo)識(shí)符。

分布式系統(tǒng)的日志通常是交錯(cuò)的。我們使用時(shí)間戳信息來(lái)獲取正確的執(zhí)行順序。我們通過(guò)檢測(cè)同一時(shí)間框架下的系統(tǒng)活動(dòng)和同步時(shí)間戳,來(lái)消除由機(jī)器時(shí)間偏差引起的時(shí)間漂移。Hadoop日志和系統(tǒng)調(diào)用信息與任務(wù)調(diào)用順序相匹配。4.MapReduce執(zhí)行蹤跡監(jiān)測(cè)

日志解析:從分布式環(huán)境中收集的源日志文件通常是重復(fù)的、松散的和語(yǔ)義困難的,所以我們要解析日志來(lái)獲取有用的信息。更準(zhǔn)確的說(shuō),為了從Hadoop日志和系統(tǒng)調(diào)用日志中獲取有意義的信息,我們使用上述的唯一標(biāo)識(shí)符來(lái)創(chuàng)建通俗規(guī)律的表述,這個(gè)表述允許匹配解析特定的日志項(xiàng)。為了把Hadoop日志和系統(tǒng)調(diào)用日志關(guān)聯(lián)起來(lái),我們從HadoopTaskTracker日志taskjvm.sh相關(guān)聯(lián)日志項(xiàng)中抽取JobID和MapID/ReduceID,抽取系統(tǒng)調(diào)用活動(dòng)taskjvm.sh中相應(yīng)的JobID、Map/ReduceID和PID,并且將兩者匹配。我們還分析系統(tǒng)調(diào)用參數(shù),如文件描述符(如:文件名和路徑名),系統(tǒng)調(diào)用通過(guò)訪問(wèn)文件描述符來(lái)搜索I/O操作和Map/Reduce任務(wù)之間的依賴度。5.完整度檢查HDFS客戶端通過(guò)RPC(遠(yuǎn)程過(guò)程調(diào)用)來(lái)訪問(wèn)HDFS服務(wù)??蛻舳说谝淮蜗騂DFS提交數(shù)據(jù),客戶端需要連接NameNode??蛻舳苏?qǐng)求流,以HadoopRPC形式,需要TCP連接。一旦連接建立,數(shù)據(jù)塊就從客戶端傳輸?shù)紻ataNode上。我們通過(guò)從Hadoop和系統(tǒng)調(diào)用日志中抽取網(wǎng)絡(luò)相關(guān)活動(dòng),來(lái)分析客戶端和NameNode與DataNode之間的通信。Hadoop和系統(tǒng)調(diào)用日志關(guān)聯(lián)抽取的IP地址、端口號(hào)、和與系統(tǒng)調(diào)用相關(guān)的socket連接,來(lái)追蹤HDFS客戶端到NameNode與DataNode的連接。任何可疑的網(wǎng)絡(luò)連接嘗試,如錯(cuò)誤DataNodeIP地址或端口號(hào)、失敗的socket連接系統(tǒng)調(diào)用等,都是可疑行為的一個(gè)明顯跡象。相關(guān)信息和日志信息之間的不一致也是異常的征兆。A.監(jiān)控HDFS客戶端和NameNode與DataNode之間的通信接下來(lái),我們細(xì)述檢測(cè)MapReduce計(jì)算數(shù)據(jù)和處理過(guò)程中異?,F(xiàn)象的方法。我們描述怎樣抽取節(jié)點(diǎn)通信模式,并且使用這一模式來(lái)發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤配置和錯(cuò)誤訪問(wèn)。5.完整度檢查HDFS是一個(gè)用于儲(chǔ)存大量數(shù)據(jù),服務(wù)大規(guī)模數(shù)據(jù)密集型應(yīng)用的分布式文件系統(tǒng)。我們收集Hadoop日志來(lái)抽取HDFS客戶端的訪問(wèn)模式和數(shù)據(jù)塊的存儲(chǔ)地址,作為驗(yàn)證輸入數(shù)據(jù)完整性的一種方法。HadoopNameNode和DataNode日志提供數(shù)據(jù)塊ID信息和DataNode數(shù)據(jù)塊存儲(chǔ)位置信息,由HDFS客戶端訪問(wèn)。NameNode管理文件列表、每個(gè)文件里的數(shù)據(jù)塊列表、每個(gè)DataNode里的數(shù)據(jù)塊列表和其他元數(shù)據(jù)。DataNode在它的本地文件系統(tǒng)存儲(chǔ)數(shù)據(jù)塊,每個(gè)塊存儲(chǔ)元數(shù)據(jù)。我們抽取正在被HDFS客戶端訪問(wèn)的DataNode地址(如:IP地址或主機(jī)名)和數(shù)據(jù)塊ID。我們還抽取HDFS上操作信息,如HDFS_READ和HDFS_WRITE。這些信息對(duì)于驗(yàn)證Map任務(wù)的輸入數(shù)據(jù)是有用的——判斷加載到Map任務(wù)上的輸入數(shù)據(jù)是否是來(lái)自正確的DataNode地址而非來(lái)自攻擊者。從日志中獲取的BlockID也可以用來(lái)驗(yàn)證Map任務(wù)輸入數(shù)據(jù)的完整性。B.HDFS訪問(wèn)模式5.完整度檢查通過(guò)分析HDFS的訪問(wèn)模式,識(shí)別對(duì)HDFS的惡意訪問(wèn)(如向DataNode寫任意數(shù)據(jù)塊或非授權(quán)訪問(wèn)數(shù)據(jù)塊)。我們特定檢查以下兩種HDFS活動(dòng):(1)存儲(chǔ)客戶端數(shù)據(jù)文件塊到DataNode子集;(2)從持有數(shù)據(jù)塊備份的DataNode中加載數(shù)據(jù)塊到Map任務(wù)。我們分析從DataNode中收集到的系統(tǒng)調(diào)用路徑來(lái)識(shí)別HDFS客戶端和DataNode間的數(shù)據(jù)轉(zhuǎn)移活動(dòng)。例如,accept()系統(tǒng)調(diào)用提供客戶端與DataNode建立連接的信息;帶blockID參數(shù)的open()系統(tǒng)調(diào)用揭示正在被訪問(wèn)的數(shù)據(jù)塊;HDFS數(shù)據(jù)轉(zhuǎn)移使用TCP/IP套接字直接執(zhí)行,因此帶文件描述符參數(shù)的sendfile()系統(tǒng)調(diào)用幫助我們檢查DataNode是否發(fā)送正確的數(shù)據(jù)塊給相應(yīng)的HDFS客戶端。C.使用Dtrace/Strace窺探HDFS和MapReduce之間的IO5.完整度檢查我們?cè)诜椒▽哟魏拖到y(tǒng)調(diào)用層次,通過(guò)動(dòng)態(tài)追蹤每個(gè)從節(jié)點(diǎn)上TaskTracker子JVM進(jìn)程來(lái)收集Map和Reduce動(dòng)態(tài)執(zhí)行路徑。從路徑中抽取程序執(zhí)行的語(yǔ)義信息,如已經(jīng)被加載到Map/Reduce任務(wù)上的類,正在系統(tǒng)組件上執(zhí)行的操作的類型。系統(tǒng)路徑語(yǔ)義分析提供Map/Reduce任務(wù)控制流和數(shù)據(jù)流的細(xì)粒度信息。使用系統(tǒng)調(diào)用層次路徑,我們還可以識(shí)別Map/Reduce任務(wù)的不同組件之間的依賴性和因果關(guān)系。因果關(guān)系顯示用戶應(yīng)用程序源代碼的執(zhí)行邏輯。D.Map和Reduce函數(shù)的執(zhí)行路徑6.MapReduce不變量為了有效的使用前述的路徑,我們把它們和預(yù)期的或可信任的MapReduce節(jié)點(diǎn)行為相關(guān)聯(lián)。程序不變量在不同的輸入和工作負(fù)載下都保存在系統(tǒng)日志里。因此,它們通常作為驗(yàn)證程序執(zhí)行的檢查點(diǎn)。我們的方法考慮程序不變量子集,分析日志序列來(lái)將它們和預(yù)期工作流相比較。如果新的日志信息不滿足預(yù)期的不變量條件,則判定為異常,任何異常都可以被檢測(cè)出。Hadoop框架中的不變量包括:Hadoop和Java庫(kù)的存在、讀正確的配置文件、寫中間數(shù)據(jù)塊和讀取中間數(shù)據(jù)塊。Hadoop庫(kù)對(duì)所有的Hadoop應(yīng)用都通用。因此Hadoop庫(kù)不依賴具體的應(yīng)用,工作節(jié)點(diǎn)上運(yùn)行時(shí)加載Hadoop庫(kù)的活動(dòng)通??梢员粺o(wú)任何偏差的觀測(cè)。進(jìn)一步,我們可以通過(guò)分析系統(tǒng)調(diào)用日志,來(lái)檢查必要的Hadoop庫(kù)是否已經(jīng)被加載到Map和/或Reduce任務(wù)。

Mapper函數(shù)把輸入鍵值對(duì)轉(zhuǎn)換成中間結(jié)果鍵值對(duì),reducer函數(shù)根據(jù)相同的鍵值合并中間鍵值對(duì),產(chǎn)生最終計(jì)算結(jié)果。更具體的說(shuō),HDFS輸入數(shù)據(jù)文件被分成輸入分片并分配給mapper函數(shù)作為輸入鍵值對(duì)。由mapper函數(shù)產(chǎn)生的中間結(jié)果鍵值對(duì)被排序,然后被shuffleSort函數(shù)合并,將具有相同鍵值的對(duì)合并,并將key和value列表發(fā)送給reducer。Reducer產(chǎn)生的最終結(jié)果存儲(chǔ)在HDFS中。6.MapReduce不變量除了簡(jiǎn)單的操作和日志文件活動(dòng)檢查,我們還可以通過(guò)分析mapper執(zhí)行之前和reducer執(zhí)行之后的HDFS訪問(wèn)模式,分析mapper和reducer任務(wù)之中的I/O活動(dòng),來(lái)檢查執(zhí)行模式是否遵從預(yù)期的工作流。更準(zhǔn)確的說(shuō),Hadoop配置提供mapper存儲(chǔ)中間輸出結(jié)果的位置,系統(tǒng)調(diào)用參數(shù)揭示mapper寫中間結(jié)果的位置。不論數(shù)據(jù)大小和具體的Map應(yīng)用,這兩個(gè)位置永遠(yuǎn)是匹配的。例如,當(dāng)檢查HDFS是否正確的和MapReduce交互時(shí),應(yīng)當(dāng)觀察以下這些活動(dòng):1)客戶端向HDFS寫數(shù)據(jù)文件(分片的,以塊的形式存儲(chǔ)在DataNode上);2)Mapper從DataNode上加載數(shù)據(jù)塊;3)Reducer向HDFS寫最終輸出結(jié)果(除了輸出被寫到另外一個(gè)Mapper上的情況)。上述步驟的順序在Hadoop工作流中非常重要,不能改變。6.MapReduce不變量為了更細(xì)致的理解實(shí)際函數(shù)的行為,可以觀察一下Map和Reduce函數(shù)層次的不變量:1)輸入/輸出:給定相同的輸入數(shù)據(jù),Map函數(shù)永遠(yuǎn)產(chǎn)生相同的輸出數(shù)據(jù),除非Map已經(jīng)被破壞;2)方法調(diào)用:執(zhí)行流相同的序列任務(wù),方法調(diào)用的順序應(yīng)該相同;3)執(zhí)行順序:可以考慮多個(gè)不變量。例如,從HDFS上加載輸入數(shù)據(jù)塊到Map函數(shù),后面永遠(yuǎn)跟著寫中間結(jié)果到本地磁盤或HDFS上;加載中間輸出結(jié)果到Reduce任務(wù),后面永遠(yuǎn)跟著寫輸出結(jié)果到本地磁盤或HDFS上。就Map/Reduce函數(shù)中系統(tǒng)調(diào)用的數(shù)量而言,訪問(wèn)系統(tǒng)調(diào)用和返回系統(tǒng)調(diào)用的數(shù)量在mapper和reducer中應(yīng)該一樣,如(open()和close())。檢查這個(gè)數(shù)量顯然是一種有效的檢測(cè)可能異常的方法,如文件描述符攻擊。7.匹配不變量和完整度檢查我們的MapReduce執(zhí)行檢查是在分析運(yùn)行時(shí)收集的關(guān)聯(lián)的Hadoop日志和系統(tǒng)調(diào)用日志的基礎(chǔ)上進(jìn)行的。Apache

Hadoop和HDFS是Java語(yǔ)言構(gòu)建的。因此,我們檢查用Java實(shí)現(xiàn)的mapper和reducer函數(shù)。本節(jié),我們討論怎樣基于前述的不變量檢查MapReduce計(jì)算。A.輸入數(shù)據(jù)完整度檢查為了檢查可能的惡意活動(dòng),首先要檢查節(jié)點(diǎn)使用的輸入數(shù)據(jù)。圖2概括了我們分析用到的主要日志。JobTracker日志提供給定任務(wù)輸入數(shù)據(jù)尺寸和分片數(shù)相關(guān)的信息,和mapper的數(shù)量匹配??梢詮腡askTracker日志中抽取指定map任務(wù)輸入數(shù)據(jù)文件名和它的HDFS路徑。我們還可以獲取Map和/或Reduce任務(wù)被分配到的JobID、TaskID、MapID和節(jié)點(diǎn)位置,以及mapper所用到的輸入數(shù)據(jù)信息。使用這些信息,我們可以關(guān)聯(lián)JobTracker、TaskTracker日志和使用的系統(tǒng)I/O日志,來(lái)獲取HDFS和Map/Reduce任務(wù)之間的語(yǔ)義和行為關(guān)系。7.匹配不變量和完整度檢查A.輸入數(shù)據(jù)完整度檢查輸入數(shù)據(jù)上可以做的一個(gè)簡(jiǎn)單的檢查是,從JobTracker日志和HDFS中檢查輸入數(shù)據(jù)的大小。JobTracker提供Inputsizeforjob,這應(yīng)該和存儲(chǔ)在HDFS中的輸入文件大小匹配。例如,WordCount應(yīng)用中輸入數(shù)據(jù)的大小是一個(gè)1573078字節(jié)的文本文件。大小信息可以從JobTracker日志和HDFS中獲取。HDFS中塊層次的操作(如,HDFS_READ,HDFS_WRITE)可以從DataNode日志中觀測(cè)。更細(xì)粒度的信息,如BlockID,塊地址和Map任務(wù)的塊訪問(wèn)模式,可以從系統(tǒng)I/O路徑中獲得,系統(tǒng)I/O路徑是通過(guò)動(dòng)態(tài)監(jiān)測(cè)DataNode得到的。

Mapper產(chǎn)生的中間結(jié)果和Reducer產(chǎn)生的最終結(jié)果可以類似的通過(guò)關(guān)聯(lián)日志分析檢查。我們用MapReduce任務(wù)的數(shù)據(jù)塊信息和來(lái)自關(guān)聯(lián)日志的位置信息來(lái)觀察HDFS訪問(wèn)行為。中間輸出結(jié)果通常存儲(chǔ)在‘$JobID/$attempID/output’文件夾。Hadoop日志和系統(tǒng)調(diào)用日志還提供數(shù)據(jù)大小信息。我們可以從TaskTracker日志中獲取MapReduce輸出數(shù)據(jù)大小,這和Reducer成功寫入HDFS的字節(jié)數(shù)總和相等。7.匹配不變量和完整度檢查B.計(jì)算完整度檢查

即使mapper使用有效正確的輸入數(shù)據(jù),一個(gè)受破壞的節(jié)點(diǎn)也會(huì)運(yùn)行欺騙的或惡意的Map和/或Reduce代碼,最終導(dǎo)致錯(cuò)誤的計(jì)算結(jié)果。為了檢查Map/Reduce計(jì)算完整度,我們通過(guò)分析TaskTracker日志和從各個(gè)工作節(jié)點(diǎn)收集到的系統(tǒng)調(diào)用日志,來(lái)觀察mapper執(zhí)行行為。Hadoop日志可以檢查程序是否被正確實(shí)例化和配置,但是不能提供Map/Reduce任務(wù)實(shí)際怎樣和是否正確執(zhí)行的信息。因此,我們要在運(yùn)行時(shí)動(dòng)態(tài)檢測(cè)mapper和reducer,并收集特定的系統(tǒng)調(diào)用路徑。因?yàn)橄到y(tǒng)調(diào)用可能頻繁發(fā)生,因此我們只收集特定的I/O系統(tǒng)調(diào)用,如read()和write()。通過(guò)比較同等工作節(jié)點(diǎn)的路徑,可以幫助我們檢測(cè)Map/Reduce任務(wù)任何異常執(zhí)行行為,而不需要客戶端應(yīng)用程序的先驗(yàn)知識(shí)(如黑盒方法)。

比較節(jié)點(diǎn)間的系統(tǒng)調(diào)用序列,是為了檢測(cè)誠(chéng)實(shí)工作節(jié)點(diǎn)和欺騙節(jié)點(diǎn)之間系統(tǒng)調(diào)用數(shù)據(jù)方面的明顯的不同之處,或是惡意工作節(jié)點(diǎn)Map函數(shù)執(zhí)行流的不同模式。例如,因?yàn)榇蠖鄶?shù)計(jì)算都涉及寫操作,一個(gè)想要收集計(jì)算資源欺騙節(jié)點(diǎn)就會(huì)表現(xiàn)出一種不同的系統(tǒng)調(diào)用模式,該模式中write()系統(tǒng)調(diào)用比誠(chéng)實(shí)節(jié)點(diǎn)顯著減少。系統(tǒng)調(diào)用相關(guān)數(shù)據(jù)對(duì)于監(jiān)測(cè)Map/Reduce計(jì)算中的欺騙行為非常有用。然而,原始數(shù)據(jù)對(duì)于監(jiān)測(cè)惡意行為還不夠,因?yàn)閻阂釳ap/Reduce函數(shù)也可能會(huì)在產(chǎn)生和誠(chéng)實(shí)程序差不多數(shù)量的系統(tǒng)調(diào)用的情況下改變程序的語(yǔ)義。所以我們還需要通過(guò)日志分析考慮程序語(yǔ)義和執(zhí)行流。這一點(diǎn)將在第8部分討論。7.匹配不變量和完整度檢查C.Hadoop配置檢查

我們研究Hadoop配置操作會(huì)怎樣影響MapReduce的執(zhí)行行為和工作流。攻擊可能會(huì)修改Hadoop配置,目的是破壞MapReduce計(jì)算或崩潰計(jì)算。一個(gè)可能的攻擊是符號(hào)鏈攻擊,攻擊通過(guò)判斷文件寫數(shù)據(jù)之前是否有足夠的檢查來(lái)鎖定目標(biāo)應(yīng)用程序,然后創(chuàng)建一個(gè)不同目錄的文件符號(hào)鏈。系統(tǒng)調(diào)用蹤跡會(huì)表現(xiàn)出不同的操作配置模式。例如,通過(guò)修改mapred-default.xml中的“mapreduce.tasktracker.report.address”值,TaskTrackerIP地址和端口號(hào)可能會(huì)被改變?nèi)ミB接攻擊者的節(jié)點(diǎn)。同樣的,通過(guò)修改mapred-default.xml中的“mapreduce.tasktracker.local.dir”值,

MapReduce存儲(chǔ)中間結(jié)果文件的本地目錄可能會(huì)被修改成攻擊者指定的目錄,使攻擊者能夠操作中間結(jié)果。Mapper在寫輸出到指定的位置之前需要讀配置文件,所以攻擊者可能在Mapper讀之前修改指定地址。在這兩種情況下,系統(tǒng)調(diào)用都會(huì)提供原和修改后的IP地址、端口號(hào)和本地目錄相關(guān)信息,表明配置已經(jīng)被修改。

8.實(shí)驗(yàn)我們使用Hadoop中著名的應(yīng)用程序WordCount程序來(lái)進(jìn)行我們的實(shí)驗(yàn),WordCount用來(lái)統(tǒng)計(jì)一個(gè)文件中單詞出現(xiàn)的頻次。WordCount中Map和Redcue方法如圖4所示。A.實(shí)驗(yàn)環(huán)境我們使用Ubuntu下Hadoop1.2.1。從每個(gè)從節(jié)點(diǎn)中收集系統(tǒng)路徑并且存儲(chǔ)日志到HDFS中。如前所述,日志是在Map和Reduce函數(shù)執(zhí)行時(shí)收集的。我們使用Perl腳本來(lái)讀取、收集和解析日志。對(duì)于Hadoop日志我們收集JobTracker、TaskTracker、NameNode和DataNode日志,對(duì)于Dtrace日志我們收集系統(tǒng)調(diào)用路徑和HDFS與Map/Reduce任務(wù)之間的I/O通信日志。8.實(shí)驗(yàn)B.實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)中,我們尋找欺騙和惡意行為模式。1)欺騙工作節(jié)點(diǎn):我們統(tǒng)計(jì)在Hadoop框架下執(zhí)行的MapReduce應(yīng)用程序,并創(chuàng)建一個(gè)嘗試通過(guò)修改執(zhí)行流來(lái)跳過(guò)一些計(jì)算的欺騙節(jié)點(diǎn)(在WordCount例子中是迭代控制流)。我們追蹤運(yùn)行Mapper/Reduce函數(shù)的TaskTracker子JVM。2)惡意節(jié)點(diǎn):惡意節(jié)點(diǎn)可能通過(guò)很多方式攻擊MapReduce框架。缺乏對(duì)已知正確路徑的假設(shè),僅僅使用日志分析來(lái)檢測(cè)惡意行為非常困難。即使只有一個(gè)受破壞的節(jié)點(diǎn)也可能會(huì)導(dǎo)致Map/Reduce任務(wù)最終結(jié)果錯(cuò)誤,因?yàn)槭芷茐牡膍apper可能會(huì)產(chǎn)生錯(cuò)誤的中間結(jié)果進(jìn)而影響最終結(jié)果。8.實(shí)驗(yàn)B.實(shí)驗(yàn)內(nèi)容我們討論一些攻擊者破壞普通Map/Reduce函數(shù)的場(chǎng)景。實(shí)驗(yàn)中,我們尤其關(guān)心相關(guān)的系統(tǒng)調(diào)用和參數(shù)能否提供足夠的語(yǔ)義信息來(lái)檢測(cè)惡意行為。在這方面,我們研究了以下這些攻擊,對(duì)于每一種攻擊,我們討論檢測(cè)的方法。1)檢測(cè)惡意JVM活動(dòng),如可疑的JVM產(chǎn)生。我們可以從Hadoop日志和系統(tǒng)調(diào)用日志抽取JobID、MapID和JVMID,并且檢查它們是否一致或檢查是否有一個(gè)節(jié)點(diǎn)的值和其他節(jié)點(diǎn)的都不一樣。更準(zhǔn)確的說(shuō),通過(guò)查看從TaskTracker子進(jìn)程和HadoopTaskTracker日志收集而來(lái)的系統(tǒng)調(diào)用日志可以有效的檢測(cè)攻擊。日志顯示了Map/Reduce任務(wù)的所有擴(kuò)展JVM細(xì)節(jié)信息。2)檢測(cè)惡意/可疑JAR或類文件加載。惡意節(jié)點(diǎn)可以創(chuàng)建JAR文件來(lái)利用JRE弱點(diǎn)。系統(tǒng)調(diào)用路徑可以顯示所有被加載來(lái)執(zhí)行Map/Reduce任務(wù)的類??梢詮娜罩局蝎@取JAVA類文件的名稱和地址。8.實(shí)驗(yàn)B.實(shí)驗(yàn)內(nèi)容3)檢測(cè)由Mapper產(chǎn)生的錯(cuò)誤放置的中間結(jié)果。通過(guò)檢查系統(tǒng)調(diào)用日志中的中間輸出文件的存儲(chǔ)位置,可以發(fā)現(xiàn)攻擊。我們檢查mapper是否將中間輸出結(jié)果寫到和配置地址不同的位置上。同樣的,我們還檢查Reducer是否從和數(shù)據(jù)存儲(chǔ)位置不同的地址讀取中間輸出結(jié)果。4)檢測(cè)Hadoop配置的惡意修改。在MapReduce計(jì)算期間,攻擊者可能操作特定的Hadoop配置文件,包括core-site.xml,mapred-site.xml,和hdfs-site.xml。通過(guò)關(guān)聯(lián)Hadoop日志和系統(tǒng)調(diào)用日志,我們可以檢測(cè)一個(gè)工作節(jié)點(diǎn)上任何配置的變更,如數(shù)據(jù)塊地址。8.實(shí)驗(yàn)C.實(shí)驗(yàn)結(jié)果接下來(lái),匯報(bào)WordCount應(yīng)用中欺騙和惡意工作節(jié)點(diǎn)實(shí)驗(yàn)的結(jié)果。我們的設(shè)置包括6個(gè)mapper,其中有一個(gè)欺騙或惡意mapper。我們使用從古登堡計(jì)劃收集獲取的eBook作為輸入數(shù)據(jù),并且工作節(jié)點(diǎn)只執(zhí)行WordCount程序。

1、在欺騙的場(chǎng)景下HadoopTaskTracker日志顯示,欺騙節(jié)點(diǎn)Map輸出結(jié)果的尺寸和誠(chéng)實(shí)節(jié)點(diǎn)的輸出顯著不同。系統(tǒng)調(diào)用日志顯示Map函數(shù)中write()數(shù)目的巨大區(qū)別。欺騙mapper的write()系統(tǒng)調(diào)用數(shù)目遠(yuǎn)少于誠(chéng)實(shí)mapper,而read()數(shù)目差不多。欺騙節(jié)點(diǎn)不顯示Map階段任何溢出文件記錄,而誠(chéng)實(shí)mapper在Re

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論