亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的機器學(xué)習(xí)入侵檢測的研究

        2019-08-07 06:01:14龍華秋
        關(guān)鍵詞:檢測模型

        ◆孟 平 龍華秋

        (五邑大學(xué)智能制造學(xué)部 廣東 529020)

        如今互聯(lián)網(wǎng)的發(fā)展速度和規(guī)模的擴張十分迅猛,IT技術(shù)、硬件產(chǎn)品和軟件產(chǎn)品的迭代更新非常迅速。互聯(lián)網(wǎng)+的時代,如此迅速的發(fā)展給我們的生活帶來了巨大的便利,同時也帶來了眾多的安全隱患。在大多數(shù)人眼中,互聯(lián)網(wǎng)上的安全問題,大多都是數(shù)據(jù)泄露,以及其他相關(guān)問題,這些問題影響的大多都是企業(yè),造成的損失也基本是經(jīng)濟上的損失。然而近年來發(fā)生的多起工業(yè)控制系統(tǒng)相關(guān)的安全問題,充分證明了攻擊者完全可以通過互聯(lián)網(wǎng)威脅到人們的現(xiàn)實生活,比如近期國外發(fā)生的工控系統(tǒng)入侵事件導(dǎo)致的他國全國范圍大部分地區(qū)停電的事件。當(dāng)下互聯(lián)網(wǎng)的安全問題,已經(jīng)被國家高中重視,網(wǎng)絡(luò)安全事關(guān)國家安全。

        利用機器學(xué)習(xí)中的監(jiān)督學(xué)習(xí)相關(guān)算法訓(xùn)練好的模型,在實際中應(yīng)用時,可以快速對一個新提取的樣本做判斷,判斷其是否惡意。比以往通過特征碼等其他判斷方式,少了查詢“特征碼集合”和比對的操作,其判斷速度上要遠(yuǎn)快于傳統(tǒng)方式。良好的訓(xùn)練集和合適的算法及相應(yīng)的參數(shù),可使訓(xùn)練出來的模型具有很好的泛化性能。

        1 系統(tǒng)設(shè)計

        計算機網(wǎng)絡(luò)具有多層協(xié)議,在其七層模型(物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層)中,物理層和數(shù)據(jù)鏈路層太過底層,會話層、表示層和應(yīng)用層涉及的協(xié)議眾多不適合作為用于進行判斷其是否惡意的基礎(chǔ)。在網(wǎng)絡(luò)層上可以開始不考慮具體的數(shù)據(jù)傳輸?shù)膶崿F(xiàn),而傳輸層TCP和UDP協(xié)議是上層協(xié)議的基礎(chǔ)且僅為實現(xiàn)連續(xù)和離散的傳輸方式。因此在本次研究中,判斷流量是否惡意便是基于網(wǎng)絡(luò)層和傳輸層的數(shù)據(jù)報文。

        在整個機器學(xué)習(xí)入侵檢測中,我們需要有“流量探針”為我們捕獲流量,而捕獲的數(shù)據(jù)報文要經(jīng)過“特征提取”,提取的特征會組成一個“樣本”,樣本將會是我們直接用于訓(xùn)練模型和模型判斷的目標(biāo)。在本次研究中,由于服務(wù)器性能等問題,為了方便,我們直接使用KDD 99 比賽中提供的五百萬現(xiàn)成的樣本,作為訓(xùn)練模型和模型評估的數(shù)據(jù)集合。在整個系統(tǒng)中將分為三個部分:模型訓(xùn)練、樣本采集和模型判斷。

        圖1為系統(tǒng)流程圖。

        2 具體實現(xiàn)

        如流程圖中所示,整個系統(tǒng)中有三個部分相對獨立:模型訓(xùn)練、檢測判斷、樣本采集。本系統(tǒng)涉及機器學(xué)習(xí)的內(nèi)容,要保證模型訓(xùn)練、樣本采集和檢測判斷的部分的最終樣本的維度特征的一致性,才能保證模型的使用。因本課題中,對樣本的判斷可以看作是分類,即是否具有攻擊性和可能的攻擊類別,因此在機器學(xué)習(xí)模型算法的選擇上,我們將選擇分類器相關(guān)的算法。

        圖1 系統(tǒng)流程圖

        以下將對模型訓(xùn)練階段的內(nèi)容進行講解:

        2.1 機器學(xué)習(xí)算法—邏輯斯諦回歸

        在本次研究課題中,我們采用的是機器學(xué)習(xí)中監(jiān)督學(xué)習(xí)的邏輯斯諦回歸算法(Logistic Regression)。需要注意的是,邏輯斯諦回歸算法并不是回歸模型相關(guān)的算法,而是用于分類的分類器算法。

        2.1.1 算法原理

        邏輯斯蒂回歸(Logistic Regression),是一種分類算法,其算法原理如下:

        不同類的x對應(yīng)z的值為0或者1,單位階躍函數(shù)由于函數(shù)性質(zhì)不可導(dǎo)不連續(xù),所以引入sigmoid函數(shù):

        圖2函數(shù)圖

        所以令:

        得到:

        化成對數(shù)形式:

        y/(1-y) 代表了樣本作為正例的可能性,1-y是反例。

        所以y=概率p(y=1|x)

        1-y=概率p(y=0|x)

        所以上式又可化為:

        解得:

        將這2個等式化成一個等式:

        對上式連乘,然后取對數(shù),進行極大似然估計:

        最大化上式相等于最小化:

        這是一個凸函數(shù),可以使用梯度下降或者牛頓迭代(割線法)來求最優(yōu)解。

        梯度下降的迭代式為:

        因為要往增高的方向,所以是+號,代表梯度的正方向。

        2.1.2 邏輯斯蒂回歸——多分類擴展

        邏輯斯蒂回歸是二分類器,本系統(tǒng)是多分類器,所以采用OVR的方式將二分類器的方式擴展到多分類器,OVR訓(xùn)練多個分類器,每一個分類器將某一類別的視為正樣本,其他視為負(fù)樣本,訓(xùn)練出n個后,然后輸出每個樣本對應(yīng)每個類別的概率,取最大的概率作為最終的輸出結(jié)果。

        2.2 特征工程

        為了方便,我們在模型訓(xùn)練階段直接使用了KDD 99比賽的數(shù)據(jù)集,以縮減前期數(shù)據(jù)采集的時間。該數(shù)據(jù)集采集自美國軍方網(wǎng)絡(luò),其樣本的特征基于計算機網(wǎng)絡(luò)的網(wǎng)絡(luò)層和傳輸層的,但在其提供的特征上做了適當(dāng)?shù)倪x擇和特征的向量化,使其更加適用于本課題的研究。

        具體特征內(nèi)容如下:

        (1)duration:TCP以3次握手建立到FIN/ACK連接結(jié)束為止的時間;

        (2)protocol type:協(xié)議類型;

        (3)Service:網(wǎng)絡(luò)服務(wù)類型;

        (4)flag:連接正?;蝈e誤;

        (5)src_bytes:源主機到目標(biāo)主機數(shù)據(jù)字節(jié)數(shù);

        (6)dst_bytes:目標(biāo)主機到源主機數(shù)據(jù)字節(jié)數(shù);

        (7)land:若連接來自或送達同一個主機則為1,否則為0;

        (8)wrong_fragment:錯誤分段數(shù)量;

        (9)urgent:加急包個數(shù);

        (10)count:與當(dāng)前連接具有相同的目標(biāo)主機的連接數(shù);

        (11)srv_count:與當(dāng)前連接具有相同服務(wù)的連接數(shù);

        (12)serror_rate:在與當(dāng)前連接具有相同目標(biāo)主機的連接中,出現(xiàn)“SYN”錯誤的連接的百分比;

        (13)srv_serror_rate:在與當(dāng)前連接具有相同服務(wù)的連接中,出現(xiàn)“SYN”錯誤的連接的百分比;

        (14)rerror_rate:在與當(dāng)前連接具有相同目標(biāo)主機的連接中,出現(xiàn)“REJ”錯誤的連接的百分比;

        (15)srv_rerror_rate:在與當(dāng)前連接具有相同服務(wù)的連接中,出現(xiàn)“REJ”錯誤的連接的百分比;

        (16)same_srv_rate:在與當(dāng)前連接具有相同目標(biāo)主機的連接中,與當(dāng)前連接具有相同服務(wù)的連接的百分比;

        (17)diff_srv_rate:在與當(dāng)前連接具有相同目標(biāo)主機的連接中,與當(dāng)前連接具有不同服務(wù)的連接的百分比;

        (18)srv_diff_host_rate:在與當(dāng)前連接具有相同服務(wù)的連接中,與當(dāng)前連接具有不同目標(biāo)主機的連接的百分比;

        (19)dst_host_count:與當(dāng)前連接具有相同目標(biāo)主機的連接數(shù);

        (20)dst_host_srv_count:與當(dāng)前連接具有相同目標(biāo)主機相同服務(wù)的連接數(shù);

        (21)dst_host_same_srv_rate:與當(dāng)前連接具有相同目標(biāo)主機相同服務(wù)的連接所占的百分比;

        (22)dst_host_diff_srv_rate:與當(dāng)前連接具有相同目標(biāo)主機不同服務(wù)的連接所占的百分比;

        (23)dst_host_same_src_port_rate:與當(dāng)前連接具有相同目標(biāo)主機相同源端口的連接所占的百分比;

        (24)dst_host_srv_diff_host_rate:與當(dāng)前連接具有相同目標(biāo)主機相同服務(wù)的連接中,與當(dāng)前連接具有不同源主機的連接所占的百分比;

        (25)dst_host_serror_rate:與當(dāng)前連接具有相同目標(biāo)主機的連接中,出現(xiàn)SYN錯誤的連接所占的百分比;

        (26)dst_host_srv_serror_rate:與當(dāng)前連接具有相同目標(biāo)主機相同服務(wù)的連接中,出現(xiàn)SYN錯誤的連接所占的百分比;

        (27)dst_host_rerror_rate:與當(dāng)前連接具有相同目標(biāo)主機的連接中,出現(xiàn)REJ錯誤的連接所占的百分比;

        (28)dst_host_srv_rerror_rate:與當(dāng)前連接具有相同目標(biāo)主機相同服務(wù)的連接中,出現(xiàn)REJ錯誤的連接所占的百分比。

        2.3 模型訓(xùn)練代碼

        def ReadData(path):

        data=open(path).readlines()

        data=np.array([i.split(',') for i in data])

        data[:, -1]= [i.replace(' ', '').replace('.', '') for i in data[:, -1]]

        data_r=np.zeros(shape=data.shape)

        data_r[:,0]=[float(i) for i in data[:,0]]

        for i in range(4,40):

        data_r[:, i]= [float(j) for j in data[:, i]]

        protocol_type={k:i for i,k in enumerate(set(data[:,1]))}

        service={k:i for i,k in enumerate(set(data[:,2]))}

        flag={k:i for i,k in enumerate(set(data[:,3]))}

        label={k:i for i,k in enumerate(set(data[:,-1]))}

        print(protocol_type)

        print(service)

        print(flag)

        print(label)

        data_r[:, 1]= [protocol_type[j]for j in data[:, 1]]

        data_r[:, 2]= [service[j]for j in data[:, 2]]

        data_r[:, 3]= [flag[j]for j in data[:, 3]]

        data_r[:, -1]= [label[j]for j in data[:, -1]]

        data_r=np.c_[data_r[:,0:9],data_r[:,22:42]]

        weight={}

        for j in range(len(label)):

        weight[j]=len(data)-len([i for i in data_r if i[-1]==j])

        return data_r,weight

        def Classify(feature,weight):

        lr=LogisticRegression()

        X_train, X_test, y_train, y_test = train_test_split(feature[:,:-1],feature[:,-1], test_size = 0.3, random_state = 42)

        w=[weight[i]for i in y_train]

        d = [weight[i]for i in y_test]

        lr.fit(X_train,y_train,sample_weight=w)

        print(str(lr.score(X_test,y_test,sample_weight=d)))

        joblib.dump(lr, 'kdd99lr')

        def train():

        feature,weight=ReadData(r'kddcup.data.corrected')

        Classify(feature,weight)

        train()

        3 功能測試

        3.1 數(shù)據(jù)采集功能(見圖3)

        圖3 數(shù)據(jù)采集功能

        其中DONE表明該表明該樣本已經(jīng)過模型檢測判斷等處理。

        3.2 模型檢測

        圖4內(nèi)容為已訓(xùn)練好的模型對樣本采集器中樣本的檢測結(jié)果。

        圖4 檢測結(jié)果

        3.3 模型性能評估(見表1)

        表1 模型性能評估表

        phf 0.00 0.00 0.00 1 ipsweep 0.98 0.20 0.33 3709 smurf 1.00 1.00 1.00 842033 pod 0.00 0.00 0.00 72 rootkit 0.00 0.00 0.00 3 neptune 0.99 1.00 0.99 321807 warezmaster 0.00 0.00 0.00 5 multihop 0.00 0.00 0.00 1 nmap 0.88 0.09 0.17 733 teardrop 1.00 0.99 0.99 279 back 0.00 0.00 0.00 664 spy 0.00 0.00 0.00 1 ftp_write 0.00 0.00 0.00 4 loadmodule 0.00 0.00 0.00 3 land 0.50 0.20 0.29 10 buffer_overflow 0.00 0.00 0.00 10 warezclient 0.00 0.00 0.00 303 guess_passwd 0.00 0.00 0.00 13 portsweep 0.25 0.00 0.00 3079 Imap 0.00 0.00 0.00 1 perl 0.00 0.00 0.00 1 multihop 0.98 1.00 0.99 291976 Micro-avg 0.99 0.99 0.99 1469530 Macro-avg 0.33 0.23 0.25 1469530 Weighted-avg 0.99 0.99 0.99 1469530

        4 結(jié)束語

        本文詳細(xì)介紹了基于Python的機器學(xué)習(xí)入侵檢測系統(tǒng)的設(shè)計與實現(xiàn)。項目總共有三大功能需要實現(xiàn):模型訓(xùn)練、檢測判斷、樣本采集。在本項目中,我們直接使用KDD 99 比賽中提供的五百萬現(xiàn)成的樣本,作為訓(xùn)練模型和模型評估的數(shù)據(jù)集,使用邏輯斯蒂回歸算法對流量樣本進行訓(xùn)練,從大量的流量數(shù)據(jù)集合中找到惡意樣本。通過在實際環(huán)境進行的大量網(wǎng)絡(luò)流量測試,與流量樣本的測試,驗證了該入侵檢測系統(tǒng)的實用性。

        猜你喜歡
        檢測模型
        一半模型
        “不等式”檢測題
        “一元一次不等式”檢測題
        “一元一次不等式組”檢測題
        “幾何圖形”檢測題
        “角”檢測題
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        3D打印中的模型分割與打包
        小波變換在PCB缺陷檢測中的應(yīng)用
        91综合久久婷婷久久| 50岁熟妇大白屁股真爽| 无套内谢孕妇毛片免费看看 | 少妇特殊按摩高潮惨叫无码| 中文字幕日韩精品永久在线| 国产精品一区二区av麻豆| 国产福利酱国产一区二区| 香蕉视频免费在线| 中文字幕精品久久一区二区三区| 影音先锋久久久久av综合网成人| 亚洲处破女av日韩精品| 亚洲欧美日韩一区二区在线观看| 国产亚洲av一线观看| 一边做一边说国语对白| 国产在线精品一区二区| 亚洲乱码少妇中文字幕| 国内精品毛片av在线播放| 国产果冻豆传媒麻婆精东| 亚洲精品无码国模| 亚洲免费无毛av一区二区三区| 中文字幕日韩有码国产| 日本高清视频xxxxx| 欧美日本国产三级在线| 亚洲一区二区在线视频,| 亚洲成av人片在www鸭子| 欧洲成人午夜精品无码区久久| 亚洲电影一区二区| 国产亚洲一本二本三道| 国产超碰人人爽人人做人人添| 热99精品| 精品国产污黄网站在线观看| 无套熟女av呻吟在线观看| 无码少妇一区二区三区| 欧美成人a视频免费专区| 国产亚洲91精品色在线| 亚洲av无码久久精品狠狠爱浪潮| 国产精品爆乳在线播放| 亚洲一区二区三区18| 久久精品中文闷骚内射| 国产天堂在线观看| 青青草在线成人免费视频|