论文部分内容阅读
随着Internet的快速发展,网络内容的安全性问题也日益突出。具有高匹配效率的包过滤防火墙,对于网络通信内容的监测、过滤、处理无能为力。应用级代理防火墙虽然能够理解应用层信息,但对用户不透明,并且对网络性能影响很大。本文以高效、准确为目标,阐述了一种基于Netfilter框架的内容过滤防火墙的设计与实现,在网络层过滤应用层信息。
本论文中涉及的技术,包括利用Netfilter框架的内核态包过滤,TCP会话还原,用户空间与内核空间的通信,防火墙的透明模式,以及内核态的数据包转发等。
基于Netfilter框架的内容过滤防火墙,以透明的方式工作,它向一个导线一样串联在网络中,加载和卸载防火墙时,整个网络都不需要任何变动。利用Netfilter框架,在数据包流经操作系统协议栈中网络层时采集数据包,并分析数据包应用层的信息,以达到网络内容过滤的目的。
系统在Netfilter框架的第一个钩子点注册函数,捕获数据包,并直接在内核态下对数据包进行重组,还原出原始数据。再将原始数据放入在内核态下开辟的缓冲区中,通过共享内存技术,将原始数据交给用户空间进行分析处理,并将结果返回给内核空间,合法的转发,非法的丢弃。
TCP会话还原,需要缓存不同连接的数据,当一条连接结束时,还原出该连接的会话内容。
本文详细讨论了用户空间与内核空间的区别以及通信方法,并实现了用户空间与内核空间的共享内存。内容过滤防火墙配置为透明模式,并解决了由于缓存数据对原有通信影响的问题。本文代码是在Red Hat LinuX 2.4.20内核下,采用C语言进行开发。