位置:首页 > 新闻资讯 > 关于优化IDS入侵检测系统告警误报的措施

关于优化IDS入侵检测系统告警误报的措施

时间:2025-07-18  |  作者:  |  阅读:0

由于网络环境的复杂性和数据的海量性,多数安全产品都面临着误报率较高的问题,这些不可避免的误报不仅会消耗一定的资源和时间进行处理,还会降低安全分析人员对告警的铭感度,分散其处理真正安全威胁的精力。

关于优化IDS入侵检测系统告警误报的措施_wishdown.com

背景

由于网络环境的复杂性和数据的海量性,多数安全产品都面临着误报率较高的问题,这些不可避免的误报不仅会消耗一定的资源和时间进行处理,还会降低安全分析人员对告警的铭感度,分散其处理真正安全威胁的精力

意义

本项目意在优化IDS入侵检测系统的算法,使其降低误报率,现提供如下标准化IDS日志数据,其中参有人工标注报错,通过对数据的挖掘训练找到其中最优的解决算法

数据分析

  • 3.其中发现srcAddress字段的分布情况差异很大,因此断定该字段是一个特别重要的特征

    关于优化IDS入侵检测系统告警误报的措施_wishdown.com

    ? ? ? ? ? ?
In [1]

!pip install catboost ##下载catboost算法模块登录后复制 ? ?

1.特征工程

对于非字符字段我们使用one-hot编码

In [?]

##categorical_features_indices = np.where(X_train.dtypes != np.float)[0] #预处理登录后复制 ? ?

2.模型训练

In [3]

# -*- coding: utf-8 -*-import pandas as pdimport numpy as npimport csvimport joblibfrom catboost import CatBoostClassifierfrom sklearn.model_selection import train_test_splitdef train_func(train_path):#请填写训练代码 #数据导入 data=pd.read_csv(train_path,encoding='utf-8') y_train = data.label data = data.fillna(0) X_train, X_validation, y_train, y_validation = train_test_split(data.iloc[:,:-1],data.iloc[:,-1], random_state=1234) #分割 categorical_features_indices = np.where(X_train.dtypes != np.float)[0] #预处理 #定义模型 model = CatBoostClassifier(iterations=807, depth = 6, cat_features = categorical_features_indices, loss_function = ”Logloss“, l2_leaf_reg = 4.0, learning_rate = 0.1501330270208967, border_count = 217, thread_count = 43, random_strength = 3.164261174069972) model.fit(X_train,y_train)#训练模型 #导出模型 joblib.dump(filename='my_model.kpl',value=model) joblib.dump(filename='..predict_codemy_model.kpl',value=model) passif __name__ == '__main__': train_path = '/home/aistudio/data/train.csv' train_func(train_path)登录后复制 ? ?

3. 特征重要性

通过查看特征重要性我们发现单一数据对于结果的影响?

关于优化IDS入侵检测系统告警误报的措施_wishdown.com

? ? ? ?

模型验证:将训练集以0.75:0.25的比例划分为训练集和验证集,在验证集上的F1分数为:0.9925

4. 模型预测

In [6]

# -*- coding: utf-8 -*-import numpy as npimport pandas as pdimport joblibdef test_func(test_path,save_path):# 请填写测试代码 test = pd.read_csv(test_path,encoding='utf-8') # 选手不得改变格式,测试代码跑不通分数以零算 test = test.fillna(0) model = joblib.load(filename=”/home/aistudio/my_model.kpl“) x=test t=model.predict(x) # #####选手填写测试集处理逻辑,在指定文件夹下生成可提交的csv文件 data_df = pd.DataFrame(t) submission = test[['eventId']] submission['label'] = data_df submission.to_csv(save_path + 'DKsec_ad_submission_1030.csv',index = False,encoding='utf-8') # demo#if __name__ == '__main__': test_path = '/home/aistudio/data/test_1.csv' sava_path = '/home/aistudio/result/' test_func(test_path,sava_path)登录后复制 ? ?

福利游戏

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多