云环境下基于入侵检测系统反馈的防火墙及其实现方法与流程

文档序号:19414122发布日期:2019-12-14 00:45阅读:322来源:国知局
云环境下基于入侵检测系统反馈的防火墙及其实现方法与流程

本发明属于云环境及防火墙技术领域,涉及云环境下基于入侵检测系统反馈的防火墙及其实现方法。



背景技术:

随着云计算的快速发展,越来越多的云计算公司开始关注云安全的重要性。作为云安全的一部分,“如何防御来自互联网的攻击”正成为热点。在讨论这个主题时,我们需要建立一个系统,通过物理网卡监控网络流量,对其进行分析,并对不同类型的网络协议进行分类。通过ids的反馈,防火墙的规则得到更新。在ids的帮助下,防火墙的有效性变得更好。云系统架构由五部分组成:消费者,云服务提供商,云代理,审计员和云运营商。我们将重点关注云服务提供商在云安全中的作用。云部署方法分为现场和非现场。现场意味着提供商和消费者在同一网络上,通常都属于同一公司。场外意味着提供者和消费者处于具有特定物理距离的不同网络中,并且消费者远程请求该服务。

虽然云计算的体系结构是多样的,但作为最基本的体系结构-基础设施层,用户通过网络连接到云服务,以实现对云服务的访问,这是云服务的主要服务模式。攻击分为多种中等方式,分为内部攻击和外部攻击。在本发明中,讨论了外部攻击。在外部攻击中,最分散的是拒绝访问攻击。由于云服务供应商(csp)通常具有较大的带宽容量,传统的分布式拒绝访问攻击方法因ddos攻击而无用。原理是使用各种系统同时向目标系统发送数据或服务请求,以了解目标系统无法响应请求甚至崩溃;从而达到了攻击的目的。但是,我们已经看到有许多其他方法可以拒绝访问位于云平台中的目标系统。

通常,云服务是构建在虚拟机上的服务。虚拟设备被虚拟化以实现多路复用的目的。云平台的本质是虚拟化物理计算资源,然后按需分配虚拟化计算资源;因此,减少了物理资源的闲置,提高了资源的利用率。基于内核的虚拟机(kvm)虚拟化底层硬件资源。例如,云平台上的所有虚拟机共享物理网络接口控制器(nic)。然后,所有云平台上的数据流量都流经物理网卡。对nic的监控可以实现对云平台中网络流量的监控。如果要实施云安全检测,可以侦听物理设备的网卡。

ids布局中的矛盾:一方面,直接检查受监控系统的状态可提供更好的可见性,增加可分析事件的范围,降低错误查看系统状态的风险,减少不受监控的攻击数量,以及高能见度使逃生变得更加困难。另一方面,增加目标系统对ids的可见性通常是以ids和攻击者之间较弱的隔离为代价的。这增加了直接攻击ids的风险。

入侵检测系统有两种,一种是基于主机的入侵检测系统(hids),另一种是网络入侵检测系统(nids)。nids是这个系统的重点,对于云架构的特性,通过物理网卡的多路复用,只需通过监听它,并分析通过它来检测攻击的网络流量。此外,为了突出防火墙的重要性,ids监控数据被分析并自动添加到防火墙的防御策略中。

在比较主要的ids架构时,这种权衡更为明显:基于网络的入侵检测系统(nids)以可见性为代价提供高攻击免疫力,基于主机的入侵检测系统(hids),提供高可见性但牺牲了攻击。基于主机的体系结构提供的出色可见性导致开发了各种有效的技术来检测攻击者的影响,从称为跟踪分析的复杂系统到完整性检查和日志文件。

hids是一种基于主机的入侵检测系统,可以作为应用程序或作为操作系统的一部分集成到其受监视的主机中,从而提供高可见性。基于主机的体系结构提供的出色可见性使得能够开发各种有效的技术来检测攻击者的影响,从复杂的系统调用跟踪分析到完整性检查和日志文件分析。nids引领基于网络的入侵检测系统的可见性,并且显着减少,无法监控内部主机状态或事件,并且必须从进出主机的网络流量中收集所有信息。有限的可见性为攻击者提供了更多操纵ids监控的空间,攻击者还可以有目的地制定网络流量,从而难以推断或推断其对主机的影响。nids的优势在于即使主机受到威胁也能保持可见性。



技术实现要素:

为解决上述问题,本发明公开了一种云环境下基于入侵检测系统反馈的防火墙及其实现方法,结合了防火墙和入侵检测系统(ids),使用入侵检测系统,可以检测icmp,tcp,udp攻击。

为了达到上述目的,本发明提供如下技术方案:

一种云环境下基于入侵检测系统反馈的防火墙,包括防火墙部分和ids部分;所述防火墙部分根据过滤规则首次过滤网络数据;所述ids部分进一步过滤通过防火墙的数据,筛选基于ids过滤规则;所述防火墙部分的过滤策略通过系统中ids部分的反馈信息更新。

进一步的,所述防火墙部分功能如下:

首先,在系统中使用包过滤防火墙,并在网络层选择数据包;选择基于系统中设置的过滤逻辑,称为访问控制表;通过检查数据流中每个数据包的源地址和目标地址,使用的端口号和协议状态或它们的组合来确定是否允许数据包通过;

在随后从ids到防火墙的反馈中,访问控制列表被更新;未检测到的数据包由ids和ids检测到的威胁数据包进行过滤;数据包的原始地址和目的地址,使用的端口号以及协议状态等信息将反馈给防火墙;防火墙将反馈信息写入过滤规则,并更改访问控制列表以实现访问控制更新的目的;

防火墙阻止攻击功能如下:

防火墙查询系统中设置的过滤逻辑,检测数据包的源ip地址,目的ip地址,端口号和协议类型,并匹配过滤逻辑;如果有匹配项,则直接丢弃;如果不匹配,则接受;

防火墙更新政策如下:

由配置文件组成,设置配置文件能够更改过滤规则;它主要与查询模块和ids通信,与查询模块通信实现过滤,并通过ids通信实现过滤规则更新。

进一步的,所述ids部分与snort开源项目一起实现,所述snort开源项目包括本地规则库和在线实时规则库;所述本地规则库根据特定的云服务类型编写,针对不同的协议规定了不同的过滤规则;所述在线规则库由snort开源项目团队维护,并更新为最新的过滤规则。

进一步的,所述ids的实现包括两个部分:snort和barnyard;所述snort负责嗅探和数据分析,所述barnyard负责存储嗅探的警告信息;所述警告信息存储在mysql中;

所述数据分析功能包括如下过程:

通过配置snort的local.rules文件为ids监控的特定云服务实现包过滤,在线规则库与最新的规则库匹配;通过实时数据流量分析和记录ip网络数据包,进行协议分析,匹配网络数据包内容,检测各种攻击模式,并对攻击进行实时告警。

ids更新规则如下:

规则更新与防火墙通信,以及时提供防火墙过滤规则的反馈,guardian实现了对防火墙过滤机制,访问控制列表更新和ip地址释放的更改。

进一步的,所述snort包括下述软件模块:

数据包嗅探模块,用于监听网络数据包并分析网络;

预处理模块,用于使用相应的插件检查原始数据包,预处理原始数据包,读取数据包信息;

检测模块,用于在从预处理器发送数据包之后,根据规则检查数据包,并且一旦发现数据匹配,就通知警报模块。

警报模块,用于在检测模块检测后,将数据输出到mysql。

进一步的,guardian运行步骤如下:

(1)guardian的执行文件guardian.pl

(2)guardian封锁ip所要调用的外部程序scripts/iptalbes_block.sh

(3)guardian解除对某一ip封锁时,调用外部程序scripts/iptalbes_unblock.sh。

本发明还提供了一种云环境下基于入侵检测系统反馈的防火墙的实现方法,包括如下步骤:

步骤一、安装阶段启用kvm虚拟机的防火墙,并初始化防火墙配置文件,在虚拟机上安装snort,并对其进行配置,包括了在线规则库的下载,以及数据库的安装配置;

添加数据库mysql;

步骤二、运行阶段,基于snort的ids将在线规则库下载到本地,并结合本地配置的local规则库进行过滤;

其中具体操作包括:

防火墙过滤后的网络数据包,通过snort的重新包装,将其包装成snort数据包,方便snort进行数据包的拆解,并利用规则来匹配数据包进行实时分析;

ids在拦截到网络威胁之后,通过将outputdatabase相关项注释掉,将日志输出设置到mysql数据库中,在mysql数据库中建立一个snort数据库,并建立一个snort用户来管理这个数据库;

步骤三、通过停止ids运行进程结束检测。

进一步的,snort的运行模式包括三种,对应不同的控制模式,具体包含:

模式1:sniffer

模式2:packetlogger

模式3:networkintrusiondetectionsystem。

sniffer模式简单地从网络上抓取数据包并在终端显示出来;packetlogger模式能把数据包保存在磁盘中;networkintrusiondetection能使snort根据用户定义的规则分析网络流量,并作出反应。

进一步的,所述ids使用模式3。

与现有技术相比,本发明具有如下优点和有益效果:

通过ids与防火墙实施联锁,攻击的防御分为两部分,防御工作自然分为两部分。防火墙部分用于粗粒度防御,ids部分用于细粒度分析分组信息,双层防御更加有效和准确,防御攻击与云服务服务器分离,不影响云服务的质量,减少云服务的响应延迟;采用基于ids的反馈改变规则,能够灵活地检测攻击。

附图说明

图1为云环境下的架构图。

图2为具体的虚拟机防火墙架构图。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

虚拟化监控的研究很多,分为两类:内部监控和外部监控,云环境下基于入侵检测系统反馈的防火墙设计,主要针对的是外部监控,阻隔外部网络对内部云平台的攻击。

由于虚拟机的隔离,内部监视是一种非透明的监视方法。内部监控涉及操作系统级别,以及需要植入的一些辅助监控模块,这些模块对受监控系统有要求。对于云平台,没有通用的方法。在部署内部监控的系统中,监控系统通常部署在管理域中,利用虚拟化技术的隔离来保证监控系统的安全性。为了达到监视目标系统的目的,将事件捕获模块植入目标系统中。监控需要监控的操作。内部监控的优点是它可以涉及特定的目标系统,并且可以使用目标系统的语义。监控过程的开销很低。缺点还在于监控系统和目标系统之间的紧密耦合,使得监控过程不透明,并且在监控部署中也不通用。另一种是外部监测,这也是本发明使用的监测方法。外部监测是一种透明的监测方法。它也是一种使用虚拟机的隔离机制。监视虚拟机外部的虚拟机内部不需要修改目标系统。以下进一步概述了在系统中部署该监视方法的方式以及一些变化。

本发明环境整体架构如图1所示,防火墙系架构如图2所示,分为两部分:一部分是防火墙部分,另一部分是ids部分。在防火墙部分,根据过滤规则首次过滤网络数据。ids部分进一步过滤通过防火墙的数据,筛选基于ids过滤规则。其中,通过系统中ids部分的反馈信息,去更新防火墙的过滤策略。

在本发明的体系结构中,防火墙的整体架构没有改变。它分为两部分:拦截攻击和安全策略更新。在拦截攻击方面,类似于传统的防火墙,根据防火墙配置文件过滤网络流量,过滤数据包,并确定数据包是否符合规则,它通过规则,如果是,则将其丢弃不匹配。

在安全策略更新部分,防火墙过滤规则是在系统的初始状态下修复的。在本发明中,与传统的防火墙过滤规则不同,它是动态变化的。通过ids的反馈,实现了更有效的过滤。

ids部分与snort开源项目一起实现,该项目包括本地规则库和在线实时规则库。

(1)本地规则库是根据特定的云服务类型编写的。针对不同的协议规定了不同的过滤规则,例如ddos的icmp协议过滤。

(2)在线规则库由snort开源项目团队维护,并更新为最新的过滤规则。

ids部分是系统的重点,它实现了攻击监控和数据反馈。ids包括snort,barnyard和mysql,其中snort实现攻击监控并通过barnyard将攻击记录存储在mysql中。

入侵检测系统是一种主动防御保护系统,最初作为传统的网络监控工具出现。随着云计算的快速发展,它被用于云服务安全领域。对于大型云服务系统,它可以监控流入云的网络流量,即使检测到异常流量以及即使发出预警也是如此。它与防火墙不同。它是一种监控设备,可实时监控流量数据并发出警报。

与一般的ids不同,在本发明中,ids结合了防火墙的防御功能。通过与防火墙的实施联锁,攻击的防御分为两部分,防御工作自然分为两部分。防火墙部分用于粗粒度防御,ids部分用于细粒度分析分组信息。ids的优势在于双层防御更加有效和准确,防御攻击与云服务服务器分离,不影响云服务的质量,减少云服务的响应延迟。

本发明中的ids基于snort,snort是优秀ids的核心,它抓取ip层上的数据进行分析,嗅探各种格式的数据包,然后根据自己的规则重新组装。虽然snort的功能并不完美,但它的优势在于它能够与许多安全组件协同工作,以实现安全监控的多种要求,另外结合数据库也可以将异常处理的结果进行持久化。

snort主要包含以下三类预处理器:

1)包重组预处理器:

2)协议规范化预处理器:

3)异常检测预处理器:

snort使用简单的规则描述语言,易于扩展且功能强大。snort规则是基于文本的,规则文件根据不同的组进行分类。例如,文件ftp.rules包含ftp攻击内容。snort的每个规则可以分为两个逻辑部分:规则头和规则体。规则头由四部分组成:规则行为,协议,源信息和目标信息。

规则体的作用是进一步分析规则头信息,并可用于确认复杂攻击。snort的规则定义中没有规则体。规则主体由几个单独的段组成,每个段定义一个选项和相应的选项值。

本系统具体架构包括:

1)防火墙

作为该系统的第一防御级别,防火墙在后续的ids过滤中起着至关重要的作用。首先,在系统中使用包过滤防火墙,并在网络层选择数据包。选择基于系统中设置的过滤逻辑,称为访问控制表(acl)。通过检查数据流中每个数据包的源地址和目标地址,使用的端口号和协议状态或它们的组合来确定是否允许数据包通过。

在随后从ids到防火墙的反馈中,访问控制列表被更新,因为防火墙无法抵御所有攻击。未检测到的数据包由ids和ids检测到的威胁数据包进行过滤。数据包的原始地址和目的地址,使用的端口号以及协议状态等信息将反馈给防火墙。防火墙将反馈信息写入过滤规则,并更改访问控制列表以实现访问控制更新的目的。

·阻止攻击

防火墙查询系统中设置的过滤逻辑,检测数据包的源ip地址,目的ip地址,端口号和协议类型,并匹配过滤逻辑。如果有匹配项,则直接丢弃;如果不匹配,则接受。

·更新政策

过滤规则是防火墙过滤的主要依据。它通常由配置文件组成。设置配置文件可以更改过滤规则。它主要与查询模块和ids通信,与查询模块通信实现过滤,并通过ids通信实现过滤规则更新。

2)入侵检测系统

ids是整个系统的重要组成部分,也是实现精确攻击防御的重要因素。此系统中的ids是基于开源项目snort构建的。在ids中,主要有两个规则库,一个是本地配置的规则库,另一个是在线规则库。本地规则库旨在适应特定的云服务,并随云服务而变化;在线规则库是实时的,与最新的攻击防范信息同步。通过这两个规则库,您可以有效抵御来自外部网络的攻击。

ids的实现主要由两个部分实现:snort和barnyard。snort负责嗅探和分析数据包。

barnyard负责存储嗅探的警告信息。在该系统中,警告信息存储在mysql中。便于分析和处理安全工作取证过程的数据和数据保护。

·数据分析

数据包主要由snort实现。通过配置snort的local.rules文件为ids监控的特定云服务实现包过滤,在线规则库与最新的规则库匹配。通过实时数据流量分析和记录ip网络数据包,进行协议分析,匹配网络数据包内容,检测各种攻击模式,并对攻击进行实时告警。

snort的体系结构如下:

①数据包嗅探模块-主要负责监听网络数据包,并根据tcp/ip协议解析数据包。

②预处理模块-该模块使用相应的插件检查原始数据包,预处理原始数据包,轻松读取数据包信息,如ip地址,端口等。具体的说,包括:1.包重组预处理器,它的作用是为了防止攻击信息被拆分到多个包中而逃避了snort的检测;2.协议编码预处理器,它的功能是把数据包协议解码成一个统一的格式,再传送给检测模块;3.协议异常检测预处器。

③检测引擎模块-该模块是snort的核心模块。当预处理器把数据包送过来后,检测引擎将这些数据包与三维链表形式的检测规则进行匹配,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块。

④报警/日志模块-检测引擎检查后将数据包传送给报警模块后,报警模块会根据规则定义(alert,log..)对其进行不同的处理(数据库,日志),将数据输出到mysql。

由于解码模块和预处理模块功能类似,都是在规则检测引擎之前对数据包的处理,所以两个模块一并介绍。解码模块主要是将从监控网络当中抓取的原始网络数据包,按照各个网络协议栈从下至上进行解码,并将解码数据保存到各个对应的数据结构当中,最后交由预处理模块进行处理。

解码后的数据包经过预处理之后才能被主探测引擎进行规则匹配。预处理器主要用来应对一些ids攻击手段。其作用包括:

(1)针对可疑行为检查包或修改包,以便探测引擎能对其正确解释。

(2)负责对流量标准化,以便探测引擎能精确匹配特征。

·更新规则

规则更新与防火墙通信,以及时提供防火墙过滤规则的反馈,从而使防火墙能够更有效地防御攻击。guardian实现了对防火墙过滤机制,访问控制列表更新和ip地址释放的更改。

·guardian

上面谈到防火墙的更新,我们是由guardian实现的,它是一个安全程序,与snort一起使用。它有更多由snort生成的警报,以及统计信息,并自动更新防火墙规则。在snort中,我们之前讨论过警报问题。guardian可以将生成警报的ip地址反馈给防火墙。更新的防火墙规则通过acl拦截来自ip的所有流量数据;此外,还有一些逻辑可以阻止重要的机器,如dns服务器,网关和任何你想要的东西。具体的运行步骤如下:

(1)guardian的执行文件guardian.pl

(2)guardian封锁ip所要调用的外部程序scripts/iptalbes_block.sh

(3)guardian解除对某一ip封锁时,所需要调用的外部程序scripts/iptalbes_unblock.sh

系统布施的具体步骤如下:

步骤一、安装阶段启用kvm虚拟机的防火墙,并初始化防火墙配置文件,包括acl等,在虚拟机上安装snort,并对其进行配置,包括了在线规则库的下载,以及数据库的安装配置。

为了进行告警信息的存储,本系统中添加了数据库mysql,也是将告警信息发布到base页面的基础。

步骤二、运行阶段,基于snort的ids会将在线规则库下载到本地,并结合本地配置的local规则库进行过滤。

其中的具体操作是,防火墙过滤后的网络数据包,通过snort的重新包装,将其包装成snort数据包,方便snort进行数据包的拆解,并进行分析网络协议,并作出反应。

snort的规则模型示例:

alerttcp202.110.8.1any->122.111.90.880(msg:”webaccess”;sid:1)

·alert:表示如果此条规则被触发则告警

·tcp:协议类型

·ip地址:源/目的ip地址

·any/80:端口号

·->:方向操作符,还有<>双向。

·msg:在告警和包日志中打印消息

·sid:snort规则id…

这条规则看字面意思就很容易理解。snort就是利用规则来匹配数据包进行实时流量分析,网络数据包记录的网络入侵检测/防御系统(networkintrusiondetection/preventionsystem),也就是nids/nips。

ids在拦截到网络威胁之后,通过将outputdatabase相关项注释掉,将日志输出设置到mysql数据库中,在mysql数据库中建立一个snort数据库,并建立一个snort用户来管理这个数据库。

步骤三、通过停止ids运行进程来结束检测。

作为系统中最重要的部分,snort负责拦截和预警。在此系统中,snort在入侵检测模式下工作。我们可以让snort分析网络数据流以匹配一些用户定义的规则,并根据检测结果采取某些行动。

ids作为本系统的核心,snort的运行模式分为三种,包含3种不同的运行模式,对应不同的控制模式,具体包含:

模式1:sniffer

模式2:packetlogger

模式3:networkintrusiondetectionsystem。

sniffer模式只是简单地从网络上抓取数据包并在终端显示出来;packetlogger模式可把数据包保存在磁盘中;networkintrusiondetection模式是最复杂,具有高可配置性。它可使snort根据用户定义的规则分析网络流量,并作出反应。本系统中使用的是模式3,能够实现更加丰富的检测方式。

我们的实验在阿里云平台上实施,用于构建基于centos-7-x86_64-minimal-1511的虚拟机系统。实验工具是snort-2.9.9.0,用于监控攻击行为;barnyard2-1.9是一种数据存储工具;mysql将snort警告存储为数据库。ddos攻击由不同的主机发起并记录在数据库中,通过分析数据来评估系统的性能。

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1