基于linux 的内容过滤型防火墙的设计与实现_第1页
基于linux 的内容过滤型防火墙的设计与实现_第2页
基于linux 的内容过滤型防火墙的设计与实现_第3页
基于linux 的内容过滤型防火墙的设计与实现_第4页
基于linux 的内容过滤型防火墙的设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国基于linux的内容过滤型防火墙的设计与实现1孙建坡武汉理工大学计算机学院,武汉(430070)E-mail:摘 要:传统的包过滤防火墙主要是对网络数据包的五元组分析,判断,来实现对不良内容的过滤,但是这样的包过滤防火墙只能大致的实现过滤功能,不能达到用户的需求.本文在包过滤的基础上,提出了内容过滤型防火墙,通过对截取网络数据包内容的分析,结合用户的需求,来实现对网络内容的过滤,实践证明内容过滤防火墙极大的提高了公司,企业的安全系数。关键字:netfilter;wireshark;特征码;协议分析;内核模块中图分类号:TP393.080 引言计算机和互联网技术的飞速发展,使人类进入了信息化

2、的社会,同时海量的信息通过互联网进入人们的生活,给人们的生活提供了快捷和方便。但是,伴随网络的发展,各式各样的不良内容也充斥着网络,比如大量的暴力,色情,犯罪,邪教等的不良内容及一些病毒和垃圾邮件等,对我们个人和社会构成了伤害,针对这一现象,传统的方法是采用包过滤防火墙的方法来剔除到一些不干净的内容。本文在包过滤防火墙的基础上,以即时通信软件QQ作为分析对象,提出了改进型的内容过滤防火墙,通过对网络中数据包内容的提取,分析15,判断,实现对QQ登录的封堵,内容过滤型防火墙可以作为公司内部和外部网络之间的防火墙,实现公司内部对随意登录即时通信软件的过滤,提供公司的工作效率,同时对学校,公司,网吧

3、等大型网络机构提供了安全保障。1包过滤型防火墙包过滤又称“报文过滤”,采用简单的数据包过滤形式。由于包过滤防火墙工作在TCPIP协议的网络层上,所以也被称为网络层防火墙。其工作方式如图1所示。图1 包过滤防火墙1 本课题得到外资企业O2(凹凸)Micro科技公司智能网络安全防火墙项目计划资助。-1-中国 网络数据包通过物理层,数据链路层到达网络层,包过滤防火墙分析数据包头部的五元组1:源地址、目的地址、源端口、目的端口、协议类型,通过访问控制表进行判断,对分组实施有选择的通过,如果满足规则并允许通过,则分组将会被转发;如果规则拒绝通过,将被丢弃。包过滤防火墙是目前最快的防火墙,但是包过滤规则配

4、置较难,一些协议不适合用包过滤来保护安全;安全控制的粒度也只限于地址、端口号和标志位,对于基于数据包数据内容的高层次的攻击手段,则无能为力。同时它无法使用诸如限制什么用户、什么应用程序等规则。2内容过滤型防火墙内容过滤型防火墙是在包过滤的基础上,基于LINUX中的NETFILTER2模块实现的网络数据包内容的过滤。首先在NETFILTER中加载一个内容过滤的模块,其中包含了一些配置信息,如需要匹配的地址,端口,协议,特征码,关键字等信息,由于NETFILTER的PRE-ROUTING是数据包进入系统的第一个HOOK点,所以将该模块挂载在第一个HOOK点PRE-ROUTING中(NETFILTE

5、R HOOK结构如图2.1所示)。图2.1 netfilter结构图2.2 内容过滤型防火墙当网络数据包流经物理层到达数据链路层时是,即进入了NETFILTER的第一个HOOK点,此时数据包就进入NETFILTER中注册的函数,模块先是解开数据包,将模块中配置信-2-中国 息与数据包中的特征码,关键字等信息进行匹配,通过检测数据包内容中出现的非法特征码,关键字等信息,来分析,判断。对没有出现非法关键字的数据包直接ACCEPT,对出现非法关键字的数据包,就会DROP,从而实现网络数据包的过滤功能。过滤流程如上图2.2所示。为了实现用户和内核的交互,本文通过NETLINK机制,使用户更加方便的根据

6、自己的要求来完成不同的功能,即用户将自己要封堵的功能选项通过NETLINK机制3传递给内核模块,由内核模块实现过滤功能。内容过滤的防火墙对数据包的过滤更加细化,不但实现了对五元组的过滤,而且实现了对应用程序的过滤,同时还能有效防止伪IP的欺骗。内容过滤防火墙通过内核模块的加载来实现过滤功能的添加,不仅相对于包过滤更加安全而且用户操作起来。3 QQ工作原理即时通信系统主要工作模式:客户/服务器模式4,即发信端用户和收信端用户必须通过服务器来交流。每个即时通信客户端通过己注册的用户ID和密码登陆服务器,密码信息一般都通过加密后传送。通过服务器验证通过后,服务器返回通过验证的信息给客户端,同时附加一

7、些信息,负责中转连接的服务器IP、端口号、客户端的好友信息等。客户端利用服务器返回的验证信息和获得的IP地址及端口号与中转服务器建立TCP连接。连接建立成功后就通过中转服务器与上线的好友互发消息。对于QQ来说,实现通信首先要实现QQ的登录,所以在此研究QQ的登录就显得至关重要。在电脑上安装QQ客户端,在QQ登录过程中,用网络协议分析软件wireshark抓取QQ登录时的信息包,如图3所示。图3 QQ登录时的数据包通过数据分析可知:首次QQ登陆时,会对腾讯的域名发DNS查询;从查询到的多个IP地址中随机选取一个作为登录服务器;之后对该服务器发登录请求数据包,服务器回应消息包,此时QQ登录成功,若

8、QQ不能登录该服务器,则该服务器把登录请求包发给下一个新的服务器。以此来完成QQ的登录过程。4 封堵QQ登录的设计与实现下图4显示了封堵QQ登录过程的流程图:-3-中国图4封堵QQ登录流程框图首先,为了能实现用户和内核模块的交互,要向内核中注册NETLINK机制的交互函数,由函数netlink_kernel_create创建了内核接收函数,其核心代码如下:#include <linux/config.h>#include <linux/module.h>#include <linux/netlink.h>#include <net/sock.h>

9、static int _init netinit(void)rwlock_init(&user_proc.lock); /*初始化读写锁*/nlfd = netlink_kernel_create(NL_IMP2, kernel_receive);if(!nlfd)printk("can not create a netlink socketn");return -1;return nf_register_hook(&netblockfun);static void _exit fini(void)if(nlfd)sock_release(nlfd->

10、socket);nf_unregister_hook(&ipt_ops);module_init(netinit);module_exit(fini);MODULE_LICENSE("GPL");kernel_receive函数主要是将用户的配置交给内核模块,由内核模块根据配置信息来分析,决定数据包的去向。由QQ登录过程可知,QQ登录通过两种协议5,一个是面向连接的TCP协议,一个是无连接的UDP协议。通过网络协议分析软件wireshark分析可知,当QQ通过TCP协议建立连接时,当数据部分长度大于3个,第三个字节为0x02,最后一个字节为0x03且等二个字节正好等

11、于数据长度时,此数据包即为QQ登录的数据包;当QQ通过UDP协议登录时,通过抓取数据包分析可知,当数据部分的第一个字节为0x02且数据最后一个字节为0x03时,此数据包为QQ通过UDP协议登录的数据包。通过分析可知HOOK点的处理函数如下:-4-中国static struct nf_hook_ops ipt_ops = .hook = ipt_hook,.owner = THIS_MODULE,.pf = PF_INET,.hooknum = NF_IP_PRE_ROUTING,.priority = NF_IP_PRI_FILTER,ipt_hook(sk_buff * skb)char *

12、app_data=skb->dataipr_app_data_offset(skb);int datalen=ipr_app_data_len(skb);/*取出数据包数据信息长度*/if(app_data0=0x02&&app_datadatalen-1=0x03)printk ("QQ UDP DROP n");return NF_DROP;if (datalen>3 && app_data2=0x02)printk("enter qq suspectn");if(app_datadatalen-1=0x0

13、3&&app_data1 = datalen)printk(“QQ TCP DROPn");return NF_DROP; 为了在LINUX中编译内核模块,生成想要的netblock.ko内核模块6文件,还要编写一个Makefile文件,这样在以后对内核模糊进行修改之后就很容易实现内核模块的编译工作。Makefile的内容如下:PWD :=$(shell pwd)KDIR :=/usr/src/linux-Obj-m :=ip_filter.onetblock.o = netblock.cTARGET = netblockOBJ = netblock.

14、oall:$(MAKE) $(CFLAGS )C $(KDIR) M=$(PWD) modules$(CC) $(CFLAGS) -o $(TARGET) $(OBJ)clean:rm -r f *.o *.ko *.symsevr最后,将产生的模块加载到内核中。-5-中国5 实验结果图5 QQ登录结果由图5所示可知,通过用网络协议分析软件wireshark抓包分析可知,客户端在一直试图通过多了服务器IP来登录QQ服务器,但是由于防火墙中的NETFILTER中注册了相应的过滤函数,同时对内核中添加相应的模块机制,使QQ一直处在“正在登陆”状态,在多次连接失败后,最终由于登录超时,而无法正常连接

15、,有效的防止了QQ的登录。 6 结语本文在包过滤防火墙的基础上,在NETFILTER中注册相应的过滤函数,实现了基于LINUX的内容过滤型防火墙,细化了网络数据包的过滤功能,解决了包过滤中只针对五元组过滤的限制,实现了对网络数据包中数据部分的过滤,提供了网络的安全,同时此方法可以推广到QQ的其他应用功能中及即时通信软件中,如封堵QQ文件传输、视频传输,封堵MSN,SKYPE等。对防火墙的实际应用有很好的参考价值。参考文献1李远杰,刘渭封等,主流即时通信软件通信协议分析J.计算机应用研究,2005.2姚晓宇,赵晨Linux内核防火墙Netfilter实现与应用研究J.计算机工程,2003,29(

16、8):112.3 王茜基于Linux的网络防火墙技术研究D.大连:大连海事大学,2001,15.4RIcHARD sTEvENs wTcPIP Illmtrated volume lM Addisonwesle. 2002.5Libyahoo2Yahoo Messenger Protocol v9EB/0Lhttp:/ libyahoo2sourceforgenet/ymsg-9.txt.2007.03.6(美)HareCSiyankIntemet防火墙与网络安全M.北京:机械工业出版社,1998.-6-中国 Linux-based design and implementation for

17、content filteringfirewallSun JianpoComputer college. WuHan University of technology. WuHan (430070)AbstractTraditonal packet filtering firewall mainly analyse and judge by the five-tuple of network packet,which can filter the needless content.But such firewall can only be approximate realization for filters,so it cant meet customers needs.Based on packet filtering,it proposes content filtering-based firewall. Through the content analysis of network data packets,combined with the needs of users,it implements filter for netwo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论