发明名称 一种基于网络过滤器的内容过滤网关实现方法
摘要 基于网络过滤器的内容过滤网关实现方法,属于网络通信安全技术领域,其特征在于,基于Linux系统平台,实现了网络内容分析与实时监控。实现了在网络层过滤应用层信息的目的,利用网络过滤器Netfilter框架,在内核态下进行数据包采集与过滤,优化了数据包网络路径,提高了数据采集效率。对TCP连接进行会话还原,并且利用用户空间与内核空间共享内存技术,将会话内容从内核态交给用户态的内容过滤模块。避免了系统调用带来的开销,减少了数据的拷贝次数。对经过判断后合法的数据包进行转发,非法的阻断。网关以透明的方式工作,网关做了必要的处理,不会因为缓存数据而失去透明性。该网关能有效的完成网络内容分析与实时监控。
申请公布号 CN101068229A 申请公布日期 2007.11.07
申请号 CN200710100331.2 申请日期 2007.06.08
申请人 北京工业大学 发明人 张建标;孙鸿斌;艾蓉;张正国
分类号 H04L12/66(2006.01);H04L12/56(2006.01) 主分类号 H04L12/66(2006.01)
代理机构 北京思海天达知识产权代理有限公司 代理人 楼艮基
主权项 1、一种基于网络过滤器的内容过滤网关实现方法,其特征在于,该方法用一个内容过滤网关透明的串联在网络边界,以无IP方式,在网络层来过滤所有出入局域网的数据,所述内容过滤网关运行Linux kernel 2.4操作系统,安装双网卡,每块网卡都设置为混杂模式,使用brctl配置两块网卡为网桥来实现透明串联在网络边界上,所述内容过滤网关依次按以下步骤来实现内容过滤:步骤1,初始化:在所述内容过滤网关中设有:数据包捕获模块,数据包处理模块,以及数据包转发模块,这些模块工作在Linux系统的内核态,还设有内容分析模块,工作在用户态;在所述这些模块中:数据包捕获模块,注册了设定的过滤函数,对于那些需要转发的数据包,送往数据包转发模块转发,对于需要进行内容过滤的数据包,则送往数据包处理模块;数据包处理模块,对数据包捕获模块发来的需要进行内容分析的TCP数据包,首先按序号顺序在缓冲区中缓存,当捕获到一条连接的所有数据包时,还原出该连接的应用层数据内容,交给工作在用户态的内容分析模块进行分析,合法就交给数据包转发模块依次转发该连接的所有数据包,不合法就阻断该连接,其处理步骤依次如下:处理步骤(1):为每个数据包建立一个索引节点结构,结构包括三项:该包的套接字缓冲区指针、该包的序号、指向下一个数据包索引节点结构的指针,为一条连接的第一个数据包建立索引节点头结构,作为该条TCP连接的标志,该结构包括:该包的套接字缓冲区指针、该包的序号、源IP地址,目的IP地址,源端口,目的端口、指向下一个数据包索引节点结构的指针,再构造一个数据包索引数组,数组中每一项存储一个指向索引节点头结构的指针,这样所有数据包的索引由一个二维链表来维护,横向存储同一个TCP连接的数据包索引,纵向存储不同连接的数据包索引,设定所属数据包索引数组每一项初始化为0,把数据包索引插入二维链表中;处理步骤(2):当TCP数据包到来时,判断数据包的数据长度是否为0,若为0,检查数据包的Fin标志位是否为1,Fin标志位是TCP连接结束标志,若不为1,就将该包转发;若为1,则表明该数据包所属TCP连接已经结束,对该连接进行内容还原;若数据包的数据长度不为0,则需要将该数据包的索引节点插入二维链表中;处理步骤(3):判断数据包索引数组第一个元素是否为0,如果为0,则为该数据包创建索引节点头结构,作为第一条连接的第一个数据包插入二维链表;如果不为0,判断该数据包是否属于该连接,根据源IP地址,目的IP地址,源端口,目的端口这四项唯一确定一条连接,如果不属于该连接,则依次和数组其他元素比较,直到找到所属连接或找到一项数组元素为空,如果数组元素为空,则为该数据包创建索引节点头结构,作为新的一条连接的第一个数据包插入二维链表,如果找到了所属连接,判断是否为第一个数据包,如果是,创建索引节点头结构,插入该连接第一个位置;如果不是,创建索引节点结构按TCP序号插入正确位置,并保存该连接的头指针,最后判断该数据包Fin标志位是否为1,如果不为1,利用网络过滤器Netfilter框架标准返回值NF_STOLEN,告诉操作系统协议栈不再对该数据包进行处理;如果为1,对该数据包所属连接进行内容还原;处理步骤(4):判断是否已经得到待内容还原连接的头指针,如果没有,在数组中找到该连接;如果已经得到,就依次取出该连接每个数据包的应用层数据,放入共享缓冲区中;内容分析过滤模块,管理员指定关键词,及每个关键词的权重,并设定所有连接共同服从的最大权重,在收到数据包处理模块发来的内容分析请求后,从所述共享缓冲区中,读出该条连接的应用层数据,通过QS-DFSA算法,即反向有限自动机计算步长字符串匹配算法统计每个设定关键词的出现次数,计算每个关键词权重和出现次数的乘积,再相加求和,得到该连接的权重,再将该连接的权重与管理员设定的所有连接共同服从的过滤最大权重相比较,超过最大权重就认为不合法,否则就是合法;步骤2,依次按以下步骤进行数据包内容过滤:步骤2.1:数据包捕获模块在收到网络发来的TCP数据包以后,根据源IP地址,目的IP地址,源端口,目的端口,协议类型,对于需要转发的数据包,则发送到数据包转发模块转发;对需要进行内容过滤的数据包,发送到数据包处理模块处理;步骤2.2:数据包处理模块在收到需要进行内容过滤的TCP数据包后,按所述数据包处理步骤进行处理,当一条连接结束后就还原出该条连接的数据,放入共享缓冲区中,并通知内容分析模块去共享缓冲区读数据;步骤2.3:内容分析模块在收到数据包处理模块通知后,从共享缓冲区中读数据进行分析,并将结果返回给数据包处理模块;步骤2.4:数据包处理模块阻断非法连接;对于合法连接交给数据包转发模块转发。
地址 100022北京市朝阳区平乐园100号