首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

二。包过滤模块和内容过滤模块

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包进行分析,过滤,所获得的结果除了把它们写入日记文件外,还将通过数据交互模块将其显示在用户界面上。

举报
领券