使用机器学习算法构建入侵检测系统

问题陈述

我们的任务是构建一个网络入侵检测器,即一个能够区分“坏”连接(被称为入侵或攻击)和“好”的正常连接的预测模型。

入侵检测系统(IDS) 是一种软件应用程序,它使用各种机器学习算法来检测网络入侵。IDS 监控网络或系统的恶意活动,并保护计算机网络免受用户(包括可能的内部人员)的未授权访问。入侵检测器的学习任务是构建一个预测模型(即分类器),能够区分“坏连接”(入侵/攻击)和“好(正常)连接”。攻击主要分为四类:

  • #DOS:拒绝服务攻击,例如 SYN 洪水。
  • #R2L:来自远程机器的未授权访问,例如猜测密码。
  • #U2R:对本地超级用户权限的未授权访问,例如各种“缓冲区溢出”攻击。
  • #Probing:监视和其他探测,例如端口扫描。

您可以从 Kaggle 下载本项目使用的数据集(数据集名称为 Intrusion Detection System Using Machine Learning)。

数据集描述: 数据文件:

  • kddcup.names:特征列表。
  • kddcup.data10percent:数据集的 10% 子集。
  • trainingattacktypes:入侵类型列表。

特征:

特征名称

描述

类型 —

— duration

连接的持续时间(秒数)

连续型 protocol_type

协议类型,例如 TCP、UDP 等

离散型 service

目标上的网络服务,例如 HTTP、telnet 等

离散型 src_bytes

从源到目标的数据字节数

连续型 dst_bytes

从目标到源的数据字节数

连续型 flag

连接的正常或错误状态

离散型 land

如果连接来自/去往同一主机/端口则为 1;否则为 0

离散型 wrong_fragment

“错误”分片数量

连续型 urgent

紧急包的数量

连续型

表 1:单个 TCP 连接的基本特征。

特征名称

描述

类型 —

— hot

“热”指标的数量

连续型 numfailedlogins

尝试登录失败的次数

连续型 logged_in

如果成功登录则为 1;否则为 0

离散型 num_compromised

“受损”状况的数量

连续型 root_shell

如果获得了 root shell 则为 1;否则为 0

离散型 su_attempted

如果尝试了“su root”命令则为 1;否则为 0

离散型 num_root

“root” 访问次数

连续型 numfilecreations

文件创建操作的数量

连续型 num_shells

shell 提示符的数量

连续型 numaccessfiles

访问控制文件的操作数量

连续型 numoutboundcmds

ftp 会话中的出站命令数

连续型 ishotlogin

如果登录属于“热”列表则为 1;否则为 0

离散型 isguestlogin

如果登录是“访客”登录则为 1;否则为 0

离散型

表 2:领域知识建议的连接内的内容特征。

特征名称

描述

类型 —

— count

过去两秒内与当前连接相同主机的连接数

连续型

注意:以下特征是指这些同主机的连接。

serror_rate

具有“SYN”错误的连接百分比

连续型 rerror_rate

具有“REJ”错误的连接百分比

连续型 samesrvrate

连接到同一服务的连接百分比

连续型 diffsrvrate

连接到不同服务的连接百分比

连续型 srv_count

过去两秒内与当前连接相同服务的连接数

连续型

注意:以下特征是指这些同服务的连接。

srvserrorrate

具有“SYN”错误的连接百分比

连续型 srvrerrorrate

具有“REJ”错误的连接百分比

连续型 srvdiffhost_rate

连接到不同主机的连接百分比

连续型

表 3:使用两秒时间窗口计算的流量特征。

应用的各种算法: 高斯朴素贝叶斯、决策树、随机森林、支持向量机、逻辑回归。
使用的方法: 我们在 KDD 数据集上应用了上述提到的各种分类算法,并比较它们的结果以构建一个预测模型。

步骤 1:导入和设置数据

代码:导入库和读取特征列表。

Python


import os

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

import time

from sklearn.modelselection import traintest_split

from sklearn.preprocessing import MinMaxScaler

from sklearn.naive_bayes import GaussianNB

from sklearn.tree import Decis

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/39732.html
点赞
0.00 平均评分 (0% 分数) - 0