《網絡安全態勢感知-提取、理解和預測》筆記:一

1 大數據基礎

1.1 大數據的定義和特點

  • 麥肯錫
    一種規模大到在獲取、存儲、管理、分析方面大大超出了傳統數據庫軟件工具能力範圍的數據集合,具有海量的數據模型、快速的數據流轉、多樣的數據類型和價值密度低四大特徵。
  • 研究機構Gartner
    大數據是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力來適應海量、高增長率和多樣化的信息資產。
  • 《大數據時代》
    大數據是指不用傳統的隨機分析法這樣的捷徑,而是採樣所有數據進行分析處理。
  • 數據中心IDC
    大數據處理技術代表了新一代的技術架構,這種架構通過高速獲取數據並對其進行分析和挖掘,從海量且形式各異的數據源中更有效地抽取富含價值的信息。

如果把大數據比作一種產業,那麼這種產業實現盈利的關鍵就在於提高數據的“加工能力”,通過“加工”實現數據的“增值”。

1.2 大數據關鍵技術

  • 數據採集和預處理
  • 數據存儲與管理
  • 數據處理與分析
  • 數據可視化呈現

1.3 大數據計算模式

  • 批量處理計算
    批處理計算是最常見的一類數據處理類型,主要用於大規模數據進行批量的處理其代表產品我們熟知的有:MapReduce、Spark等。
  • 流式計算
    流式計算是近年來興起、發展迅猛的計算方式。流式數據是隨時間分佈和數量上無限的一系列動態數據集合體,數據價值隨時間流逝而降低,必須採用實時計算方式給出響應。流式計算就何以實時處理多源、連續到達的流式數據,並實時分析處理,如:storm、S4、Spark Streaming等。
  • 交互式查詢計算
    主要用於超大規模數據的存儲管理和查詢分析,提供實時或準實時的響應,如:Impala、Cassandra、hive等。
  • 圖計算
    圖計算是以“圖論”爲基礎的對現實世界的一種“圖”結構的抽象表達,一集在這種數據結構上的計算模式,如:GraphX、Giraph等。

2 大數據主流平臺框架

2.1 Hadoop

Hadoop是Apache軟件基金會下的一個開源分佈式計算平臺,它將一個大型的任務切割成多個部分給多臺計算機,讓每臺計算機處理其中一部分。

  • 在硬盤存儲層面,Hadoop的數據處理工作藉助HDFS,將架構下每一臺計算機中的硬盤資源匯聚起來,無論存儲計算還是調用,都可是作爲一個硬盤使用。
  • 在資源管理層面,Hadoop使用集羣管理和調度軟件YARN。
  • 在計算處理層面,Hadoop利用MapReduce計算框架進行計算編程,將複雜的、運行在大規模集羣上的並行計算過程高度抽象爲兩個函數:Map和Reduce。

特點

  • 高可靠性
    採用冗餘數據存儲方式,即使某副本發生故障,其他的仍能正常提供服務。
  • 高效性
    採用分佈式存儲和分佈式處理兩大核心技術,能高效處理PB級別數據。
  • 成本低
    採用廉價計算機集羣,成本低。
  • 可擴展性
    可高效穩定地運行在廉價的計算機集羣上,擴展到數以千計的計算機節點上。
  • 支持多種編程語言

缺點
由於計算過程放在硬盤上,受制於硬件條件限制,數據的吞吐和處理速度明顯不如使用內存塊,且在開發過程中需要編寫不少相對底層的代碼,不夠高效。

2.2 Spark

Spark也是Apache軟件基金會下的開源項目,用於大規模數據的快速處理。

設計理念
“一個軟件棧滿足不同應用場景”,它有一套完整的生態系統,既能提供內存計算框架,也可支持多種類型計算(批量、流式計算和交互式查詢),提供一站式大數據解決方案。

特點

  • 速度快
    採用先進的有向無環圖執行引擎,以支持循環數據流與內存計算,基於內存的執行速度比Hadoop MapReduce快上百倍。
  • 通用性
    提供體系化的技術棧,包括:SQL查詢、流式計算、機器學習和圖算法等組件。
  • 易用性
    支持Scala、Java、Python和R等編程語言,API設計簡潔。
  • 運行模式多樣
    可運行在獨立的集羣模式中,或運行在Hadoop中,也可以運行在Amazon EC2等雲環境中,並且可以訪問HDFS、Cassandra、HBase、Hive等多種數據源。

缺點
Spark擁有許多有點,但不能完全代替Hadoop,而是主要替代MapReduce計算模型。在實際應用中,Spark常與Hadoop結合使用,它可以藉助YARN來實現資源調度管理,藉助HDFS實現分佈式存儲。此外,比起Hadoop,Spark對硬件要求比較高,成本也相對高一點。

2.3 Storm

Storm主要用於實時的流式數據處理。

與Spark差異
Spark是“準實時”的,它先收集一段時間的數據再進行統一處理;Storm則是“完全實時”的,來一條數據就立即處理一條數據,源源不斷地流入。

特點

  • 整合性
    Storm可方便地與消息隊列系統(如:Kafka)和數據庫進行整合。
  • 可擴展性
    Storm的並行特性使其可以運行在分佈式集羣中。
  • 簡易的API
    Storm API在使用上既簡單又方便。
  • 可靠的消息處理
    Storm保證每個消息都能完整處理。
  • 容錯性
    Storm可以自動進行故障節點的重啓,以及即誒單故障時任務的重新分配。
  • 支持多種編程語言
    Storm支持使用多種編程語言來定義任務。

3 大數據採集與預處理技術

  • 在計算機系統中,一般按照形態的不同可將數據分爲:結構化數據和非結構化數據。
    結構化數據:結構固定,每個子彈都有特定的語義和長度,可用二維表結構來邏輯表達實現,網絡安全領域常見:報警、事件日誌、運維數據等。
    非結構化數據:數據結構不規則或不完整的數據,其特點是格式非常多樣化,不方便使用二維表來表現,需要先對數據進行格式轉換或信息提取。
  • 在大數據應用中,按照應用場景計算需求的不同可將大數據分爲:靜態數據和動態數據。
    靜態數據:這些數據一般來自於不同數據源,利用ETL工具加載到數據倉庫中,一般也不會更新,技術人員可利用數據挖掘和OLAP分析工具從中發現價值。
    動態數據:也就是流式數據,是一組順序、大量、快速、連續到達的數據序列,被視爲隨時間延續而無限增長的動態數據集合。
  • 在網絡安全態勢感知的應用中,按照數據來源和特點可分爲四類:環境業務數據、網絡層面數據、主機層面數據和告警數據。
    環境業務數據:主要包括被感知環境中的各類資產和屬性。
    網絡層面數據:主要包括包捕獲數據、會話或流數據、包字符串數據。
    主機層面數據:主要包括各種系統、應用產生的日誌數據等。
    告警數據:通常來自IDS、防火牆等安全設備或如軟件的報警信息。

3.1 傳感器

傳感器(Sensor),俗稱探針,以硬件和軟件的形式安裝在網絡中,用於採集和發送數據,以及監控網段內各類資產的信息,它工作在網卡的嗅探模式。

傳感器類型

  • 採集:適合輕量化部署。
  • 採集+檢測:常見、優先推薦類型。兼具採集和檢測功能是傳感器較爲有效且合理的功能設置,更安全且更有保障。對數據進行檢測後再提交給網絡安全態勢感知平臺,也方便網絡完全態勢感知平臺和安全管理員進行進一步的深度分析理解。
  • 採集+檢測+分析:適合硬件資源有限的小型組織。

3.2 網絡爬蟲

網絡爬蟲(Web Cramler),它是一種按照一定規則自動抓取萬維網信息的程序或腳本。

工作原理

  • 首先選取一部分種子URL。
  • 然後將這些URL放入待抓取URL隊列中。
  • 從待抓取URL隊列中取出待抓取的URL,解析其DNS,獲得主機IP,將URL對應的網頁下載下來,存儲到已下載網頁庫中,並將這些URL放入已抓取URL隊列。
  • 分析已抓取到的網頁內容中的其他URL,再將這些URL放入待抓取URL隊列中,進入下一個循環過程。

類型結構
通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲、深層網絡爬蟲等。

3.3 日誌收集系統

網絡安全數據中有相當一大部分是各種設備、系統和應用中所產在的日誌數據,它們往往隱藏流許多有用信息。如何將分佈在各個設備、系統和應用中所產在的日誌數據收集起來進行高效的彙總?我們會用到一些高性能的分佈式日誌收集系統,如:Flume、Apache Chuwwka等。

3.3.1 Flume

設計Flume的宗旨是向Hadoop批量導入基於事件的海量數據。Flume支持在日誌系統中定製各類數據發送方,用於收集數據,同時Flume具有對數據進行簡單處理並寫到各種數據接收方的功能,其終點通常是HDFS。

系統架構
Flume採用三層架構,分別爲Agent(代理)、Collector(收集器)、Storage(存儲器),每一層都可以水平擴展。在這三個層次中,Agent和Collector均由Master統一管理,並且Master可以有多個,能有效避免單點故障。

工作原理
Flume由一組以分佈式拓撲結構相互連接的代理所組成的。Flueme代理是由持續運行的Source(數據來源)、Sink(數據目標)和Channel(連接數據來源和數據目標的渠道)所構成的Java進程。使用Flume的主要工作就是通過配置代理使得各個組件連接在一起。

3.4 數據抽取工具

一款專門用於數據抽取的工具:Sqoop。

簡介
Sqoop是SQL-to-Hadoop的縮寫,它也是Hadoop生態系統中的一員,主要用於Hadoop和關係型數據庫之間交換數據。

工作原理
導入:它通過一個MapReduce作業從數據庫中導入一個表,這個作業從表中抽取一行行記錄,然後將記錄寫入HDFS中。在向HDFS導入數據時,最重要的是確保訪問的數據源是一致的,保持一致性最好的方法就是在導入時不允許運行任何對錶中現有數據進行更新的進程。
導出:Saoop會根據數據庫連接字符串來選擇一個導出方法,會根據目標表的定義生成一個Java類(這個類能從文本中解析出記錄並且能夠向表中插入類型適合的值),然後去啓動一個MapReduce作業,從HDFS中讀取源數據文件,使用生成的類解析出記錄,並執行選定的導出方法。

3.5 分佈式消息隊列系統

3.5.1 Kafka

Kafka是LinkedIn開源的分佈式消息隊列系統,具有極高的吞吐量和較強的擴展性和高可用性,主要用於處理活躍的流式數據。
Kafka可以起到兩個作用:降低系統組網複雜度、降低編程複雜度。

整體架構
Kafka的整體架構非常簡單,是顯式的分佈式架構,主要涉及三個角色:

  • 消息生產者(Producer)
  • 代理服務器(Broker)
  • 消息消費者(Consumer)

消息發送流程

Partition(分區):它是Topic物理上的分組,一個Topic可以分爲多個Partition,每個Partition是一個有序、可持續添加的隊列,Partition中每個消息都會被分配一個有序的序列號ID,稱之爲offset(偏移量),在每個Partition中此offset都是唯一的。
Kafka消息發送的流程大致爲:Producer根據指定的分區方法,將消息發佈到指定的topic的Partition中;Kafka集羣接收到Producer發過來的消息後,將其持久化到硬盤,並保留消息指定時長(可配置),而不關注消息是否被消費;Consumer從Kafka集羣裏pull數據,並控制獲取消息的offset。

特點

  • 同時爲發佈和訂閱提供高吞吐量
    據瞭解,Kafka每秒可以生產25萬條消息(50MB),每秒處理55萬條消息(110MB)。
  • 可進行持久化操作
    將消息持久化到磁盤,因此可用於批量消費,如ETL等。通過將數據持久化到硬盤以及實現多副本,從而防止數據丟失。
  • 分佈式系統,易於向外擴展,可以與ZooKeeper結合
    所有的Producer、Broker和Consumer都會有多個,均爲分佈式的,無需停機即可擴展機器。
  • 消息被處理的狀態是在Consumer端維護
    當失敗時能自動平衡。
  • 支持在線應用和離線應用的場景

應用場景

  • 消息隊列
    比起大多數傳統的消息系統,如ActiveMQ、RabbitMQ,Kafka有更好的吞吐量、內置的分區、冗餘及容錯性。
  • 行爲跟蹤
    可用於跟蹤用戶瀏覽頁面、搜索及其他行爲,以發佈-訂閱模式實時地記錄到對應的Topic中。
  • 日誌收集
    Kafka也能進行日誌收集或者說日誌聚合,其特別之處在於Kafka會忽略文件的細節,將其更清晰地抽象成一個個日誌或者事件的消息流,這就讓Kafka處理延遲更低,更容易支持多數據源和分佈式數據處理,在提供同樣高效的性能同時也具有更高的耐用性。
  • 數據監控和交換
    可作爲操作記錄的監控模塊來使用,即彙集和記錄一些操作信息。
  • 流處理
    最爲廣泛的應用場景,通過收集並保存流式數據,提供之後與之對接的Storm或其他流式計算框架來進行處理。
  • 持久性日誌
    Kafka可以爲一種外部的持久性日誌的分佈式系統提供服務。這種日誌可以在節點間備份數據,並未故障節點數據恢復提供一種重新同步的機制,Kafka的日誌壓縮功能爲這種用法提供來條件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章