ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《Web安全之机器学习入门》笔记:第七章 7.6 朴素贝叶斯检测对Apache的DDoS攻击

2022-01-31 11:34:17  阅读:217  来源: 互联网

标签:Web dst rate DDoS 7.6 srv line x1 append


一、DDoS攻击

        拒绝服务攻击是 Denial of service的简称,即拒绝服务,任何对服务的干涉,使得其可用性降低或者失去可用性均称为拒绝服务。DDos是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布的、协同的大规模攻击方式。

        单一的DoS攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。

        分布式拒绝服务(Distributed Denial of Service,简称DDoS)将多台计算机联合起来作为攻击平台,通过远程连接利用恶意程序,对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。

二、数据集

        数据集选择KDD99,构造数据集从中提取出满足http协议的数据,对于类型为apache2的标记为1,对于类型为normal的标记为0。

def load_kdd99(filename):
    x=[]
    with open(filename) as f:
        for line in f:
            line=line.strip('\n')
            line=line.split(',')
            x.append(line)
    return x

def get_apache2andNormal(x):
    v=[]
    w=[]
    y=[]
    for x1 in x:
        if ( x1[41] in ['apache2.','normal.'] ) and ( x1[2] == 'http' ):
            if x1[41] == 'apache2.':
                y.append(1)
            else:
                y.append(0)

三、特征处理

        其中与DDoS相关特征如下所示

        (1)网络连接基本特征:包括duration, src_bytes, dst_bytes, land, wrong_fragment,urgent

       (2)基于时间的网络流量统计特征:包括count, srv_count, serror_rate, srv_serror_rate, rerror_rate, srv_rerror_rate, same_srv_rate, deff_srv_rate, rv_diff_host_rate

   (3)基于主机的网络流量统计:包括dst_host_count, dst_houst_srv_count, dst_host_same_srv_rate, dst_host_diff_srv_rate, dst_host_same_src_port_rate, dst_host_srv_diff_host_rate, dst_host_serror_rate, dst_host_srv_serror_rate, dst_host_rerror_rate, dst_host_srv_rerror_rate

        如下所示,代码选取第0,4-8,22-30,31-40为特征4

def get_apache2andNormal(x):
    v=[]
    w=[]
    y=[]
    for x1 in x:
        if ( x1[41] in ['apache2.','normal.'] ) and ( x1[2] == 'http' ):
            if x1[41] == 'apache2.':
                y.append(1)
            else:
                y.append(0)

            x1 = [x1[0]] + x1[4:8]+x1[22:30]+x1[31:40]
            #x1 = x1[4:8]
            v.append(x1)

    for x1 in v :
        v1=[]
        for x2 in x1:
            v1.append(float(x2))
        w.append(v1)
    return w,y

 四、完整代码

        基于python3的代码如下所示:

# -*- coding:utf-8 -*-

from sklearn import model_selection
from sklearn.naive_bayes import GaussianNB


def load_kdd99(filename):
    x=[]
    with open(filename) as f:
        for line in f:
            line=line.strip('\n')
            line=line.split(',')
            x.append(line)
    return x

def get_apache2andNormal(x):
    v=[]
    w=[]
    y=[]
    for x1 in x:
        if ( x1[41] in ['apache2.','normal.'] ) and ( x1[2] == 'http' ):
            if x1[41] == 'apache2.':
                y.append(1)
            else:
                y.append(0)

            x1 = [x1[0]] + x1[4:8]+x1[22:30]+x1[31:40]
            #x1 = x1[4:8]
            v.append(x1)

    for x1 in v :
        v1=[]
        for x2 in x1:
            v1.append(float(x2))
        w.append(v1)
    return w,y

if __name__ == '__main__':
    v=load_kdd99("../data/kddcup99/corrected")
    x,y=get_apache2andNormal(v)
    clf = GaussianNB()
    print(model_selection.cross_val_score(clf, x, y, n_jobs=1, cv=10))




五、运行结果

[0.99925094 0.99875156 0.99950062 0.99950062 0.996004   0.9995005
 0.997003   0.98975768 0.99975019 0.99925056]

 

标签:Web,dst,rate,DDoS,7.6,srv,line,x1,append
来源: https://blog.csdn.net/mooyuan/article/details/122758574

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有