您的位置:首页 > 运维架构 > Linux

基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(4)-包过滤模块和内容过滤模块

2005-02-19 12:58 381 查看
二。包过滤模块和内容过滤模块


2。1 技术背景


采用技术

2。1。1 模块编程


2。1。2 netfilter


Netfilter是linux2.4内核实现数据包过滤/数据包处理/NAT等的功能框架。它在网络上设置了五个钩(hook),我们可以在我们所需要的一个钩对数据进行过滤,在本程序中,我们对所有进入服务器的数据包进行过滤。

2。1。3 TCP/IP协议


一般网络上传输的数据包有IP包、TCP包和UDP包,由于UDP包不包含文件内容,所以我们不对UDP包进行过滤,而IP包和TCP包都包含我们所需要的数据,我们要获得这些包里面的数据,则必须熟悉这些包的内部结构,熟悉TCP/IP协议。

2。1。4 socket编程(socket buff)


在Linux内核中,分不同的层次,使用两种数据结构来保存数据。在BSD Socket层内使用msghdr{}结构保存数据;在INET Socket层以下都使用sk_buff{}(socket buff)数据结构保存数据。在本程序中,我们所需要的数据包就保存在sk_buff{}里面。我们要对数据包进行过滤,就必须先获得sk_buff{}里面的数据,所以我们必须先了解sk_buff的结构。

2。1。5 rar文件过滤


这是本程序的重点之一,我们要过滤rar文件,首先要先熟悉rar文件里面的内部结构,才可以获得我们所需要的数据(rar文件里面的文件名和目录名),由于rar文件通常比较大,在进行网络传输的时候经常被分割为很多小块,这可能出现很多的情形,我们进行文件过滤的时候,需要一一对这些情况进行判断。

2。2 开发工具


2。2。1 开发平台:linux


2。2。2 编程工具和编程语言:linux下的c编程


2。3 程序工作流程:



在本程序中,内容过滤模块是嵌套在包过滤模块之中,而这两个模块都使用了模块编程,放在同一个模块中(这里的模块是Linux的内核编程方式,不同于前两个模块所讲的意思),我们要进行内容过滤,首先必须先插入模块(当我们不再进行检测的时候,我们可以卸载模块),那么程序就可以在我们指定的过滤点(系统有五个过滤点,每个过滤点叫做一个钩)进行检测,当有IP包和TCP包通过过滤点时,系统就会捕获到这些数据包,我们就可以读取数据包,获得我们所需要的数据(比如,IP包里面的源地址和目的地址,TCP包里面的源端口和目的端口),当TCP包里面包含有rar文件或rar文件的一部分时,我们就调用内容过滤模块对对这个TCP包进行分析,过滤,所获得的结果除了把它们写入日记文件外,还将通过数据交互模块将其显示在用户界面上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐