余志高 周国祥
合肥工业大学计算机与信息学院 安徽 230009
随着技术的发展与社会的进步,信息通过网络的快速及时的传递给人们的工作与生活带来了极大的方便。在计算机网络发展与普及的同时,计算机病毒、网络欺诈、数据的盗用与篡改等网络攻击威胁到人们的切身利益,网络安全越来越受到人们的重视。入侵检测与防火墙都是作为应对网络安全的技术手段而应用而生。
入侵检测系统(IDS)就是通过对网络中的数据流进行监视、分析等处理手段,来发现各种攻击企图、攻击行为、攻击后果,已保证系统资源的机密性、完整性与可靠性。入侵检测系统根据实现的原理不同一般可分为基于异常检测和基于误用检测。
防火墙是指部署在内部网络与外部网络间的一个软件或硬件系统,用户通过制定安全策略阻止外网的非法用户对内部网络的访问。防火墙根据采用的技术不同有多种类型,其中最基本最有效的是包过滤型防火墙。包过滤型防火墙通过检查数据包的地址、协议、端口等信息来决定是否允许此数据包通过。
Netfilter/Iptables是与2.4.x和2.6.x版本Linux内核集成的 IP 信息包过滤系统,也就是一种基于包过滤的防火墙实现技术。它使得用户能够很方便地在网络边界定制对数据包的各种控制,如有状态或无状态的包过滤、网络地址转换、流量控制及高级的包处理等。
同为网络安全的防护措施,入侵检测与防火墙有各自的优缺点。比如,Snort入侵检测系统根据已知的入侵特征定制规则集,来检测符合规则定义的网络攻击,然后通过警报通知用户,等待用户采取措施来处理相应的入侵攻击。因此及时的升级规则库就能够有效的检测到透过防火墙的入侵行为。作为入侵系统由于它的机制是监视网络中的数据包,本身并没有阻止发送问题数据包的非法用户入侵行为。Netfilter/Iptables防火墙一般部署在内网与外网的边界,外网与内网的数据流都要经过它来互相通信。它采用的是包过滤机制,对经过的数据包进行解析,分析其中的地址、协议、端口等字段,将它们与事先定义好的规则进行对比,然后决定是允许还是拒绝数据包的通过。它就像一道关卡,对于授信用户的数据包就允许其通行,对于非授信的用户就采用丢弃数据包的方法来应对可能的威胁。防火墙虽然能够对符合一定规律的入侵采取拒绝与阻断,但是由于其策略的制定往往比较抽象,有部分的非法用户能够透过防火墙而无法被发现。因此在防火墙内部部署IDS系统就是一种很好的补充手段。
安全模型采用的操作系统及IDS、防火墙软件如表1所示。Snort的后台数据库采用MySQL 5.0,MySQL具有执行性能高,运行速度快,并容易使用等优点。BASE与Apache2可以使用户以Web方式查看与管理Snort的入侵警报。
表1 操作系统与软件
图1为网络结构模型,安装有Netfilter/Iptables的Linux服务器部署在内网与外网的边界,所有内网与外网的数据通信都必须经过 iptables策略的处理,外网的数据在进入内网之前,经过防火墙能够过滤掉大部分的入侵行为。Snort通过网口镜像监视经过交换机的数据流,若发现入侵行为就会生成警报并将相关的日志记录存入Snort数据库。用户在查看警告日志的同时,可以根据日志的相关信息(IP地址,协议,协议端口等),构建新的规则并添加到防火墙的规则集中。
图1 网络结构模型
入侵检测系统检测到入侵行为后通常是产生警报通知用户,用户在读取并分析警报后手动采取应对措施。IDS警报随时都有可能产生,而用户往往不能够及时的处理,这就给网络入侵者留下了更多的时间和机会去攻击内部网络。那么能否在 Snort产生警报后根据它提供的日志信息来自动添加 Iptables规则来阻断入侵者与内部网络的通信呢。这就需要入侵检测系统与防火墙协同工作。为此我们采用 crontab定时执行SHELL脚本文件Autoaddrule.sh来实现这个功能。图2为警报处理流程图。Snort数据库中的acid_event表结构:acid_event(sid,cid,signature,sig_name,
图2 警报处理流程图
sig_class_id,sig_priority,mestamp,ip_src,ip_dst,ip_proto,layer4_sport, layer4_dport)
在Linux系统中使用#crontab -e添加定时任务(本例为每10分钟执行脚本一次):
*/10 * * * * /var/lib/mysql/shell/Autoaddrule.sh Autoaddrule.sh脚本文件:
脚本主要实现以下功能:
(1) 为了防止产生重复的IPTABLES规则,语句4-11首先根据文件中的记录清除iptables列表。
(2) 连接Snort数据库,根据最新的警报提起重要信息,并将需要的信息生成到防火墙服务器本地的文件中。并根据源地址和端口过滤相同的记录,避免产生相同的规则。IP地址是以整数形式存储在数据库表中,INET_NTOA()来实现整数形式到IP地址的转换。如语句13所示。
(3) 逐行读取文件中的数据(IP地址与端口),并将这些信息作为iptables命令的参数插入到iptables规则列表中(14-20行)。
在完成系统环境搭建后,为了测试模型的可用性,使用了Lincoln Laboratory 的DARPA 1999入侵检测评估数据集对系统进行了测试,在选取数据集中第五星期的第一天outside.tcpdump数据作外网攻击模拟,Snort产生了36个报警。在10分钟后用iptables -L查看防火墙的策略时,有27条互不相同的规则被添加到规则集中,很好的实现了预期的功能。表2列出了部分测试产生的iptables规则。
表2 测试产生的iptables规则
随着人们对网络安全重要性认识的提高,以及层出不穷的入侵手段,对网络的防护不再局限采用单一的产品与手段。人们开始研究与应用不同技术手段的自动协同与融合。正是在这种趋势下,本文实现了防火墙与入侵检测的简单自动协同,通过SHELL脚本将IDS检测到的入侵行为自动生成防火墙的规则,及时的阻断来自外网的入侵行为,从而提高网络的安全性。后期的工作重点是在此模型的基础上,完善系统的功能,提高系统的实用性与易用性。
[1] 胡昌振.网络入侵检测原理与技术[M].北京理工大学出版社.2006.
[2] Farah Jemili,Dr.Montaceur Zaghdoud,Pr.Mohamed Ben Ahmed. A Framework for an daptive Intrusion Detection System using Bayesian Network.Intelligence and Security Infomatics.2007 IEEE. 23-24 May 2007.
[3] M.Bahrololum,M.Khaleghi.Anomaly Intrusion Detection System using Gaussian Mixture Model. 2008.
[4] 肖立中,邵志清,马汉华等.网络入侵检测中的自动决定聚类数算法[J].软件学报.2008.
[5] 姜庆民,吴宁,刘伟华.面向入侵检测系统的模式匹配算法研究[J].西安交通大学学报.2009.
[6] 贾春福,钟安鸣,周霞等.基于系统调用的 Linux系统入侵检测技术研究[J].计算机应用研究.2007.
[7] 刘衍珩,田大新,余雪岗,王健.基于分布式学习的大规模网络入侵检测算法[J].软件学报.2008.
[8] 宋文功,唐琎.基于 Linux的防火墙技术研究[M].微计算机信息.2006.
[9] Patrick Harper.Snort,Apache,SSL,PHP,MySQL,and BASE Install On CenterOS4,RHEL4 or Fedora Core-with NTOP.http://www.snort.org/docs/setup-guides/. Version 15,Updated 8/17/2006.
[10] 穆成坡,黄厚宽,田盛丰,李向军.自动入侵响应决策技术的研究综述[J].计算机研究与发展.2008.
[11] 王丽辉,李涛,张晓平等.一种联动防火墙的网络入侵检测系统[J].计算机应用研究.2006.
[12] David Tansley.LINUX与UNIX SHELL编程指南[M].北京:机械工业出版社.2000.