自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

機(jī)器學(xué)習(xí)算法在IDS中的應(yīng)用

譯文
人工智能 機(jī)器學(xué)習(xí) 算法
我們需要使用可修改、可重復(fù)且可擴(kuò)展的數(shù)據(jù)集來應(yīng)對(duì)和處置復(fù)雜的攻擊者,本文向您介紹幾種可用于IDS中的機(jī)器學(xué)習(xí)算法。

[[267184]]

【51CTO.com快譯】得益于近年來機(jī)器學(xué)習(xí)技術(shù)的飛速發(fā)展,人們正在將各種自動(dòng)化且具有擴(kuò)容預(yù)測(cè)能力的技術(shù),運(yùn)用到網(wǎng)絡(luò)安全系統(tǒng)的加固上。

眾所周知,網(wǎng)絡(luò)安全的最常見風(fēng)險(xiǎn)來自入侵,其中包括:蠻力破解、拒絕服務(wù)、網(wǎng)絡(luò)滲透等方面。而現(xiàn)如今,隨著網(wǎng)絡(luò)行為模式的改變,業(yè)界普遍認(rèn)為單憑靜態(tài)數(shù)據(jù)集的策略,是無法捕獲流量的具體組成、并予以攔截的。因此我們有必要采用一種動(dòng)態(tài)的方式,來檢測(cè)和防御各種入侵。

也就是說:我們需要可修改的、可重復(fù)且可擴(kuò)展的數(shù)據(jù)集,來學(xué)習(xí)和處理那些能夠輕松繞過傳統(tǒng)入侵檢測(cè)系統(tǒng)(IDS)的復(fù)雜攻擊源。下面,讓我們一起討論機(jī)器學(xué)習(xí)如何能夠在入侵檢測(cè)中發(fā)揮作用,以構(gòu)建出更為強(qiáng)大與健壯的IDS。

與IDS相關(guān)的機(jī)器學(xué)習(xí)相關(guān)概念

在機(jī)器學(xué)習(xí)的各種算法中,無監(jiān)督(Unsupervised)式學(xué)習(xí)算法可以從網(wǎng)絡(luò)中“學(xué)到”各種典型的模式,并且能夠在沒有任何已標(biāo)記數(shù)據(jù)集的情況下,報(bào)告異常情況。雖然它可以檢測(cè)出各種新型的入侵,但是很容易出現(xiàn)誤報(bào)(false positive alarms)的情況。因此,我們?cè)诖酥挥懻摕o監(jiān)督式的K-均值聚類算法。另外,為了減少誤報(bào),我們可以引入已標(biāo)記的數(shù)據(jù)集,并建立監(jiān)督式機(jī)器學(xué)習(xí)模型,進(jìn)而訓(xùn)練出網(wǎng)絡(luò)中正常數(shù)據(jù)包與攻擊流量之間的特征差異。此類監(jiān)督式的模型能夠熟練地處置各種已知攻擊,并且能夠識(shí)別出此類攻擊的變種。因此,我們下面會(huì)討論到的標(biāo)準(zhǔn)監(jiān)督式算法包括:貝葉斯網(wǎng)絡(luò)、隨機(jī)森林、隨機(jī)樹、MLP、以及決策表。

數(shù)據(jù)集

在機(jī)器學(xué)習(xí)模型的開始階段,最重要也是最繁瑣的過程便是獲得各種可靠的數(shù)據(jù)。在此,我們使用KDD Cup 1999的數(shù)據(jù),來建立預(yù)測(cè)模型,從而區(qū)分入侵類攻擊與真正有價(jià)值的流量連接。KDD Cup 1999是一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)集,它包括了在軍事網(wǎng)絡(luò)環(huán)境中所模擬出的各種干預(yù)模型,由4898431個(gè)實(shí)例和41種屬性所組成。

它會(huì)跟蹤如下四種攻擊類型,每一個(gè)連接都會(huì)被標(biāo)記為正常、或是具有攻擊性。而且每一條連接記錄大約都是由100個(gè)字節(jié)所組成。

  • 拒絕服務(wù):denial-of-service
  • R2L:來自遠(yuǎn)程機(jī)器的未經(jīng)授權(quán)的訪問
  • U2R:來自本地root特權(quán)的未經(jīng)授權(quán)的訪問
  • 探測(cè):監(jiān)視并需要另一種檢查

如下表所示,每一種類型都包含了具體的攻擊形式,一共有21種。

KDD集合

如下表所示,我們總結(jié)出了任意一種基于TCP/IP協(xié)議的連接集的基礎(chǔ)分類特征:

數(shù)據(jù)在能夠被機(jī)器學(xué)習(xí)算法所使用之前,必須經(jīng)過被特征選擇等處理。有些元素特征很容易被發(fā)現(xiàn),而其他的特征則需要通過實(shí)驗(yàn)和測(cè)試才能被找到。當(dāng)然,由于某些特征是冗余的,而且將不同的類別予以區(qū)分可能意義不大,因此在IDS中使用數(shù)據(jù)集的所有特征并不一定能獲得最佳的性能,有時(shí)甚至?xí)黾酉到y(tǒng)的計(jì)算成本與錯(cuò)誤率。

此處,數(shù)據(jù)集的主要貢獻(xiàn)是通過引入專家建議的屬性,有助于系統(tǒng)理解不同類型的攻擊行為,包括上述提及的:檢測(cè)DoS、探測(cè)、R2L和U2R等基本特性。下表便是來自不同領(lǐng)域的知識(shí)庫(kù)所給出的內(nèi)容特征列表。

機(jī)器學(xué)習(xí)算法的簡(jiǎn)述

K-均值聚類(K-means clustering)

如前所述,K-均值聚類是一種無監(jiān)督式的學(xué)習(xí)技術(shù)。這是最簡(jiǎn)單、也是最流行的機(jī)器學(xué)習(xí)算法之一。它在數(shù)據(jù)中尋找不同的組,其中組的數(shù)量由變量K所表示。該算法基于數(shù)據(jù)集的特征,將不同的數(shù)據(jù)點(diǎn)分配給K中的一個(gè)組。基于不同的特征相似性,各個(gè)數(shù)據(jù)點(diǎn)會(huì)被采取聚類。

貝葉斯網(wǎng)絡(luò)(Bayes Network)

貝葉斯網(wǎng)絡(luò)是一種概率圖形模型。它的原理是通過繪制出有向圖形邊上的依賴關(guān)系,進(jìn)而充分利用到條件的依賴性。它假定所有沒有被邊緣所連接的節(jié)點(diǎn),都是具有條件獨(dú)立。而且它在創(chuàng)建有向無環(huán)圖時(shí),就利用到了該事實(shí)基礎(chǔ)。

隨機(jī)森林分類器(Random Forest Classifier)

隨機(jī)森林是一種集成式的分類器,它通過合并多種算法來實(shí)現(xiàn)分類。這些算法在數(shù)據(jù)的隨機(jī)子集上創(chuàng)建多個(gè)決策樹,然后通過聚合每棵樹的總票數(shù),來決定測(cè)試的類別。同時(shí),它也會(huì)給個(gè)別樹的貢獻(xiàn)程度分配權(quán)重值。

多層感知(MLP)

MLP是一種前饋式神經(jīng)網(wǎng)絡(luò)。它至少由三個(gè)層次所組成:輸入層、隱藏層和輸出層。在訓(xùn)練期間,我們可以通過調(diào)整各種權(quán)重或參數(shù),來最小化分類中的錯(cuò)誤。該算法在每個(gè)隱藏節(jié)點(diǎn)中引入了非線性(Non-linearity)。而反向傳播則是用來通過參照錯(cuò)誤,進(jìn)而調(diào)整權(quán)重與偏差。

實(shí)現(xiàn)

下面,我們將使用Python及其廣泛的庫(kù)來實(shí)現(xiàn)IDS。當(dāng)然,我們需要事先安裝好Pandas(基于Python的大型數(shù)據(jù)集分析庫(kù))、NumPy(Python的一種開源類數(shù)值計(jì)算擴(kuò)展)和Scipy(可用于數(shù)學(xué)、科學(xué)、工程領(lǐng)域的常用軟件包,常用于計(jì)算Numpy矩陣,能與Numpy協(xié)同工作)。如果您使用的是Ubuntu系統(tǒng),那么其對(duì)應(yīng)的shell命令應(yīng)該是:

  1. sudo pip install numpy scipy pandas 

首先,我們需要對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,也就是說:數(shù)據(jù)集需要被下載并提取到程序?qū)?yīng)的文件夾中。同時(shí),該數(shù)據(jù)集應(yīng)該是.csv格式,以方便Python的讀取。因此具體命令如下: 

  1. # Import pandas 
  2. import pandas as pd  
  3. # reading csv 
  4. file dataset = pd.read_csv("filename.csv"

前面提到的各種機(jī)器學(xué)習(xí)算法都應(yīng)當(dāng)被存放在“神奇”的Scipy庫(kù)中。通過以下步驟,您可以使用不同的模型,來快速運(yùn)行目標(biāo)數(shù)據(jù)集:

K-均值 

  1. import numpy as np  
  2. from sklearn.cluster  
  3. import KMeans  
  4. print(dataset.describe())  
  5. to view the summary of the dataset loaded  
  6. kmeans = KMeans(n_clusters=2)  
  7. # You want cluster the threats into 5: Normal, DOS,PROBE, R2L and U2R  
  8. kmeans.fit(X)  
  9. prediction = kmeans.predict(dataset[0])  
  10. # predicts the type for the first entry  
  11. 隨機(jī)森林 
  12. #Import Random Forest Model  
  13. from sklearn.ensemble  
  14. import RandomForestClassifier  
  15. #Create a Gaussian  
  16. Classifier clf=RandomForestClassifier(n_estimators=50)  
  17. #Train the model using the training  
  18. dataset clf.fit(dataset,dataset[:,LAST_COLUMN])  
  19. #LAST_COLUMN is the index of the column with the labelled type of threat or normal  
  20. pred=clf.predict(dataset) 

樸素貝葉斯網(wǎng)絡(luò) 

  1. from sklearn.naive_bayes  
  2. import GaussianNB  
  3. #Create a Gaussian Naive Bayes Classifier  
  4. gnb = GaussianNB()  
  5. gnb.fit(dataset,dataset[:,LAST_COLMN])  
  6. pred=predict(gnb,dataset[0]) 

多層感知 

  1. From sklearn.neural_network  
  2. import MLPClassifier  
  3. #Create a Multi-Layer Perceptron  
  4. clf = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)  
  5. clf.fit(dataset,dataset[:,LAST_COLMN])  
  6. pred=clf.predict(dataset[0]); 

結(jié)果

為了衡量機(jī)器學(xué)習(xí)模型的準(zhǔn)確性,我們會(huì)引入諸如:平均準(zhǔn)確度(Average Accuracy)、誤報(bào)率(False Positive Rates)和漏報(bào)率(False Negative Rates)等不同衡量維度的參考指標(biāo)。由于K-均值是一種無監(jiān)督式算法,因此它被排除在了該指標(biāo)之外。

如下面公式所示,平均準(zhǔn)確度定義為:被正確分類的數(shù)據(jù)點(diǎn)與數(shù)據(jù)點(diǎn)總數(shù)的比。

顯而易見,此處的“誤報(bào)”是指那些被判定為威脅,而實(shí)際上并非為如此的數(shù)據(jù)流量。同理,“漏報(bào)”是指那些確實(shí)為威脅,但未被IDS所查出并報(bào)告的流量。

另一些可以參考與度量的指標(biāo)還包括:精度和真陽性。其中:

  • 精度是指發(fā)現(xiàn)的威脅與威脅總量的比率。
  • 真陽性是指那些能夠被成功地識(shí)別為威脅包,與全部能被識(shí)別和判定的數(shù)據(jù)包的比率。

應(yīng)用的意義

從某種程度上說,當(dāng)前所有的IDS都應(yīng)該引入機(jī)器學(xué)習(xí)技術(shù),以應(yīng)對(duì)日益增加的網(wǎng)絡(luò)安全威脅。具備機(jī)器學(xué)習(xí)的IDS,能夠?qū)崿F(xiàn)細(xì)粒度、高精度的自動(dòng)化檢測(cè)。籍此,企業(yè)可以使用各種檢測(cè)結(jié)果來跟蹤攻擊源,阻止它們的進(jìn)一步滲透,并優(yōu)化自身的網(wǎng)絡(luò)。另外,用戶公司也不必再通過訂購(gòu)?fù){特征簽名,來被迫與新產(chǎn)生的攻擊進(jìn)行“時(shí)間賽跑”。當(dāng)然,在不同的應(yīng)用與檢測(cè)場(chǎng)景中,不同的機(jī)器學(xué)習(xí)算法會(huì)各有所長(zhǎng)。我們應(yīng)該根據(jù)網(wǎng)絡(luò)及用戶流量的特性,選用最適合自身環(huán)境的基于機(jī)器學(xué)習(xí)的IDS方案。

原文標(biāo)題:Evaluation of ML Algorithms for Intrusion Detection Systems,作者:Aman Juneja

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2021-07-21 11:25:17

機(jī)器學(xué)習(xí)?AI人工智能

2022-03-18 17:53:14

機(jī)器學(xué)習(xí)物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)

2022-04-18 11:36:43

機(jī)器學(xué)習(xí)制造業(yè)人工智能

2017-04-14 08:33:47

2021-04-13 09:00:00

機(jī)器學(xué)習(xí)鐵路技術(shù)

2017-09-12 16:57:43

機(jī)器學(xué)習(xí)K-means算法Python

2017-07-10 09:28:19

人工智能機(jī)器學(xué)習(xí)自動(dòng)駕駛

2020-02-27 14:47:11

人工智能機(jī)器學(xué)習(xí)故障檢測(cè)

2017-07-07 16:52:54

機(jī)器學(xué)習(xí)人工智能自動(dòng)駕駛

2017-07-10 10:05:50

機(jī)器學(xué)習(xí)自動(dòng)駕駛AI

2022-09-19 09:53:37

機(jī)器學(xué)習(xí)實(shí)踐

2020-07-13 14:50:51

機(jī)器學(xué)習(xí)模型算法

2021-10-26 14:44:28

人工智能AI深度學(xué)習(xí)

2021-07-29 09:55:40

人工智能AI深度學(xué)習(xí)

2020-08-10 11:15:07

機(jī)器學(xué)習(xí)ML人工智能

2017-07-21 10:42:27

自動(dòng)駕駛應(yīng)用機(jī)器學(xué)習(xí)

2019-11-25 14:24:24

機(jī)器學(xué)習(xí)算法數(shù)據(jù)

2022-02-21 16:05:26

機(jī)器學(xué)習(xí)優(yōu)勢(shì)Python

2022-03-02 09:11:09

機(jī)器學(xué)習(xí)網(wǎng)絡(luò)

2021-11-30 22:51:36

機(jī)器學(xué)習(xí)大數(shù)據(jù)技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)