开篇:润墨网以专业的文秘视角,为您筛选了一篇基于抗体浓度的实时网络风险控制系统的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:
系统采用人工免疫理论,通过对传统入侵检测系统Snort的实时检测结果进行分析,根据抗体浓度随网络入侵强度动态变化的特点,计算出当前网络风险值,反映出当前网络所面临的各类攻击和整体风险状况;Snort依赖规则匹配对数据包进行检测,由于检测过程未考虑当前的网络风险状况,对所有的匹配都发出报警,存在误报率过高的问题,系统针对不同攻击的危险程度设定报警阈值和丢包阈值,降低Snort的误报率;并根据风险值大小,采取通过、报警、丢包阻断等响应措施。实验表明,该系统能够准确计算出主机和网络所面临的实时风险,降低Snort误报率,并能根据风险值大小制定有效的响应措施。
关键词:抗体浓度; 风险控制; 人工免疫; Snort; 网络安全风险值
0 引言
随着计算机网络技术的飞速发展,以网络攻击为代表的网络安全问题也日趋严重。为了确保整个网络的安全,就必须对整个网络进行网络风险控制,网络风险控制是指对整个网络进行风险评估,并根据评估结果采取有效的控制策略。因此,风险控制的核心就是风险评估,风险评估的基本目的就是将网络风险控制在可以接受的范围之内[1]。目前国内外主要的风险评估方法有网络安全形势自意识模型(Network Security Awareness Model, NSAM)[2]、随机Petri 网和攻击树方法结合模型[3]、模糊风险分析[4]、遗传模糊分类和数据挖掘网络分析[5]、贝叶斯网络分析[6]、支持向量机模型(Support Vector Machine, SVM)[7-8]、基于攻击图的评估模型[9-10]、云模型[11]和粗糙集模型[12]等。但以上方法都存在着一个共同的缺点,那就是不能实时定量地反映出当前网络的安全状况。近年来,人们根据生物免疫系统的运行机制提出了计算机免疫系统[13],并在此基础上提出了一种基于免疫的网络安全风险检测模型[14]。
本文实现的网络风险控制系统是以开源入侵检测系统Snort为基础,采用人工免疫理论,根据抗体浓度随网络入侵情况实时变化这一特点,以抗体浓度为基础计算出网络风险值(risk),实时定量地反映出当前网络的风险状况。与此同时,对每一类攻击都设置报警阈值(pass)和丢包阈值(drop),依据计算获得的当前网络系统的风险值对Snort检测到的数据包采取有针对性的动作,若风险值小于报警阈值,则数据包直接通过;若风险值介于报警阈值和丢包阈值之间则通过并报警;若风险值大于丢包阈值则把数据包丢弃,并且报警。这样可以确保当网络系统遭遇大规模网络攻击时,系统不会崩溃,避免造成巨大损失。
本系统需要满足以下需求:
1)准确计算出当前网络系统的风险值,实时定量地反映出网络当前所面临的风险状况;
2)将系统计算出的风险值与报警信息关联起来,从而减小入侵检测系统的报警数量,降低误报率;
3)将系统计算出的风险值与控制策略联系起来,当风险值高于阈值时,自动采取响应措施,以防止网络危害的发生。
1 系统设计
1.1 工作流程
风险控制系统的设计和开发以开源入侵检测系统Snort为基础,包括入侵检测模块、风险评估模块、风险控制模块三部分。入侵检测模块是对数据包进行抓包和规则匹配,将匹配信息通过socket传输到风险评估模块;风险评估模块根据入侵检测模块传递过来的信息计算出当前主机和网络所面临的分类攻击的风险值和整体的风险值,将计算结果输出到日志,并反馈给风险控制模块;风险控制模块将反馈的风险值与设定的阈值进行比较,根据不同风险强度,匹配相应的响应策略。风险控制系统的基本工作流程如图1所示。
图片
图1 风险控制系统工作流程
1)首先,系统从配置文件中获取信息进行初始化操作,包括:入侵检测模块初始化、共享内存的初始化、socket传输通道的初始化、风险评估模块自身需要用到的各类数据结构的初始化和风险控制模块初始化。
2)入侵检测模块从Linux内核中的ip_queue模块里面获取数据包,完成数据包的解包、预处理等操作后进行规则匹配。
3)入侵检测模块将规则匹配信息通过socket方式传递到风险评估模块。
4)风险评估模块不断获取socket传输过来的攻击信息,根据IP值修改共享内存中被攻击主机的攻击记录。
5)风险评估模块每隔固定周期去判断每个主机的每类攻击数量是否增加,根据判断结果增加或衰减浓度值,根据浓度值计算主机和网络的风险值并输出到日志,同时写入共享内存中,反馈给风险控制模块。
6)风险控制模块从共享内存中获得风险值、报警阈值和丢包阈值,针对不同的网络风险情况对数据包进行:直接通过(risk
1.2 详细设计
1.2.1 入侵检测模块
入侵检测模块以开源的入侵检测系统Snort为基础,Snort在上线模式(inline mode)下从Linux内核的ip_queue模块里面获取数据包,解包、预处理等操作后进行匹配规则,因此,对Snort进行如下修改:
若Snort匹配到攻击并报警,则将攻击信息用socket发送到风险评估模块,由风险评估模块解析攻击信息,并进行风险值计算,然后将计算出的网络风险值填入共享内存中,并将计算结果反馈给Snort,socket传输的攻击信息如下:
程序前
typedef struct_Regpkt
{
struct in_addr ip_dst;//被攻击主机的IP地址
u_int32_t classification;//受到的攻击类别
}Regpkt;
程序后
1.2.2 风险评估模块
风险评估模块主要是对当前系统面临攻击时的安全风险进行定量评估,据此得到主机和网络当前所面临攻击的类别、风险值等信息。
风险评估主要步骤如下:
1)系统初始化时,将系统的配置文件、用来存储浓度及风险值的数据结构初始化到共享内存中。其中,配置文件中包含了网络拓扑信息、主机的默认权重值、各类攻击的默认权重值等。
2)对入侵检测模块发送过来的信息进行提取。然后,根据提取到的信息,修改数据存储结构中与这些信息匹配的某个主机节点的某类攻击的计数器。
3)等待指定的周期进行刷新(刷新周期可根据硬件性能自行设置,刷新周期越短,风险评估结果越准确,本次实验0.1s),从共享内存中读取各个主机节点的各类攻击的计数器的值,若计数器的值发生变化,则这个主机遭受的这类攻击的抗体浓度值增加;若未发生变化,则这个主机遭受的这类攻击的抗体浓度值衰减;再根据浓度值计算出风险值;最后将计算完成的所有浓度值和风险值写入共享内存中。
4)读取共享内存中的网络节点和主机节点的风险值,然后将网络整体风险值、网络分类攻击风险值、主机整体风险值、主机分类攻击风险值分别输出到相对应的磁盘日志文件中,同时反馈给风险控制模块。
风险评估模块的规则匹配数据存储结构如图2所示。
本系统所采用的抗体浓度与风险值计算方法源自参考文献[15-16]。计算过程用到的主要公式如下,其中:pa为抗体浓度值,s抗体浓度的衰减步长,λ为抗体浓度的衰减周期,η1为初始的抗体浓度数值,η2为奖励因子,μi表示第i类攻击的危险性权重,对于主机m,ωm为主机资产权重。
当匹配到攻击时,抗体浓度增加,如式(1)所示:
1.2.3 风险控制模块
风险控制模块主要功能是将风险评估模块反馈的当前网络风险值与报警阈值和丢包阈值进行比较,根据判断结果采取通过、报警或丢包阻断等响应措施。
因此,需要修改Snort的匹配处理函数,匹配到攻击后,进入的风险判断过程,根据网络风险值大小与报警阈值和丢包阈值的比较结果,对检测到的数据包采取直接通过、通过并报警、丢包阻断并报警三种不同的处理。风险评估模块反馈的数据信息如下:
2 实验
为验证本文实现的基于抗体浓度的实时风险控制系统的有效性,搭建如图3所示的实验环境。