專注于光通信行業10年,主營華為、中興等品牌光端機、SDH、PCM、OLT等光各種光傳輸、光接入、波分交換設備!
資訊頻道
聯系我們
客服QQ:442341201
微信:vipvop88888518
工作時間
周一至周五:09:00-17:30 周六至周日:10:00-16:00
聯系方式
銷售:18123938879
客服:18691888046
商務:13421390426
   打印 繁體 關閉

如何構建基于機器學習的入侵檢測系統

發布日期:2019-10-17 19:41:55 瀏覽:1187次

機器學習技術正改變著我們的世界觀并沖擊著我們日常生活的方方面面。因此機器學習在信息安全也正扮演著日益重要的角色。通過本文 peerlyst 的讀者不但能探索機器學習技術的基本原理還能進一步親手體驗如何從零開始,通過前沿技術,代碼庫和能公開獲取的數據集來構建一個真實的入侵檢測系統。我們也提供了有用的附件來幫助你更方便的選擇機器學習的算法。



機器學習模型


構建機器學習項目的必要步驟


如何評估一個機器學習模型


最有用的數據科學和機器學習代碼庫


人工神經網絡和深度學習


基于機器學習的下一代入侵檢測系統


人工智能


人工智能是讓電腦程序變得像人一樣行為的藝術。行為指像人一樣感知,學習,理解,認知。AI 技術囊括諸如計算機科學,神經學,心理學在內的多個領域。



機器學習模型


機器學習是從給定的數據和樣本中研究并創造算法。它是通向人工智能的一個特別方式。Tom M. Mitchell (一個美國計算機科學家) 將機器學習定義為"一個計算機程序是從經驗 E 學到的關于某類任務 T 和性能測量方法 P, 如果它的性能在任務 T 中, 由 P 測量, 并通過經驗 E 來改善"。在機器學習中,我們有四種主要的模型: 監督學習,半監督學習,非監督學習,強化學習。


監督學習: 如果我們有輸入輸出那他就是一個監督學習。在本示例中,我們只需要映射輸入輸出之間的函數。監督學習能被分成兩個子類: 分類算法和回歸算法。


分類算法: 輸出值是一個絕對的值。


回歸算法: 輸出值是連續的。


現在來看一些監督學習的算法:


①樸素貝葉斯: 這個分類算法基于貝葉斯原理。


Bayes_rule.png


②決策樹: 歸功于樹形結構使其能預測可能輸出值的機器學習算法。整個數據集被表示成一個根節點,樹枝末梢的葉子被稱為結果節點,分支的節點被稱為決策節點。


③支持向量機: 是用于識別多維空間中表示數據分離的超平面的二元分類器。所以,超平面不一定要是一條直線。



④半監督學習: 此模型因為包含標記的和未標記的數據所以不是完全監督。該模型一般用于提高學習準確度。


⑤非監督學習: 如果我們沒有關于輸出值的信息,那它就是非監督學習。此類模型完全由未標記的數據訓練。聚合是其最有名的非監督學習技術。


kmeansclustering-1-300x225.png


⑥強化學習: 此模型基于環境的反饋(獎勵信號)來優化。




想知道如何選擇合適的機器學習算法,你可以下載 [Machine Learning Algorithms sheet](Machine Learning Algorithms sheet)


機器學習


為了構建一個機器學習模型,我們的項目需要經歷兩個階段: 訓練和測試。在訓練階段 feature engineering operation 是必須的因為提供給模型一系列定義好的特征非常重要。不是所有的數據對我們的項目是有用的。在選擇好算法之后,我們提供他所選擇的數據集。模型訓練之后,我們需要進行測試,或將之稱為模型[安全脈搏SecPulse:www.secpulse.com]


機器學習的評估


構建一個機器學習模型是一個方法論的過程。因此為了測試我們的機器學習模型的表現我們需要使用基于科學的公式嚴格定義的指標: 所有的公式需要考慮四個方面: 誤報,正樣例,漏報,負樣例。.=



符號


tp = 正樣例


fp = 誤報


tn = 負樣例


fn = 漏報


精確率


精確率或陽性預測值, 被歸類為陽性樣本總數和被正確歸類為陽性樣本總數的比率。簡單地說是命中率。


yMu8iaR.png


召回率


召回率或真陽率即在數據集中發現正樣本數跟總的陽性樣本數的比率。它代表發現了多少正樣例被發現。


qp6FSCV.png


F-Score


f-測量的 f 評分, 是一個結合準確率和召回率的評價公式。


準確率


準確率是按樣本總數正確分類樣本總數的比率。這一指標本身是不夠的, 因為我們在有相同數量的類別時才使用它。


X5BxiJQ.png


混淆矩陣


混淆矩陣是一個表, 通常用來描述分類模型的性能。


機器學習的 Python 框架


我們使用 Python 作為編程語言有多方面的考量。首先與其他語言相比,它比 Java 和 C++ 更靈活高效。根據 thestateofai.com 的統計: 78% 的開發者使用 Python 作為他們 AI 項目的開發語言。這意味著 Python 開發社區有著更好的文檔和支持。Python 帶來外部的,便利的,先進的的機器學習的代碼包。下面是機器學習中一些最著名的 Python 代碼庫:


SciPy: 通常用于數學和工程領域。


NumPy: 用于操作大型多維數組和線性代數。


MatplotLib: 它提供了卓越的數據可視化能力包括: 混淆矩陣,Hitmaps,linear plots。


Tensorflow: 是一個由Google 的機器智能研究機構的 Google Brain 團隊開源的機器智能和數字計算代碼庫。你可以在一個或多個 cpu 和 GPU 上部署計算。


Keras: 這是一個用 Python 編寫的運行于 Tensorflow 之上的開源神經網絡代碼庫。它用以加快神經網絡模型的實驗和評估過程。


Theano: 這是一個用 Python 編寫的運行于 Tensorflow 之上的開源神經網絡代碼庫。它用以加快神經網絡模型的實驗和評估過程。(譯注:兩段原文一模一樣。)


使用 pip install 包名 來安裝任意的 Python 代碼庫。


由 Favio Vázquez 做的圖表展示了一些機器學習框架間特別是深度學習框架間的對照關系。


1_ZsVNvFsQ5iQnuVvm14sEpg-1024x542.png


等下,但什么是深度學習呢?


人工神經網絡和深度學習


人工神經網絡的主要目標是模仿人腦的工作方式。為了便于理解,讓我們探索一下人腦是實際上是如何工作的。人腦是一個令人著迷的復雜實體。它通過不等的區域來執行不同的任務諸如聽看嘗等。如果人腦是通過不同區域來執行多任務的,那么邏輯上,在不同的區域使用某種特定的算法。例如: 在用于視覺的算法,用于聽覺的算法等等,對嗎?錯了!大腦是用一個算法來運行的。這個假設被稱為"一個學習算法" 假設。這里有些證據表明人腦使用本質上相同的算法 來理解許多不同的輸入形式。獲取更多相關信息,可以去查看 Ferret 實驗。實驗中視覺部分的"輸入" 被放入人腦的聽覺部分,而聽覺部分的皮質學會了 "看"。構成神經系統的細胞被稱為神經元。人腦通過神經元樹突, 利用電化學信號進行信息傳輸和傳播。




把人腦神經元類比到機器學習中的就是感知機。所有輸入數據都被求和, 輸出應用一個激活函數。我們可以看到作為信息閘門的激活函數。


perceptron_node.png


這里有許多使用的激活函數:


Step Function: 每個輸出節點都有一個預定義的臨界值。


Sigmoid Function: 使用最廣泛的激活函數之一


Tanh Function: 另一個常用的激活函數


ReLu Function: 它也被稱作修正線性單元。如果輸出值為 x 且 x 為正數, 則輸出 x, 否則輸出 0。


activation.png


許多連接感知機建立一個簡單的神經網絡, 由三部分組成: 輸入層、隱藏層和輸出層。隱藏層在神經網絡中扮演著內部通訊的角色, 有時我們將有多層隱藏層的稱之為多層感知機網絡。如果超過3隱藏層, 那么我們談論的是深度學習和深度學習網絡。


1_dnvGC-PORSoCo7VXT3PV_A.png


根據數據科學家和深度學習專家像是機器學習從業者 Dr. Jason Brownlee 的說法: 每個深度學習模型必須經過五個步驟。


神經網絡定義: 這階段我們需要定義隱藏層數。歸功于 Keras 這階段已經變得非常簡單了因為它會將神經網絡定義成序列并且會去定義隱藏層數。我們只需創建帶有需要結果數的序列實例即可。


神經網絡編譯: 現在需要對網絡進行編譯, 包括選擇優化技術如隨機梯度下降 (sgd) 和損失函數 (用于測量擬合度),平均平方誤差 (mse)來評估模型。


神經網絡過濾:根據編譯步驟中指定的參數, 在此步驟中使用 Back-Propagation 算法。


神經網絡評估: 過濾之后,需要對模型進行評估。


預測: 最后完成模型訓練后,我們現在能使用它來預測測試數據集中新的惡意軟件樣本了。


基于機器學習的入侵檢測系統


危險的黑客總是在發明新的技術來繞過安全層并避免被偵測。所以,現在是時候想出新技術來對抗網絡威脅了。入侵檢測系統是指一系列在現代組織中在對抗入侵和惡意行為中發揮重要作用的設備或軟件。入侵檢測系統主要有兩類:


主機型入侵偵測系統: 運行于企業服務器上的。


網絡型入侵偵測系統: 通過監聽出站入站的流量來檢測網絡異常。


可以使用兩種入侵檢測技術進行檢測:


基于簽名的檢測技術: 將通信量與已知威脅的簽名數據庫進行比較 基于異常的入侵技術: 根據活動行為對流量進行分析。


diagram-what-is-idp-ips-1024x427.png


現代組織每天都面臨數以千計的威脅。這就是經典的技術不可能是一個明智的解決方案來抵御他們。許多研究人員和信息安全專家都帶著新的概念、原型或模型來嘗試解決這一嚴峻的安全問題。例如, 下圖所展示的不同的入侵檢測技術, 包括討論過的機器學習算法。


2rRGBwN.png


現在在閱讀完先前章節之后,我們已經能夠構建一個基于機器學習的入侵檢測系統。和之前討論的一樣,第一步是數據處理,F在有很多可公開獲取的數據集被數據科學家廣泛用來訓練模型。你可以從這里下載到一部分:


The ADFA Intrusion Detection Datasets: https://www.unsw.adfa.edu.au/australian-centre-for-cyber-security/cybersecurity/ADFA-IDS-Datasets/


Publicly available pcap files: http://www.netresec.com/?page=PcapFiles


The Cyber Research Center - DataSets: https://www.westpoint.edu/crc/SitePages/DataSets.aspx


The NSL-KDD dataset: https://github.com/defcom17/NSL_KDD


NSL-KDD 是在異常入侵檢測中被廣泛使用的數據集。它包含了不同的攻擊類別: DoS, Probe, U2R and R2L。


它是來自數據集 KDD99 的加強版。


The-relation-between-main-and-extracted-datasets-KDD99-is-created-from-DARPA-NSL-KDD-is.ppm_.png


在選擇了要制作的特性后, 并將數據集分成兩個子數據集用于訓練和測試,(它們不應該是相同的), 您可以選擇在入侵檢測技術示意圖中所出現的機器學習算法。檢測技術和培訓您的模型。最后, 當你完成訓練階段, 是時候測試你的模型并根據指標來檢測它的準確性。為了探索一些經過測試的模型, 我建議大家關注一下 "Shallow and Deep Networks Intrusion Detection System: A Taxonomy and Survey" 的研究論文。[安全脈搏SecPulse:www.secpulse.com]


關于機器學習或人工智能在信息安全方面的承諾, 有很多討論, 但在另一陣營有一個辯論和擔憂。要發現更多關于機器學習的承諾在網絡安全它是強烈建議觀看 Thomas Dullien 談話: "Machine Learning, offense, and the future of automation" Machine Learning, offense, and the future of automation.


總結


本文是對于機器學習在信息安全領域的概述。我們討論了每個機器學習項目中必備的基本知識。從基礎開始直至獲得能夠構建大數據項目的能力。我們還將入侵檢測系統當做一個現實案例研究。


  • 聯系我們
  • 聯系電話:0755-83462189 18123938879 18691888046
  • 聯系地址:廣東省深圳市羅湖區清水河三路博豐大廈15層
国内少妇高潮嗷嗷叫在线播放