论文导读:近几年来,深度包检测技术和协议分析技术的出现使得网络分析更加准确、有效。协议分析作为一种新的技术思想,正在受到广泛地关注,它在已知协议的情况下能够高效做出匹配,随着技术研究的不断深入和实践,它的作用也将会越来越突出,会使网络防护变得越来越有效。 关键词:识别和跟踪,Netfilter防火墙框架,深度包检测技术,协议分析 1.引言 非法语音业务的出现,不仅挤占了正常带宽,导致语音业务收入大幅度降低,同时通信质量也得不到有效保证,影响了用户的利益。基于上述原因,语音系统的信息过滤与分析就具有十分重要的意义,迫切需要一种能有效识别应用和跟踪的方案。本系统是根据网络正常行为而进行设计的,可有效监测到语音信号的通信,在保障网络安全上起到了重要的作用。论文参考网。 2. 系统开发平台 此系统是在Linux操作系统下进行开发,主要用到Linux2.6内核版本[1]操作系统本身所带的Netfilter防火墙框架[2]。由于Linux操作系统具有稳定、灵活的特点以及其提供的优秀防火墙框架,用户可以根据自己的实际需要,将防火墙设计的一般理论和方法与自己系统的具体情况相结合,设计出新的可实用的安全防护系统。 3. 采用方法 在众多的网络安全技术中,防火墙使用最为广泛,其中最为关键的技术包括数据包的捕获、数据包的过滤、历史记录的存储。随着技术的发展和要求的提高,防火墙在被大众接受的同时也显露出不足。近几年来,深度包检测技术和协议分析技术的出现使得网络分析更加准确、有效。 3.1深度包检测技术 深度包检测技术[3]是包过滤技术的深入,所谓深度是和普通的报文解析技术比较而言的,普通报文检测仅能分析出数据包中简单的信息,而它除了对前面的层次进行分析外,还增加了应用层分析,能够识别各种应用及其内容,具有漏检率低、防御能力强的特点。 3.2协议分析技术 协议分析技术[4]需要对每一种协议(主要是应用层协议)编写一段协议检测的代码,例如HTTP协议分析模块主要对HTTP进行解码分析,并检测对WEB服务器的攻击。虽然不同的协议有不同的分析代码,但它们都遵照相同的检测思路——将报文分解成域,然后对每一个域进行检查,与预期的值进行比较,若有异常则发出警报。 下面通过一个具体的例子阐述基于协议分析的系统是如何进行入侵检测的,假设系统要检测一个HTTP协议包中是否包含/hidden/admin/,如果存在则认为是一次入侵攻击,检测过程如下: (1)解码IP包头文件,确定IP包有效负载所包含的协议; (2)如果是TCP包,则解码TCP头文件,寻找TCP的目的端口; (3)如果端口为80,即这是一个HTTP协议包,则根据HTTP协议规则分析HTTP包中所有的成分,从中提取出URL路径; (4)对URL路径进行处理,避免路径欺骗; (5)查找是否存在与 “/hidden/admin/”一致的路径,如果存在则向系统发出警报。 从上面可以看出,运用字符串特征识别,就能很准确地判断出数据包是否满足我们所设定的条件,如果是,则按照预先设定的规则进行处理。 4. 系统研究及设计 识别和跟踪系统的设计主要分成三部分,首先是对语音类应用的协议进行分析,归纳出协议中的特征字,编写出能识别该协议的正则表达式[5],使用Netfilter中的L7-filter模块,运用正则表达式对协议进行识别,并通过数据包过滤情况进行验证;使用iptables的ULOG日志记录、MySql数据库,通过监测数据流的状态,对应用行为的过程进行跟踪;通过分析数据库中的日志记录,可以对应用行为进行统计和控制。论文参考网。 4.1语音聊天识别模块设计 语音聊天时会在数据包中表现出一些特定的规则,这些规则可以由正则表达式进行描述。安装L7-filter并编译内核[6],使用iptables工具进行添加、删除、编辑过滤规则,利用规则操作数据包并将过滤包的详细信息记录到系统日志文件中,日志记录在/var/log/messenges中。由于该框架运行在服务器网关,服务器需要对流经系统的所有数据包进行检测,这样将规则定义在PREROUTING链上最为合适,识别模块的流程如图1所示: 图1 语音聊天识别模块设计流程 我们以语音聊天工具qq为例,具体的实现命令如下: iptables–F //清空所有链表 iptables –tmangle –I PREROUTING –m layer7 –l7proto qqtalk -j LOG --log–prefix“qqtalk” //允许符合正则表达式qqtalk的数据包进入系统并在日志文件中以“qqtalk” 标识 iptables –tmangle –L –v //查看数据包匹配情况 日志文件messages中记录了iptables匹配数据包的结果,通过查看日志文件,可以清楚的看到所匹配数据包的记录情况。 4.2语音聊天跟踪模块设计 协议跟踪就是跟踪应用中关键事件动作的发生,通过数据库显示出来,Netfilter本身自带了五个链用于存储规则,但我们可以创建新的单独链对各种协议进行处理,这样做可以更具有针对性,而且也不复杂。我们以语音聊天工具qq为例,新建一条qqtalk规则链的命令为: iptables –Nqqtalkchain 将匹配qqtalk正则表达式的数据包转发到新建的qqtalkchain规则链: iptables –IFORWARD –m layer7 –l7proto qqtalk –j qqtalkchain 研究应用通信过程可以看到,在关键事件发生时,一般都伴随着某些特征字的出现,例如qq发起语音聊天时出现的“INVITE”,取消时出现的“CANCEL”等,这就需要用到iptables中的string模块,使用字符串匹配的命令为: iptables –tmangle –m string -algo kmp --string “CANCEL” -j ULOG --ulog –prefix “cancel” 5. 实验环境搭建及测试 5.1实验环境搭建 本实验将语音类应用识别与跟踪系统部署在双网卡服务器上,该主机用eth0作为外部网络接口,与学校网络相连;用eth1作为本地局域网的网关地址。客户机运行语音聊天软件和抓包软件Wireshark。服务器和客户机的环境配置见表1: 表1 测试环境配置
服务器配置 | 硬件配置 | AMD Athlon 64 Processor 3200+ 2.01GHz,512内存 | 操作系统 | Fedora 8.0(kernel 2.6.24),集成Netfilter/iptables框架 | 安装软件 | MySql、L7-Filter、ULOG | 网卡配置 | eth0:10.100.101.6,eth1: 192.168.1.1 | 客户机配置 | 硬件配置 | AMD Athlon 64 Processor 3200+ 2.01GHz,512内存 | 操作系统 | Windows XP | 安装软件 | 抓包软件Wireshark,语音类应用软件如qq | 5.2 语音聊天识别功能测试结果 执行4.1节中的命令,可以查看到已捕获到符合匹配规则的数据包,其中该语音类的正则表达式存放在qqtalk.pat文件中,结果如图2所示: 图2 捕获到的数据包 5.3语音聊天跟踪功能测试结果 配置好ULOG和MySql后,执行命令: Mysql–u root –p password:*** use ulogd delete from ulog 以上命令启动数据库,清除数据库中的已存在信息,执行命令describe ulog查看MySql为数据包信息配置地数据库列表。在qq客户端进行信息交互时,在数据包中会出现“INVITE”、 “100 Trying”、 “180 Ringing”、 “200 OK”、 “ACK”等语义明显的特征字符串,使用string模块可以匹配出来。论文参考网。如果捕获的数据包中出现了满足条件的字符,iptables将会转发该数据包到qqtalkchain链进行处理,执行4.2节中的命令,结果将会记录在MySql数据库中,执行sql语句显示结果,如图3所示: select id, oob_time_sec,ip_saddr, ip_daddr, oob_prefix from ulog; 图3 数据库中显示记录的日志 6. 总结 协议分析作为一种新的技术思想,正在受到广泛地关注,它在已知协议的情况下能够高效做出匹配,随着技术研究的不断深入和实践,它的作用也将会越来越突出,会使网络防护变得越来越有效。 参考文献 [1] 李善平,刘文峰等.Linux内核2.4版源代码分析大全.北京机械工业出版社,2002 [2] 李晓峰,张玉清,李星.Linux2.4内核防火墙底层结构分析.计算机工程与应用,2002,(14) [3] 陈宁,李忠.一种防火墙新技术深度包检测.重庆科技学院学报,2007,9(3) [4] Kenneth D. Reed 著,孙坦,张学锋,杨琳等译.协议分析.电子工业出版社.2002 [5] Neo Lee.正则表达式之道.http://net.pku.edu.cn/~yhf/tao_regexps_zh.html,2004 [6] Jamyy.L7-filter安装实录. |