1 概述
网络系统已经成为现代工作、生活不可或缺的一部分,网络技术的飞速发展在给人们带来巨大好处的同时,也存在病毒、木马、黑客攻击等破坏我们网络系统的行为,网络攻击的方式也呈现出多样性和隐蔽性的特征,网络安全保护成为重要的研究议题。
目前IPv6协议正处在不断完善和发展中,正在由IPv4协议向IPv6协议过渡,它在不久的将来,尤其是随着物联网技术的推进,将取代目前被广泛使用的IPv4协议。随着IPv6协议的不断发展和推广应用,在过渡期间的网络将不断出现新的网络安全问题。Linux平台下基于IPv4网络的入侵检测与防火墙的联动系统目前已经比较成熟,并得到应用,但是Linux平台下基于IPv6的入侵检测与防火墙联动系统的研究才刚刚起步,未得到普及和应用。
2 防火墙和入侵检测系统
防火墙是综合了多种技术的高级访问控制设备,是网络安全防护体系的大门。传统的防火墙的规则是静态的,对于攻击或异常行为不能做出实时反应,也不能按照当时的环境变化自动调整其过滤规则。同时,防火墙具有防外不防内的特点,对于内部发起的非法行为或攻击无法防御。
入侵检测系统是对防火墙的有益补充,能够对网络或计算机系统可能操到的攻击进行实时检测,是一种动态的安全防护技术,其重点在于入侵行为的识别上,能在来自于网络内部和外部的入侵攻击队系统发生危害前,检测到入侵攻击,但入侵检测系统即使检测到入侵,也只能进行报警或有限的反击,很难采取有效的方法进行阻止或控制。
3 系统模型分析
现有的入侵检测系统和防火墙在功能上是相互独立的,防火墙一般放置在内网和外网的中间充当网关使用,由于不能识别网络流量中的攻击行为,对于通过合法路径进入的网络攻击和来自内部网络的攻击行为防火墙无能为力。虽然目前已有将初步的入侵检测功能加入到防火墙功能中,但这会防火墙效率大大降低,所有的网络流量都要通过防火墙进行入侵检测,这会严重影响防火墙的性能,导致网络瓶颈的产生,只能适应网络规模较小和网络流量不大的网络,无法应用于高速网络检测。
IDS一般采用旁路部署的方式进行入侵检测,可以及时发现那些穿透防火墙的深层攻击行为,无需网络流量流经它,便可正常工作,不影响网络的性能,但也存在缺陷。例如,IDS自身容易受到拒绝服务攻击。而且,由于当代网络迅速发展,网络传输速度大大加快,IDS检测到攻击,如不能及时有效的阻断,仍将对网络安全造成威胁。
由上面的分析可以看出,只有将入侵检测与防火墙实现联动,根据检测到的入侵信息改变防火墙的策略,从源头上彻底切断入侵行为,弥补两者间的不足,将各自的能力发挥出来,从整体防御的角度保证网络的安全。
Snort是Linux平台下强大的轻量级网络入侵检测系统,Snort V2.8.1扩展了新的是基于IPv6的检测规则,是一个以开放源代码的形式发布的网络入侵检测系统,它添加了IPv6解码模块,在数据包捕获和检测做了改进,实现了对IPv6分段的重组,改进了IPv6快速检测算法,同时增加对IPv6/IPv4双协议的支持。
IP6tables是Linux内核提供的包过滤工具,通常用来建立、维护、检查Linux内核过滤表,可以加入、插入或删除核心包过滤链中的规则。IP6tables在语法上和IPtables基本相同,它是建立在Netfilter框架上的用户空间管理工具,具有很好的扩展性,支持128位地址。IP6tables提供了INPUT、FORWARD和OUTPUT3种过滤链表。用户可以配置不同的过滤规则,每一条链可以有一条或数条规则,当一个数据包到达相应的过滤链表时,按照顺序将链中的每条规则应用到分组,直到找到一个匹配。如果该数据包不匹配任何一条规则,则根据预先定义的策略来处理该数据包。IP6tables配置命令的基本形式如下:
IP6tables –[AD]chain-name rule-specification
命令中各项解释如下:
1)-A表示添加规则,-D表示删除规则。
2)chain-name表示INPUT、FORWARD和OUTPUT3种过滤链表中的一种。
3)rule-specification确定了具体规则的内容。
SnortSam是snort的入侵防范插件,是snort和IP6tables联动机制的核心,在整个联动的安全防护体系中起到了一个核心作用。它通过向snort规则添加新响应来工作,规则一旦触发将会使防火墙发生变化。它可以接收一个或多个入侵检测系统的报警信息也可以和一个或多个防火墙进行交互,可以基于所触发的规则控制每个防火墙。整个网络安全防护联动系统的逻辑拓扑结构如图1所示。
4 利用SnortSam插件实现snort与IP6tables联动
SnortSam有两个基本的组成部分:插件和代理。插件是一个标准的snort输出插件,用于当规则触发时向代理发送指令。这些指令以加密的方式发送。代理负责解密收到的指令,建立和移除防火墙规则。当一条入侵信息触发了Snort的一条入侵规则时,它能够及时向插件传送报警信息。插件根据传递过来的报警信息,生成FWsampacket或者FWsampacket6报警包,并引入TwoFish算法对对通信信息进行加密后发往SnortSam,由于SnortSam输出插件与代理间需要安全的通信,所以在为snort制定SnortSam输出插件时,需要指定SnortSam代理所在主机和通讯口令。SnortSam接收到加密指令后由代理负责解密,自动生成一条阻断规则,并通过代理在防火墙IP6tables上实现。IP6tables执行这个请求,并等待代理发布一个终止请求从而移除被阻断的地址。当到达预定义的时间限制时,代理发送另一个请求删除被阻断的地址。如果在计时结束之前,该阻断地址又一次发起攻击,系统不会生成重复的防火墙规则,但会将计时器刷新,重新计时。
主要实现步骤如下:
1)新建规则文件snortsam.rules,并在此文件中编写snort新规则,并将报警信息输出至snortsam输出插件,同时设置阻断源IP数据包的时间。
2)在snort配置文件fwsam-snort.conf中添加新的输出插件,使snort支持snortsam输出,并设置snortsam输出插件与代理间的通讯口令。
3)运行snortsam代理,以入侵检测方式运行fwsam-snort。
5 测试与结果
本系统采用典型的网络扫描进行测试,使用X-Scan和NMAP作为测试工具。利用X-Scan对Snort监控的网络进行加载扫描,利用NMAP对Snort监控的网络进行FIN、XMAS和NULL三种特殊
形式的扫描,使用IP6tables实现联动。通过对攻击方网络数据流量的分析,在入侵数据包触发了Snort规则集后,会通过输出插件向SnortSam报告,从而在防火墙上产生阻断的访问控制条目,达到阻断源IP数据包的目的,实现了Linux平台下基于IPv6的入侵检测与防火墙联动。
参考文献:
[1] 方世林,刘利强,方欣,李毅.面向IPv6网络的入侵检测系统的设计与实现[J].电脑开发与应用,2012(3):32-35.
[2] 邵晓宇,杨善林,诸伟.基于Linux入侵检测动态防火墙的设计与实现[J].计算机技术与发展,2008(3):156-159.
[3] 孙勇,张恒,马严,等.基于IPv6的入侵检测与防火墙联动系统[J].计算机工程,2008(6):151-154.