姜開達, 章思宇, 孫 強
(上海交通大學網絡信息中心,上海 200240)
隨著云計算等技術的興起與發(fā)展,大數據正在深刻地影響著人們的工作、學習和生活,甚至左右著國家經濟和社會發(fā)展,我們已經邁入了大數據時代.如何在教育信息化領域充分理解并迎接大數據技術帶來的機遇和挑戰(zhàn),利用海量數據來挖掘信息、判斷趨勢、提高效率?這是高校信息化部門未來建設數字化校園過程中必須面對的挑戰(zhàn).
大數據作為一門還在快速發(fā)展中的技術,在校園網絡應用中的落地需要一個漸進的過程.上海交通大學信息化部門建設了多個基于OpenStack和Hadoop的分布式云計算基礎平臺,給學校的科研工作和各類校園級應用提供了有力支撐,近年來也在利用Hadoop平臺長期存儲和快速分析海量校園網站訪問日志方向進行了一系列探索和實踐.
從IT系統(tǒng)管理運維的角度出發(fā),需要有統(tǒng)一的方案來監(jiān)控全體服務器的運行數據,包括Web應用服務端程序的日志也值得集中分析和處理,以及時發(fā)現運行異常和評估網站服務狀況.由于安全投入和重視普遍不足,高校網站一直是受黑客攻擊的重災區(qū),面臨著各種來源和不同類型的漏洞掃描、攻擊入侵以及敏感數據泄露的威脅.徹底的網站日志分析可以及時發(fā)現安全薄弱點和已被入侵的站點,完整的網站日志在出現網絡安全事件后可能也是回溯追蹤的重要線索.
對大型互聯(lián)網公司諸多網站產生的海量日志存儲和分析,存在多種成熟的方案.一種流行的架構是使用Flume(采集)+Kafka(接入)+Storm(分析)+HDFS(存儲)的組合.Flume是一個高可靠且分布式的海量日志采集、聚合和傳輸系統(tǒng),可用于收集數據并在進行簡單處理后寫到各種數據接收方.Apache Kafka是LinkedIn開源的高吞吐量分布式發(fā)布訂閱消息系統(tǒng),主要用于處理活躍的流式數據,解決采集速度和處理速度不同步的問題.Storm是Twitter開源的一個分布式實時計算系統(tǒng),支持對流式數據進行處理.HDFS(Hadoop分布式文件系統(tǒng))是一個高容錯性的系統(tǒng),基于廉價的硬件來提供高吞吐量的數據訪問,非常適合大規(guī)模數據的存儲應用.
高校校園網站雖然單個規(guī)模都不大,但是數量眾多.如上海交通大學校園網內的網站數量就已過千,并且極為分散.除了學校數據中心集中了一批重要Web的應用服務器以外,在校內機關/院系所/實驗室還有大量的各類網站應用.這些網站服務器的操作系統(tǒng)和Web服務程序版本眾多且無法統(tǒng)一,部分定制化的專業(yè)應用無法升級;管理人員的能力參差不齊,無法做到分布式的基于主機部署Agent的Web日志收集.這些特點決定了高校不能完全照搬互聯(lián)網企業(yè)的模式,而應該有自己的創(chuàng)新措施來滿足Web日志集中搜集的需求.
上海交通大學采取的方案是在校園網邊界出口處分離出外網訪問校園網內Web信息系統(tǒng)的網絡流量,以及校內數據中心出口的訪問服務器網絡流量,對其進行應用層協(xié)議分析,提取完整的HTTP請求header報文信息(GET/POST)和Response報文信息,從網絡流量中而不是主機上盡可能完整地按需要還原出所有類似access.log格式的Web訪問日志.這樣既可以集中獲得所有訪問日志,也可以跨網站服務器平臺來統(tǒng)一日志格式,同時避免了某些系統(tǒng)被入侵后產生的日志被刪除的缺陷,唯一的缺點是對于使用HTTPS類型的加密網絡流量,沒有SSL證書的情況下無法從網絡流量中還原出原始內容,這部分還是需要依賴相關主機的日志系統(tǒng).
有一些商業(yè)用戶行為審計或者流控產品可以通過Syslog或以其他接口輸出不同類型和格式的URL訪問日志,但是靈活性和可擴展性不足.為了滿足校園網10 Gbps的實際流量處理需求,我們基于開源軟件和開源庫,自行在x86平臺底層實現了從高速網絡流量中提取自定義的Web日志到本地文件,目前的主流服務器(Xeon E5-2600系列)下可以達到單機每日10億字節(jié)量級的穩(wěn)定日志生成能力.
從上海交通大學校園網今年前7個月的統(tǒng)計來看,存儲全校一千多個網站的原始Web訪問日志涉及到的數據量級已在百億字節(jié)以上,并且這些數據還在隨著時間的推移而線性增長.傳統(tǒng)的Oracle、MySQL、SQL Server等關系型數據庫并不適合海量日志存儲這種低實時性要求的小并發(fā)查詢應用場景,并且在數據量到達一定級別之后會出現各種瓶頸.如果沒有合適的手段來查詢和分析Web訪問日志,這些數據中蘊含的真正價值就無法得到體現,因此把每天生成的海量日志文件定期增量導入到Hadoop大數據平臺就成為必然選擇.
日志文件的格式定義如下表所示,不同字段之間用“|”來完成分隔,為了避免文件的無限增長,日志文件按小時滾動生成.
表1 日志文件格式定義
Hadoop起源于Google,是目前由Apache基金會維護的分布式系統(tǒng)基礎架構,用戶可以使用相對廉價的分布式硬件系統(tǒng),通過MapReduce的技術,滿足海量數據存儲和高性能的分析處理需求.圍繞著Hadoop生態(tài)系統(tǒng),又有HBase、Hive、Pig、Sqoop等眾多的開源項目發(fā)展起來,形成了一個完善的、選擇多樣的大數據解決方案.在眾多大數據解決方案中,Hadoop是實現企業(yè)級大數據分析平臺的首選,已經在國內外互聯(lián)網領域得到了廣泛使用.
完全手動安裝Hadoop平臺需要集成很多周邊組件,繁瑣且不易于維護和擴展.類似于Linux操作系統(tǒng)存在眾多發(fā)行版,Cloudera和Hortonworks等公司推出了集成的Hadoop發(fā)行版(包括開源和企業(yè)兩個版本),極大的簡化了大數據平臺的部署和維護流程.
上海交通大學在校內使用了Cloudera的開源版本(CDH5.1.0)構建了一個28臺物理機節(jié)點組成的Hadoop大數據分析平臺(24個存儲計算節(jié)點,4個管理節(jié)點).每計算節(jié)點配128 G內存,兩路八核Xeon E5-2670 CPU,兩塊240 GB的SSD硬盤和12塊2 TB硬盤,所有節(jié)點之間通過萬M以太網完成高速互聯(lián),HDFS總容量超過450 TB.
通過Cloudera Manager,可以方便地使用圖形界面在64位CentOS6.4上部署HDFS、YARN/MapReduce、HBase、Hive、Impala、Spark、Sqoop、Solr等服務,并且監(jiān)控集群服務器的狀態(tài)、資源使用情況和運行中的數據處理任務.
通過集中采集得到的網站日志會利用腳本定期自動導入Hadoop平臺的登錄節(jié)點,再采用Hadoop FS-put命令將文件日志導入進HDFS,并且每個文件導入HDFS時都可以單獨選擇分塊尺寸和副本數,合理調整這些參數可以提高存儲效率.創(chuàng)建HIVE表來定義存儲格式,例如:
然后定期把HDFS上的新日志文件增量導入到HIVE表,例如:
實際初期使用中對網站日志進行分析時,發(fā)現硬盤讀取速度是最大瓶頸,但集群CPU使用率并不高,這時對數據進行壓縮存儲,降低文件大小成為一個必然的選擇.Hadoop的MapReduce任務,以及Impala等SQL引擎在讀取HDFS文件時可自動解開常用的壓縮格式.將導入到HDFS的文件轉換為壓縮格式存儲,一方面提高空間利用率,另一方面在處理日志時,相同的磁盤I/O速度讀取的日志量更多,原本閑置的CPU資源用于在線解壓縮,任務執(zhí)行時間明顯降低.
要運維好一個Hadoop集群和上面的應用,最大化發(fā)揮硬件潛能,需要管理人員在長期的實際使用過程中不斷對配置進行調整優(yōu)化,積累各方面經驗.
對Hadoop中存儲的海量數據進行分析有多種方法,傳統(tǒng)是編寫MapReduce程序來進行處理,這種方式靈活性好,但是開發(fā)周期較長.Pig作為一種編程語言,簡化了MapReduce的開發(fā),提供了簡單的編程接口.Hive提供了HiveQL語言接口,將類SQL語句翻譯為MapReduce任務執(zhí)行,對熟悉關系型數據庫的使用人員更為友好.Impala是Cloudera公司主導開發(fā)的實時查詢引擎,它提供SQL語義,直接跳過了MapReduce過程,可以高速查詢存儲在HDFS中的PB級大數據,給數據分析人員提供了快速實驗和驗證想法的手段.在我們實際日志分析過程中,Impala最快在4 min內完成了對400億條網站日志數據的掃描,查詢速度明顯超過Hive,因此成為最常用的一種分析工具.Hadoop Streaming支持Shell命令的使用,因此grep/cat/awk等Linux下的分析統(tǒng)計工具還是可以繼續(xù)針對HDFS上的數據文件來靈活調用.
國家對非經營性互聯(lián)網信息服務實行備案制度,學校信息化部門是否了解校園網內有多少個網站?訪問量排名的Top100 Sites是哪些?所有網站的網址分別是什么?不同時間段的訪問量各有多少,來源如何分布?其中有多少使用了非edu.cn的域名?有多少網站僅使用IP而不是域名提供訪問?有多少網站使用了非80端口提供服務?這些網站分別使用了何種Web服務端程序?要回答這些問題,顯然不能依賴派發(fā)調查表這種低效的方式,只要對Hadoop平臺的web日志用Impala進行各種針對性的數據挖掘,這些答案就全都可以準確給出.
對于突發(fā)性的重大安全漏洞,通過大數據分析可以在早期迅速給出安全預警和大范圍安全評估.近年來的Apache Struts2漏洞每次爆發(fā)都在互聯(lián)網上掀起腥風血雨,上海交通大學校園網內基于這種Java框架的應用信息系統(tǒng)也有近百個,不及時處理就難逃一劫.怎么快速的從數千個網站之中找出哪些使用了Struts 2開發(fā)框架?通過Impala查詢HTTP訪問URL數據中Path的一些特征字段(.action和.do等)并配合awk/grep/sed/sort等Linux Shell腳本分析,可以在一小時內給出準確的答案.從近兩年的網絡安全發(fā)展態(tài)勢來看,發(fā)現并利用類似通用型軟件漏洞的攻擊有日益增長的趨勢,今年三月份出的DedeCMS注入漏洞,七月份出的Discuz 7.2注入漏洞都給眾多校園網站帶來了嚴重影響,而這些受影響網站都可以通過海量日志數據分析快速反查得到.使用Python腳本結合對應的漏洞POC對這些可能受影響網站進行驗證,可以迅速掌握究竟有多少站點中招.
對于APT(Advanced Persistent Threat,高級持續(xù)性威脅)類型的攻擊,很難立即響應并處理,IDS、Firewall、WAF(Web應用防火墻)等常規(guī)安全防御體系面對0Day攻擊可能都是無效的.這類攻擊往往持續(xù)數月乃至幾年,只有掌握全局且長期的海量日志并擁有關聯(lián)分析能力,才可能從蛛絲馬跡中追蹤各類APT攻擊和0Day利用行為,進行取證分析.
分析Web日志中的GET請求記錄,Referer字段會顯示用戶訪問流量從何處而轉來,User-Agent字段會顯示用戶的操作系統(tǒng)和終端瀏覽器類型,SrcIP字段會顯示用戶來源(校內/校外/地區(qū)/國家),如果是由搜索引擎跳轉而來,抽取Referer信息中查詢字段并對應UTF-8/GB2312解碼,就可以分析出訪問者遠端使用的搜索引擎以及輸入的關鍵詞.這些長期統(tǒng)計分析信息可用于校園網站的用戶行為分析和針對性頁面優(yōu)化,分析用戶使用的搜索關鍵詞在安全領域也有著特殊的意義.日志里的HTTP返回狀態(tài)碼如果是4xx或5xx而不是200,也預示著服務器出現了某些異常情況.
對于網站后門(WebShell),其Web日志某些字段(path或Referer)中的特征比較明顯,可以通過一系列異常挖掘算法及時發(fā)現.關聯(lián)性日志分析可以得出這些木馬是在什么時間,哪個源IP放進來的,網站哪些目錄下還可能存在類似后門導致被利用,攻擊者先后入侵了哪些網站,都在一系列深入分析之后得到了解答.很多服務器被入侵之后,攻擊者會故意抹去其訪問痕跡,不過基于網絡流量的日志仍然忠實記錄了當時發(fā)生的每個細節(jié).一次成功的入侵背后往往伴隨著多次的信息搜集過程,眾多不成功的掃描和攻擊嘗試會在一系列日志數據記錄中得到印證.很多時候人們的確無法實時阻斷所有攻擊,但事后的安全應急響應工作仍然非常有價值,亡羊補牢,為時未晚.如果沒有足夠的日志數據積累,缺乏快速的分析平臺,對發(fā)生的歷史攻擊就毫無知曉,更難避免其反復出現.
校園網站日志系統(tǒng)只是基于Hadoop平臺的一個典型應用,在大數據平臺上還可以提供校園云存儲、教學科研基礎支撐等更多的校園級應用.高校信息化部門要深入研究大數據平臺的自動化靈活部署,做好后期運維保障,并且充分理解最終應用需求,才能用較少的投入來獲得最大的收益,挖掘出大數據中的信息金礦.
對大數據的搜集、分析、可視化是循序漸進的過程,前兩者在校園網站日志系統(tǒng)的建設過程中已經做了一系列基礎研究,可視化輸出通過圖形的形式表現信息的內在規(guī)律及其傳遞、表達的過程,是詮釋復雜數據的重要手段和途徑.可視化的具體方法和形式多種多樣,目的是使不具備專業(yè)背景的用戶也可以直觀理解原始數據中隱藏的規(guī)律和潛在關系,高校在這個方向上還需要做出更多的努力和進一步探索.
[1] 構建大型云計算平臺分布式技術的實踐[EB/OL].[2014-07-18].http://www.infoq.com/cn/news/2014/07/aliyun-distributed.
[2] Linxinsnow.大數據安全分析:我們從日志中得到的(一)[EB/OL].[2014-07-13].http://www.freebuf.com/articles/web/25613.html.
[3] BigHy.騰訊安全零距離之大眼——大型網絡流量分析系統(tǒng)[EB/OL].[2014-12-06].http://security.tencent.com/index.php/blog/msg/33.
[4] 大數據Web日志分析用Hadoop統(tǒng)計KPI指標實例[EB/OL].[2014-02-08].http://www.aboutyun.com/thread-6832-1-1.html.
[5] Flume User Guide[EB/OL].[2014-10-317].http://flume.apache.org/FlumeUserGuide.html.
[6] CDH5.x Documentation[EB/OL].[2014-10-31].http://www.cloudera.com/content/support/en/documentation/cdh5-documentation/cdh5-documentation-v5-latest.html.