文/肖子彤
隨著信息技術的不斷發展,越來越多的聯網設備接入互聯網,為用戶提供更快捷的訪問。然而,在這海量連接入網設備所構成的全球互聯網中,越來越多的安全問題被暴露出來。由于制造商安全觀念缺乏、管理者安全意識不足,大量聯網設備都存在或多或少的安全漏洞,威脅著整個互聯網的安全。IPv6協議所帶來的巨大地址空間將使下一代互聯網的規模更大,接入網絡的終端種類和數量更多,網絡應用更廣泛。而原本發展已經非常迅速的物聯網,在下一代互聯網的推動下,也會迎來更加迅猛的發展。與之相伴的則是海量聯網設備的特征數據,其中必然包含了大量遠程訪問信息,尚待挖掘。
本文提出一套同時支持IPv4和IPv6的下一代互聯網聯網設備基礎數據服務平臺的設計方案,可做到通過對所有接入互聯網的設備進行深度掃描,大規模收集網絡基準數據,包括多種網絡應用相關信息、網站內容等,并進行深度分析和挖掘,感知整個互聯網的網絡安全態勢,提供從宏觀到微觀的全方位數據支持。
IPv6( 全 稱 為“Internet Protocol version 6”)是最新版IP協議,作用于網絡層。其目的是取代IPv4以解決IPv4存在的地址匱乏問題,并對IPv4其他方面存在的不足進行改進。
具體而言,和IPv4相比,IPv6的改進包括報頭處理更加簡化、擴展更加靈活、地址結構更加層次化、支持無狀態自動配置、支持綜合Qos服務、安全性更佳以及實現IP的移動性等等。
隨著IPv6在全球范圍內不斷推廣,對IPv6網絡中安全問題的發現和安全技術的研究也越來越受到重視。如面向IPv6的網絡安全評估技術和面向IPv6的入侵檢測技術等方面,都已有一系列研究。此外在IPv6網絡中,快速掃描和探測海量網絡節點的基本信息以及可能存在的安全問題,也同樣是一個需要研究的重要課題。
端口掃描技術是一種利用互聯網協議的特性,探測主機的特定端口是否開放和運行網絡服務的技術,通常是檢測系統漏洞時必須進行的第一步工作。而根據掃描方法的不同,該技術可分為全開式掃描、半開式掃描、隱密掃描等類別。
其中半開式掃描是目前最常用的掃描方法,主流的端口掃描工具如Nmap、Zmap等默認的掃描方式都是半開式掃描。這里“半開式”是指客戶端在TCP三次握手還未完成時就發送RST包中止連接。這種掃描往往不會被服務器記錄,隱蔽性較好,而且無需保存服務器狀態,掃描速度較快。但是該掃描方式可能被特意針對本方法進行防御的入侵檢測系統所攔截。
對于端口掃描,目前已有的開源工具zmap通過半開式TCP端口掃描可快速完成全網特定端口的開放性掃描。由于zmap對一個IP只發送一個包進行探測,能夠以超過nmap 近千倍的速度掃描全網絡IPv4地址。它在千兆網卡狀態下完成全網IPv4地址掃描僅需45分鐘。因此對IPv4地址的端口掃描通過引入zmap并對其進行封裝和輸出的自動化解析而完成。zmap對IPv6的端口掃描需參考相關掃描原理手動實現,通過嘗試連接IPv6節點的指定端口判斷其是否開放。
在確認一個端口處于開放狀態后,還需要確認該端口關聯的網絡服務類別,zmap關注的是掃描速度,并不具備識別復雜服務類型的功能。而這可由開源工具nmap完成。nmap經多年發展維護,擁有成熟且豐富的服務識別指紋庫,可對多種網絡服務進行較為準確的版本識別,功能極為強大。并且nmap支持IPv6,故初步服務識別可完全由nmap完成。
端口掃描與初步服務識別作為后續所有工作的基礎,必須做到高效完成。而為提升開發效率和避免重復工作,可根據zmap和nmap二者各自的特點各盡其長,結合使用,完成掃描任務。
由于各類網絡服務根據其功能的差異,皆具備不同的指紋特征,因此為了能夠充分滿足對各類服務特定特征的探測需求,并考慮功能的可擴展性,我們對所要掃描的各類服務逐一編寫定制化探測腳本,根據需求確定需掃描的特征。探測腳本需結合已知協議細節、技術知識和交互流量數據對所針對的網絡服務的應用指紋特征進行分析,以獲得具有豐富價值的數據。
在各類服務中,HTTP服務尤其需要重點分析,如利用爬蟲抓取網頁內容,運用正則表達式匹配等手段尋找標志性關鍵詞,從而分析其所用到的Web組件和網站運營信息等等。因為Web服務在互聯網各類服務中所占比例極大,且使用極為頻繁,也最容易因存在漏洞而遭受攻擊;所以收集其特征意義重大,如識別各網站所使用的Web組件類型和版本有利于了解其是否存在漏洞,進而更好地把握整個互聯網的安全形勢。此外,從網站主頁內容等數據中也可挖掘出與互聯網發展動態和趨勢等相關的有價值的信息,故需通過較為完備的Web組件指紋庫對Web服務進行分析,盡可能多地獲取其特征信息。
由于數據搜集和處理量大,掃描和探測過程采用分布式架構完成。對于十億量級IP節點的掃描和探測等任務,若采用傳統集中式系統,那么中心主機資源緊張和響應瓶頸的缺陷將會顯著降低工作效率;而利用分布式使得數據和程序不位于一臺服務器上,而是分散到多個節點服務器上來完成任務,把不同的進程放在最適合的服務器上完成。具體而言,這里的分布式架構包括一個master服務器和多個worker服務器。master服務器根據探測對象IP和端口的不同,快速生成端口掃描、初步應用識別、深度指紋探測等多個任務并放入數據庫中,等待worker領取和完成。worker服務器通過與master通信從數據庫中獲取任務,并在本地完成任務后將收集到的數據返回給master,存入其數據庫中。由于每個掃描任務需要的時間皆較長,因此單個master服務器不會成為系統瓶頸。
通過分布式計算在多臺服務器上平衡負載,有利于任務的分配和優化,提高工作效率。通過合理的架構設置和調度邏輯,在時間和空間上保證對各計算節點的充分利用,高效完成任務;且為便于管理分布式架構的工作狀況,還實現了Web界面用于查看各工作節點的掃描日志。
在掃描和探測的過程中,由于不同IP節點所提供的網絡服務類型差異,所得到的數據類型也會存在較大差異。而常用的關系型數據庫是在表中存儲相關聯的數據,因此擴展性也較差,對于處理非結構化數據顯得力不從心。測試在利用分表分庫緩解讀寫壓力和數據增長的擴展問題上,也表現得不盡人意,故不適用于本應用場景。
非關系型數據庫將相關聯的數據以類似JSON格式的“key-value”格式存儲。數據之間無關系使它易于擴展,簡單的數據結構使它即使在大數據量下讀寫性能依然很高,并且靈活的數據模型使得對海量數據的維護變得簡單易行。而服務平臺中所要處理的海量數據來源極為廣泛,對于不同類型的服務其基本信息千差萬別,一個網站可以提供從Web組件到運營信息等豐富的數據,而從一個SSH服務上可獲得的信息則極為有限,它們難以統一整理為結構化數據。因此本平臺選擇使用更適合處理大量非結構化數據的非關系型數據庫。
測試中平臺運行所需的Web服務器、掃描服務器和數據庫服務器均運行于Ubuntu 16.04系統中,依賴的應用軟件包括zmap、nmap、python、MongoDB和rabbitmq-server等。硬件環境包括四核Intel處理器、8GB內存等。

圖1 ssh服務深度探測結果

圖2 搜索界面
如前所述,本平臺中數據均以非關系型數據格式存儲,如圖1所示,為數據庫中SSH服務深度探測所得的部分結果。

圖3 數據展示界面
在開發的Web頁面中可便捷查詢到探測結果,如圖2和圖3所示。
本文提出了一個對聯網設備基礎數據進行掃描探測與整合管理,且支持IPv6地址掃描的數據服務平臺的設計方案。該數據服務平臺基于擴展性良好的分布式框架,具備對十億量級地址空間進行快速探索的能力;可深度探測不低于十種常見網絡服務的指紋特征;具備探測百萬量級網站的能力,且具有可擴展性;提供XML和json格式的數據接口供第三方調用。
本平臺有待改進的地方主要在于支持深度探測的網絡服務種類還不夠全面,分布式架構的運行效率有待提升,可供用戶檢索的Web界面的可視化方面有待完善。未來可展開的下一步工作包括可增加深度指紋探測腳本以求覆蓋更多的常見網絡服務;根據各項掃描任務相互間依賴關系對分布式架構中的任務調度進行隊列優化,以提升其效率;在Web界面中,當用戶一次性檢索大量數據時,用圖表等可視化形式更加直觀地展現檢索結果,以期有助于對入網設備基礎數據進行分析和挖掘等等。