CN101330473A - 一种多协议支持的网络垃圾信息过滤方法和装置 - Google Patents
一种多协议支持的网络垃圾信息过滤方法和装置 Download PDFInfo
- Publication number
- CN101330473A CN101330473A CNA200710049316XA CN200710049316A CN101330473A CN 101330473 A CN101330473 A CN 101330473A CN A200710049316X A CNA200710049316X A CN A200710049316XA CN 200710049316 A CN200710049316 A CN 200710049316A CN 101330473 A CN101330473 A CN 101330473A
- Authority
- CN
- China
- Prior art keywords
- information
- bag
- formation
- rule
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种多协议支持的基于透明网桥的网络垃圾信息过滤方法和装置,属于信息安全领域。该方法和装置包含了透明网桥、数据包重定向、接收和回注IP包、协议分析、多线程调度分析模块以及各种协议的过滤模块(例如邮件过滤模块,短信过滤模块等)。技术方案是在搭建好的linux透明网桥上利用iptables/netfilter将网络中相关信息进行扣留,然后完成ip分片处理,tcp数据流还原,得到完整的网络信息,将其保存在双缓冲队列中。然后调度线程唤醒线程池中的工作线程从双缓冲队列中提取信息,调用不同的过滤模块进行过滤。当判断为垃圾信息时候就丢弃该信息,反之放行。该装置可以放置在大中型企业的网关前端或者部署在边界路由器前端对网络信息进行过滤。
Description
技术领域
本发明涉及一种多协议支持的垃圾信息过滤方法和装置,利用Linux中的netfilter,iptables模块对相关协议的包进行扣留,然后模拟协议栈进行ip,tcp层的协议分析和还原,得到完整的网络信息(完整邮件信息,短信或者网页信息等)。最后利用行为过滤,bayes过滤,规则过滤等方法对信息进行分析,确定其性质。
背景技术
国内外有一些垃圾邮件过滤产品,大多都是基于硬件的,能做到实时阻断,价格十分昂贵,具体情况参看下图。大多数产品都一个通病,扩展性不好。另外程序的执行效率太依赖硬件。
国外也有很多的垃圾信息过滤产品,比如spamato,这是java写的软件。它工作与客户端,例如outlook,一般作为其一个插件。缺点有:
1不能实时的阻断垃圾信息,它在垃圾信息到达后再分析,这样垃圾信息造成的带宽占用已经形成。
2工作于客户端,只能处理很小流量的信息,不能处理大流量信息。
关于垃圾邮件分类算法的研究,国内外的发展现状可以大体概括如下:部分发达国家(特别是英语国家,如美国、加拿大、英国、澳大利亚等,这些国家同时也是垃圾邮件的重灾区)偏重于反垃圾邮件基础理论的研究,致力于尝试将新理论、新方法引入到反垃圾邮件技术领域;部分非英语发达国家和发展中国家(如中国、德国、瑞士、巴西、韩国、日本)则偏重于对反垃圾邮件最新研究成果的应用,更多是致力于反垃圾邮件术的本土化,其中也不乏对已有反垃圾邮件理论和技术进行革新和改进的创造性工作。
目前的算法研究热点逐渐倾向于基于内容的机器学习判别方法。基于内容判别垃圾邮件的方法可以大体分成基于规则的方法和基于概率统计的方法。前者常常得出人们可以理解的显式规则;后者往往通过某种计算表达式推出结果。本质上,概率统计方法可以看成规则方法的一种推广,只不过概率统计方法中得到的规则是一种不被人轻易理解的“隐式规则”。无论是基于规则的方法还是基于概率统计的方法,在使用时都经历从训练到过滤的过程。通过已有的训练集合(正例+反例)训练出相应的垃圾邮件规则(包括显式规则或隐式规则),然后将规则应用到新的邮件判定中去。在实际应用中可能还会加入人机交互过程,通过用户对程序判定误差的修订来调整和更新垃圾邮件过滤规则。
总的说来,国内外学术界研究的焦点目前集中于基于统计方法的垃圾邮件识别分类技术。主要的研究手段日趋集中在实现机器学习领域的模式分类算法向垃圾邮件智能处理领域的移植,例如决策树方法、bayes算法、Adaboost算法、支持向量机方法、Winnow算法(一种改进的神经网络分类算法)、粗糙集方法(Rough Set)、最大熵模型、Rocchio方法、神经网络方法(NN,Neural Network)、k-近邻算法等。之所以出现这种学术研究上的偏好的原因主要有两点:一是在反垃圾邮件支持者与垃圾邮件发送者两大阵营长期“斗法”的过程中,传统的基于黑白名单和基于规则过滤的方法由于其内在的缺陷(如:灵活性、智能性差、漏报率和误报率高),已经难以应付手法日益巧妙的垃圾邮件发送者,而具备学习能力的统计方法则在理论研究和实际应用中表现出异乎寻常的优越性,经过良好训练的统计过滤器往往能够以极高的准确率阻断某些特征不显著的垃圾邮件,甚至通过自学习识别出某些未知特征的垃圾邮件;另一个原因是将Naive Bayes方法引入到反垃圾邮件处理领域的先驱PaulGraham在“A Plan For Spam”一文中作出的著名论断:“The Achilles heel of the spammersis their message.”,也就是说垃圾
邮件无论怎样伪装,都必须包含它希望透露给读者的内容。围绕这一论断,人们做了大量试验进行验证,两个著名的例子是Bogofilter和SpamBayes(Bogofilter和SpamBayes是两个Sourceforge组织的开源项目,也是目前所有采用贝叶斯算法过滤垃圾邮件的开源项目中各项测评指标表现最优异的两个项目),这两个项目均是采用Graham提出的Naive Bayes方法构造垃圾邮件过滤器。实践证明,Graham关于垃圾邮件本质特征的论断是一个有远见的正确见解,因而被各国研究垃圾邮件问题的科研工作者广泛接受。基于上述两个主要原因,学术界自2002年开始掀起了基于统计方法进行垃圾邮件内容过滤的研究热潮,并一直延续至今。在理论成果方面,基于统计方法的反垃圾邮件技术研究目前基本形成了一套完整的理论体系。基本的指导思想可以归纳为:垃圾邮件特征建模、垃圾邮件的特征向量化表示、垃圾邮件分类算法建模、采用垃圾邮件样本训练垃圾邮件分类器、采用垃圾邮件分类器过滤垃圾邮件并实施增量学习。
通过对近5年来发表在国内外较高级别期刊和会议上的相关文章进行调研,可以看出绝大部分相关科研工作都遵循这样的研究思路,比较有影响的原创文章之间的区别主要在于垃圾邮件的向量化表示方法和所采用的机器学习算法上。关于统计分类算法在反垃圾邮件领域的应用研究,经历了一个从贝叶斯算法开始(2002年Paul Graham公开发表“A plan for spam”,被认为是将Bayes算法应用于垃圾邮件处理研究的开端);到各种方法被先后应用于垃圾邮件分类(如决策树、神经网络、支持向量机等),贝叶斯方法被渐渐忽视;再到贝叶斯方法的效率和准确性被重新认识和发现,研究热点逐渐回归这样一个有趣的发展历程。
发明内容
本专利主要提出一种可扩展的多协议支持的垃圾信息过滤方法和装置。该装置默认集成了smtp、pop3、http、cmpp、即时通讯信息(qq,msn)协议支持以及基于行为过滤,基于bayes过滤,基于规则过滤算法支持。二次开发者可以根据需要在该框架上扩展更多的协议和算法支持。
该装置实时的提取出网络中的邮件、网页、短信、即时通讯信息包,并按照相关协议对数据包进行重组,最后调用多线程模块将其保存到相应队列中准备进行信息识别。外围的垃圾短信、垃圾网页、垃圾邮件、垃圾即时通讯信息识别模块如果识别出为垃圾信息就将其丢弃,反之放行。可以根据实际需要扩展过滤算法,也可以利用iptables配置需要过滤协议的类型,更改配置文件后,扩充的功能达到“即插即用”的效果,充分体现了框架的可扩充性。
1透明网桥
工作在透明网桥之上,可以不配置IP地址从而使过滤装置在网络上完全透明,装置采取冗余阵列的形式部署在服务器前端。
装置的网桥使用于以太网的环境下,它跟物理网桥不同,是采用在装有双网卡的PC机上安装相关软件模拟而成,具有网桥的功能,却比网卡具有更高的性价比和更好的软件扩充性。
搭建透明网桥的条件主要有两点:
●硬件条件:
两块以太网网卡,以RJ45接口连接网线。
●软件条件:
开源软件开发包:bridge-utils[26]。
这里不介绍透明网桥的详细配置步骤,参照bridge-utils开源包附带的使用文档。
2数据包重定向技术
本系统运行在透明网桥之上,网卡以混杂模式工作。从网络到主机的IP包先进过PRE_ROUTING钩子点,然后经过FORWARD,最后经过POST_ROUTING钩子点,不会经过LOCAL_IN或LOCAL_OUT。又因为netfilter提供IP包阻断过滤的的钩子点只有LOCAL_IN、LOCAL_OUT和FORWARD,因而,系统选择在FORWARD钩子点注册钩子函数。
系统将钩子函数挂在FORWARD点,钩子函数将检查TCP头,将源端口是25,80等以及目的端口是25,80等的IP包从内核态定向到用户态程序。用户态程序在对该包处理后,再将该包返回FORWARD钩子点,之后该包通过POST_ROUTING钩子点流向网络。
系统使用开发包iptables来架载钩子函数,使用开发包libipq来在用户态接收IP包。用这种方式完成IP包重定向这一功能。
在结合iptables与libipq开发时,不必考虑netlink的通讯机制,因为iptables、ip_queue、libipq已经包含具体实现模块。
3接收和回注IP包技术
本模块在内核空间获取网桥模块传来的IP包,然后将IP包传到用户空间。用户空间设有相应程序接收该IP包,然后进行处理。判断该报文的性质,对于会话过程中的报文,则执行转发操作;否则截留该报文,根据用户空间垃圾邮件过滤程序返回的结果决定转发或者丢弃该报文。
本模块提供了两种IP包的接收方式。
(1)只接收IP包的描述信息。
(2)接收包括描述信息的整个IP包。
同时提供两种回注方式。
(1)回注原IP包。
(2)回注用户自定义的IP包(通过形参告诉IP_QUEUE处理该包的方式:DROP或ACCEPT)。4协议分析技术
IP分片重组的思想:分片处理有一个三级链表,先根据IP分片的目的地址计算HASH值在第1级HASH链表找到相应结点,接着按IP分片中的标志符(identification),以及源,目的地址等找到第2级链表中相应的IP分组结点,最后根据13位的碎片偏移来找到第3级链表中的IP分片结点,最后把IP分组链表粘合起来,形成完整的IP报文,保存在HASH链表中。
TCP数据流重组的思想:用一个HASH散列表来保存每个TCP连接。当一个完整IP包到来时,先检查与当前数据区尾部有没有重合,如果有就进行重叠处理(去掉重叠部分),没有重叠并且数据是很靠后的,那么就将该TCP段加入一个链表,当中间部分数据到来后再进行数据粘合。
该部分用到的数据结构是HASH散列表(即每个HASH结点指向一个双向链表)。当一个IP包到来时,先进行HASH散列表定位。
HASH散列表的定位失败说明没有相应的TCP结点,如果该当前TCP段的标志位是SYN,则说明这是TCP建立连接3次握手的第1次,接着当然就是建立相应的结点以便后面的重组处理。理所当然,接下来就是判断标志位是否为ACK+SYN即是否是第2次握手,后面检查标志位是否为ACK且收发双方的状态是否分别为TCP_SYN_RECV和TCP_SYN_SENT,如果是的话那么第3次握手完成,连接建立。后续工作继续判断标志位是否是RST,是的话就删除该结点,等待重新建立连接。最后的状态处理是连接结束的处理。
这部分的处理不同与IP分片处理,它处理重叠的方法不同,IP分片处理重叠是分别处理分片与上下结点的重叠情况,而这里的TCP数据流重组不是这样处理的,它的核心思想是:先判断当前的段与数据缓冲区有没数据重叠,有的话就处理重叠,如果没有重叠,即数据应该在当前数据缓冲区末数据的后面,那么就先把该数据保存在一个缓冲数据链表中,而不像分片处理那样处理。当处理完当前到来的TCP段后接着搜索缓冲数据链表,看里面有没与当前数据缓冲区数据重叠的结点,有的话就处理该结点,把没重叠的数据连接在数据缓冲区中。这样的处理思想有利于处理TCP段的无序以及重复性。上面的对重叠数据处理时,还得判断当前的数据是不是紧急数据(判断方法就是看标志位的紧急指针位有没置1),是的话就按紧急数据的处理方式处理,不是的话,就按一般的数据处理,即直接把没重叠的数据存入DATA数据缓冲区。
TCP数据流重组的思想:用一个HASH散列表来保存每个TCP连接。当一个完整IP包到来时,先检查与当前数据区尾部有没有重合,如果有就进行重叠处理(去掉重叠部分),没有重叠并且数据是很靠后的,那么就将该TCP段加入一个链表,当中间部分数据到来后再进行数据粘合。
该部分用到的数据结构是HASH散列表(即每个HASH结点指向一个双向链表)。当一个IP包到来时,先进行HASH散列表定位。
HASH散列表的定位失败说明没有相应的TCP结点,如果该当前TCP段的标志位是SYN,则说明这是TCP建立连接3次握手的第1次,接着当然就是建立相应的结点以便后面的重组处理。理所当然,接下来就是判断标志位是否为ACK+SYN即是否是第2次握手,后面检查标志位是否为ACK且收发双方的状态是否分别为TCP_SYN_RECV和TCP_SYN_SENT,如果是的话那么第3次握手完成,连接建立。后续工作继续判断标志位是否是RST,是的话就删除该结点,等待重新建立连接。最后的状态处理是连接结束的处理。
这部分的处理不同与IP分片处理,它处理重叠的方法不同,IP分片处理重叠是分别处理分片与上下结点的重叠情况,而这里的TCP数据流重组不是这样处理的,它的核心思想是:先判断当前的段与数据缓冲区有没数据重叠,有的话就处理重叠,如果没有重叠,即数据应该在当前数据缓冲区末数据的后面,那么就先把该数据保存在一个缓冲数据链表中,而不像分片处理那样处理。当处理完当前到来的TCP段后接着搜索缓冲数据链表,看里面有没与当前数据缓冲区数据重叠的结点,有的话就处理该结点,把没重叠的数据连接在数据缓冲区中。这样的处理思想有利于处理TCP段的无序以及重复性。上面的对重叠数据处理时,还得判断当前的数据是不是紧急数据(判断方法就是看标志位的紧急指针位有没置1),是的话就按紧急数据的处理方式处理,不是的话,就按一般的数据处理,即直接把没重叠的数据存入DATA数据缓冲区。
5多线程调度分析技术
当协议分析模块完成处理后,各种信息得以还原,例如:多个IP包传送的邮件被还原成一封完整的邮件,然后对邮件进行解码并插入到邮件队列中。装置最后维护着一个工作线程池和一个调度线程,如果该调度线程发现线程池有空闲线程时,就调度该线程去邮件队列,短信队列或网页队列取出信息进行过滤处理。这里的过滤处理,本装置集成了基于行为的过滤,规则匹配过滤,bayes过滤。当任何一种过滤机制识别该信息为垃圾时,就直接反馈到回注模块,进行相应的包放行或丢弃操作。
实现过程中,多线程之间的同步问题采用互斥锁加信号量的机制。邮件,短信,即时通讯信息和网页队列采用双缓冲队列实现。
6过滤算法技术
Bayes过滤算法技术:
(1)产生邮件中每个单词为垃圾邮件的概率。
p(w)=b(w)/(b(w)+g(w))
b(w)=(包含单词w的垃圾邮件的数目)/(整个垃圾邮件的数目)
g(w)=(包含单词w的非垃圾邮件的数目)/(整个非垃圾邮件的数目)
(2)第一步算出的这个概率并不是很精确,为了提高判断的准确性,接下来用robinson的算法对p(w)做一些改进。
s=背景信息的浓度。
x=基于背景信息假想的概率,当一个单词第一次出现在一封垃圾邮件中时,对该单词没有更多的信息,就用此值。
n=包含单词w的垃圾和非垃圾邮件的总数。
(3)利用每个单词的概率来计算整封邮件为垃圾邮件的概率。
C-1()为inverse chi-square函数。
因为该函数对非垃圾邮件更加有意义,为了提高算法的准确性,再用(1-f(w))代替f(w)来计算一封邮件为非垃圾邮件的概率S。
联合H,S看一封邮件为垃圾邮件的概率。
概率接近1则判断该邮件为垃圾邮件;接近0则判断该邮件为正常邮件;接近0.5则判断为不确定。
基于行为过滤技术方案
本模块的主要设计思想是:本模块利用支持向量机的方法,对邮件头进行分析,进而只根据邮件头识别出垃圾邮件。首先对邮件进行邮件向量化,然后进行向量优化,去除对分类无效的向量,然后利用训练得到的模型,用C-svc进行2分类。
本模块用svm的思想实现基于行为的过滤,在基于内容过滤前,过滤掉大量垃圾邮件。当不能识别垃圾邮件时,才继续进行后面的基于内容的过滤。
邮件向量化:
邮件头容易伪造的地方有7个字段。
(1)From field;
(2)To field;
(3)Reply-To field;
(4)Delivered-To field;
(5)Return-Path field;
(6)Received field;
(7)Date field
在这些字段中,可能出现下面的情况。
(1)没有这个字段。
(2)有这个字段,但是为空。
(3)邮件地址的用户名为空,比如@sina.com。
(4)邮件地址域名为空。
(5)邮件地址格式不对,比如有*这些符号等。
(6)根据邮件地址域名查不到DNS记录。
(7)邮件地址有两个@符号。
(8)邮件地址没有@符号。
(9)邮件地址只有一个@符号,没有用户名和域名。
(10)Date里面的年是前几年的,比如2004年。
(11)Received太多,也就是经过的路由太多。
同时在上面提到的7个字段的前5个字段中,两两结合又有10种组合。这样相当于有17个组合。这17种组合最后根据前面11种情况最后可以提取106种特征(当然可以更多或更少)。将一封邮件的邮件头相关信息拆分成这106种特征向量的过程称为邮件的向量化。
邮件向量话的设计思想:当一封邮件到来时,提取出前面介绍过的7个字段信息,如果没有就记为空。然后根据这些字段信息和前面的11种情况,将相应的判断结果记录成一个数组的形式。供后面的子模块继续处理。
向量优化:
向量优化的设计思想:上个子模块将邮件优化成了106维向量。但是其中很多特征没有达到区分邮件的目的,比如所有邮件的某维向量都是1或者-1。对于这些向量,在判断或者训练前都要将其去除掉,以免影响到判断效率。
在该子模块设计过程中,设计以下梯度矩阵。
设计这个矩阵能在对样本shrink时候,减少重建梯度的计算量。
训练模型的获得:
训练模型的获得的设计思想:本子模块采取的是C-SVC,所以目标函数的对偶函数是。
本子模块接收向量优化过的训练邮件向量,利用支持向量机的思想,关键计算几个重要参数。
以及最优解α=(α1,α2,α3,...αl)T
然后选取一个正分量求出
最后将计算结果和训练数据向量信息写入模型文件。
C-svc两分类:
C-svc两分类的设计思想:本非线形支持向量机使用的核函数是径向基内核函数。
K(xi,xj)=exp(-γ||xi-xj||2),γ>0
本子模块首先载入训练得到的模型文件,然后利用其中的关键参数以及邮件向量优化后的结果,传入决策函数,最后得到判断结果1(正常邮件),-1(垃圾邮件)。决策函数如下。
规则过滤算法设计
本模块的主要设计思想是:本模块的设计参照SpamAssassin的规则方法,依据本项目自定义规则集对邮件头和邮件体进行模式匹配,对模式匹配中标的规则执行分值叠加操作,得到邮件体的综合评分值,再与邮件头分析模块得出的邮件头分值叠加,得到该邮件的总分值,与系统预设垃圾邮件阈值比较以判定该邮件是否为垃圾邮件,作为对该邮件执行阻断或进一步过滤处理的依据。
本模块的输入为邮件头分析模块传递来的邮件指针和邮件头评分值,输出为基于综合评分得出的关于该邮件是否为垃圾邮件的判定值(0:Pending;1:Spam)。
(1)系统规则
系统规则是指为识别垃圾邮件而预先定义的缺省规则,一般是一些基本的、通用的规则,随着垃圾邮件发送技术和垃圾邮件内容的变化,系统规则需定期更新,以确保系统对垃圾邮件的识别率。系统规则的产生是通过采用基于boosting tree的文本分类技术学习垃圾邮件而得到,并采用基于神经网络的反馈技术进行增量学习,定期更新。
本系统采用的系统规则格式为SpamAssassin兼容格式,基本格式如下:
Section rule_name regular_expressionDescribe rule_name descriptionScore rule_name value_number |
其中:
·Section:区段标识,可以是信头、信体、原始邮件、URI等等;
·Describe:描述字段标识;
·Score:分值字段标识;
·rule_name:规则名;
·regular_expression:规则字符串(正则表达式);
·description:规则描述语句;
·value_number:该条规则对应的具体分值(如:0.03);
正则表达式是一种可以用于模式匹配和替换的强有力的工具,它(也可以表示为regexes,regexps或Res)广泛使用在很多搜索程序里,比如:grep和findstr,文本处理程序如:sed和awk,和编辑器程序,如:vi和emacs。一个正则表达式就是一种方法,这种方法能够描述一组字符串,但不用列出所有的字符串。它可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。于是正则表达式的处理就很重要,它直接关系到模块的性能和处理能力。
Regular_expersion采用的是flex中的正则表达式,它是perl正则表达式的一个子集。下面我们对flex正则表达式作简单介绍:
`x′匹配字符’x’
`.′除换行之外的任何字符(字节)。
`[xyz]′说明了一个“字符类”;此时,模式匹配`x′、`y′或`z′中的任何一个。
`[abj-oZ]′带有范围的“字符类”;匹配’a’、’b’,’j’到’o’之间的任何字母,或者’Z’。
`[^A-Z]′“非字符类”(negated character class),可匹配除“非字符类”中声明的字
符以外的所有字符,本例中,匹配除大写字母外的所有任何字符。
`[^A-Z\n]′除大写字母和换行外的任何字符。
`r*′零个或多个r,r可以是任意的正则表达式。
`r+′一个或多个r
`r?′零个或一个r
`r{2,5}′2到5个r
`r{2,}′2到无穷个r
`r{4}′匹配恰好4个r
`{name}′此处将按照前面关于″name″的定义进行展开。
`″[xyz]\″foo″′将foo按照字面意思匹配,等同于:`[xyz]″foo′,’\’为转义符号
`\x′如果x是`a′,`b′,`f′,`n′,`r′,`t′,或者`v′,那么\x将被解释为ANSIC-C字符,
否则,将按字面意思解释`x′(用于转义像`*′这样的操作符)
`\0′a NUL character(ASCII码0)
`\123′以八进制数123表示的字符
`\x2a′以十六进制数2a表示的字符
`(r)′匹配一个r;圆括号用于改变原有字符的优先级
`rs′在正则表式r之后匹配正则表达式s;这种方式称为:“连接”
`r|s′表示匹配正则表达式r或者正则表达式s
`r/s′表示仅当s被匹配时,才匹配r。`/′本身不匹配任何字符,当需要确定那个规则是最长匹配时,由s匹配的文本将被包括进来,需要注意的是,在动作(action)被执行之前,由s匹配的文本将被退回到输入缓冲区中。因此,在执行动作时仅能看到匹配r的文本(注:这意味着yytext将不包含匹配s的字符,而且它们也不会记入yyleng中)。这种类型的模式称为右上下文模式(trailing context)。(flex不能正确识别某些`r/s′的组合;)
`^r′仅在行首位置匹配r(即扫描开始的位置,或者扫描到一个换行符之后)。
很容易通过创建一个正则表达式(或者叫regex)来声明一个模式,即一条规则,所有这样的SA格式的规则组成系统的规则集。为使系统达到最优的执行效率,在使用之前,系统将这组规则集自动转化为二进制模式的有限自动机,其最终方式以Linux下动态连接库的方式存在。
(2)用户规则
用户自定义规则是指本产品用户可以自行设定一些管理规则,以严格阻断某些敏感邮件,或者当某些特定类型的邮件流经本网桥时向用户报警(本产品预留报警接口,可以应用户需求采取邮件报警或手机短信报警)。本系统采用的用户自定义规则基本格式如下:
Type:规则类型Key:关键特征Name:规则名称Score:分数Description:描述 |
用户规则由用户管理模块中的相应界面输入,其保存格式系统自动维护。
(3)规则生成
规则生成是指将SA格式的文本方式规则集转换成系统所需的二进制形式,其最终以系统的动态链接库形式存在。这样做的目的是提高系统在进行规则判断时模式匹配的效率,其具体步骤是:
A将SA格式的文本方式规则集转换成flex所要求的格式
B调用Linux系统下开源工具flex将flex格式的规则转化为C++源程序
C调用G++对所得的C++源程序进行编译
D调用G++将编译所得的文件及其它所需的文件进行链接,最终得到系统所要的动态链接库,即二进制形式的规则集
(4)规则更新
规则更新是指将用户定义了自己的个性规则加入到系统中使之生效。由于系统规则最终是以二进制形式的动态链接库存在,所以规则更新就要将用户定义的SA格式的文本方式规则集和系统的二进制规则集融合。这里采用的方法是:系统中保留一份SA格式的文本方式规则集(系统的二进制规则集由该文本规则集生成),当用户在配置文件中设置更新规则时,系统首先从配置文件中得到用户文本规则集的路径,然后将系统文本规则集与用户文本规则集合并,形成最新的文本规则集。之后调用规则生成模块形成包含用户自定义规则的最新二进制模式的规则集。
7病毒扫描系统可以集成开源的病毒库,例如calm av。对邮件的附件和网页中的文件进行病毒扫描。
附图说明
图1总体框架数据流图;
图2接收和回注IP包模块流程图;
图3IP分片重组流程图;
图4基于行为过滤流程图;
图5基于bayes过滤流程图;
图6规则匹配打分部分整体流程图;
图7规则更新流程图;
具体实施方式
下面结合附图对技术方案的实施作进一步详细描述。
请参阅图1,该图为整个装置的总流程图。在网络信息通过internet(101)从源主机传送到目的主机(110)过程中,数据包重定向模块利用netfilter/iptables(102)将其中的相关协议信息进行扣留,保存在IP包队列中。接收和回注IP包模块(103)将数据包从内核态定向到用户态,然后对数据包进行协议分析(104),主要完成IP分片重组和TCP数据流重组。当TCP数据流重组完成即可得到完成的信息,例如完成的邮件,还原的信息被保存在双缓冲队列中。多线程调度分析模块(105)利用一个调度线程调度线程池中的工作线程,工作线程被唤醒后立即到双缓冲队列中提取信息,接着根据信息的类型分别进行处理,具体有邮件过滤(106),短信过滤(107),网页过滤(108),即时通讯信息过滤(109)。邮件过滤(106)进行了基于行为过滤,bayes过滤,基于规则过滤。后3者进行基于规则的过滤。当过滤模块判断结果为垃圾时,立即交给接收和回注IP包模块(103),利用其回注功能将该信息丢弃,反之放行。
图2为接收和回注IP包模块(103)的流程图,有五个地方可以放置钩子函数,PRE_ROUTING(202),FORWARD(204),POST_ROUTING(205),LOCAL_IN(207),LOCAL_OUT(209)。本装置将钩子放置在FROWARD(204)。当网络数据包经过本装置的网卡时,经过FORWADR(204)时,如果信息的类型为装置支持的协议类型,立即将数据包进行扣留,而不是默认的动作:转发。
图3为协议分析中的IP分片处理流程图。装置利用三级链表的数据结构来进行分片处理。当接收和回注IP包模块(301)得到数据包时,先根据目的IP地址进行第1级链表的定位(302),如果定位失败,创建相应的第1级链表结点(307),反之根据IP包ID,源,目的地址进行第2级链表定位(303),如果不成功,创建相应的第2级链表结点(308),反之判断包是否完整(304),如果是,清除其在第2级链表中的结点(309)。如果不是,接着判断是否是第1个分片(305),是就记录其IP头信息到相应的第2级链表结点中(310),用于粘合IP包(312)时构造IP头。如果不是第1个分片,进行第3级链表定位(306),找到其上下位置。接着处理该分片包与上下位置结点数据的重叠(315)。处理完重叠后,将分片插入到第3级链表中(314)。判断该IP包是否完整了(313),如果完整就进行IP包的粘连(312),然后将完整的IP包递交给TCP数据流重组模块处理。
图4为基于行为过滤的流程图,当多线程调度分析模块(105)从邮件队列(401)中提取出信息后,首先进行邮件向量化(402),形成106维向量。接着进行向量优化(403),将其中的对分类无贡献的分向量去掉。最后利用c-svc(c支持向量分类机)进行信息性质分类。
图5为bayes过滤的流程图,bayes有两种工作模式,如果是学习模式(502),首先打开wordlist(509),然后读训练集所在文件夹中的文件,对一封邮件首先进行分词(511),然后利用bayes的思想进行查询统计,并更新数据库,同时更新wordlist(513)。如果是判断模式,首先打开wordlist(503),接着同样进行分词(505),邮件分类处理(506),得到最后的判断结果,如果是垃圾,立即调用接收和回注IP包模块(103)进行丢弃。
图6为基于规则过滤的流程图。首先从邮件缓冲区中读取1个字符(601),根据该字符改变规则自动机的状态(602),接着根据自动机状态执行相应的操作(603),如此循环,直到读完邮件所有的字符。最后输出邮件的评分结果(605)。
图7为规则更新的流程图。当用户配置文件修改后(701),如果规则需要更新(702),首先合并文本方式的系统和用户规则文件(703),接着生成二进制的规则集(704),如果生成成功(705),加载新规则集所对应的动态链接库(706),并释放原有的动态链接库(707),然后修改配置文件(708),标志更新完毕。如果规则不需要更新,直接加载原有的动态链接库,以提供邮件等信息的规则过滤模块使用。
Claims (8)
1一种搭建在透明网桥上的垃圾信息(垃圾邮件,网页,短信,即时通讯信息)过滤的方法和装置。利用netfilter和iptables实现系统底层包选择,从网络流量中提取出邮件,网页,短信,即时通讯等信息,将其保存在系统内核中的包队列中。
2当权利要求1中有包扣留的时候,利用ip_queue将包从内核态传送到用户态。用户设有相应的程序接收包,接收到包后首先判断是不是最后一个包(如果是邮件,那么最后一个包是\r\n.\r\n),如果是最后一个包,那么就将其id,sequence等信息保存在ip包hash队列中。
3如权利要求2所述的,判断是否是最后一个包后,接着进行ip层到tcp层的协议还原,具体为ip分片重组处理和tcp数据流重组处理。
4如权利要求3所述,当完成ip到tcp数据还原后,得到完整的信息(比如一封完整的邮件),然后将其保存在一个双缓冲队列中。不同协议的信息以不同的标志区分。
5如权利要求4所述,完整信息保存在双缓冲队列中。接着以多线程的机制处理队列中保存的信息,具体为一个调度线程和多个工作线程,当双缓冲队列中的消费队列为空时(消费完),交换双缓冲队列中的生产队列和消费队列(如果生产队列不为空)。调度线程唤醒工作线程,唤醒的工作线程继续前往消费队列提取信息进行处理。当消费队列为空时,所有工作线程睡眠。
6如权利要求5所述,工作线程提取到信息后,根据保存在队列中的地址四元组信息和sequence信息查询ip包hash队列,确保该信息的最后一个包在该hash队列中。
7如权利要求6所述,确保该信息在ip包hash队列中有包与之对应后,根据信息的类型进行不同的处理。
如果是邮件,接着进行基于行为过滤,基于规则的过滤,病毒扫描以及基于bayes的过滤,其中任意一个模块判断为垃圾邮件,就直接丢弃掉该邮件,反之放行。
如果是网页主页信息,接着进行基于规则的过滤。判断结果为垃圾时,丢弃网页,反之放行。
如果是网页文件,接着进行病毒扫描,如果是病毒,丢弃该文件,反之放行。
如果是短信,接着进行基于规则的过滤,如果是垃圾短信,丢弃该短信,反之放行。
如果是即时通讯信息,接着进行基于规则的过滤,如果是垃圾,丢弃该信息,反之放行。
8如权利要求7所述,当信息被判断为垃圾时,直接返回到内核丢弃掉该信息的最后一个包,并且在该最后一个包超时重发时,继续丢弃该包。如果被判断为正常信息,直接返回到内核放行该信息的最后一个包,并且删除该包在ip包hash队列中的相应信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710049316XA CN101330473A (zh) | 2007-06-18 | 2007-06-18 | 一种多协议支持的网络垃圾信息过滤方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA200710049316XA CN101330473A (zh) | 2007-06-18 | 2007-06-18 | 一种多协议支持的网络垃圾信息过滤方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101330473A true CN101330473A (zh) | 2008-12-24 |
Family
ID=40206069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200710049316XA Pending CN101330473A (zh) | 2007-06-18 | 2007-06-18 | 一种多协议支持的网络垃圾信息过滤方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101330473A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917420A (zh) * | 2010-08-04 | 2010-12-15 | 安徽天虹数码技术有限公司 | 工作网络行为防火墙的行为过滤方法 |
CN101795230B (zh) * | 2010-02-23 | 2012-05-23 | 西安交通大学 | 一种网络流量还原方法 |
CN102891852A (zh) * | 2012-10-11 | 2013-01-23 | 中国人民解放军理工大学 | 基于报文分析的协议格式自动推断方法 |
CN103091708A (zh) * | 2011-10-28 | 2013-05-08 | 中国石油化工股份有限公司 | 一种三维地震构造曲率性能优化方法 |
CN104065638A (zh) * | 2013-08-16 | 2014-09-24 | 武开有 | 一种基于邮件服务空间预留的预防邮件炸弹攻击的方法 |
TWI507890B (zh) * | 2014-04-14 | 2015-11-11 | Wistron Corp | Pushlet即時通訊方法及平台 |
CN105391595A (zh) * | 2015-08-12 | 2016-03-09 | 天津可信网安科技有限公司 | 基于工控协议漏洞挖掘用户自定义方法 |
CN108259415A (zh) * | 2016-12-28 | 2018-07-06 | 北京奇虎科技有限公司 | 一种邮件检测的方法及装置 |
CN109600304A (zh) * | 2018-12-21 | 2019-04-09 | 成都九洲电子信息系统股份有限公司 | 基于时间轮邮件数据还原、威胁检测与趋势行为分析方法 |
CN110535758A (zh) * | 2019-10-12 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种邮件处理方法及装置 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
CN111432358A (zh) * | 2020-03-30 | 2020-07-17 | 北京思特奇信息技术股份有限公司 | 一种短信发送方法、系统、介质及设备 |
WO2020151030A1 (zh) * | 2019-01-22 | 2020-07-30 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN111752973A (zh) * | 2019-03-29 | 2020-10-09 | 卡巴斯基实验室股份制公司 | 生成用于识别垃圾电子邮件的启发式规则的系统和方法 |
CN112328412A (zh) * | 2020-11-13 | 2021-02-05 | 重庆航天工业有限公司 | 一种基于linux平台下用户层的ipc通信方法 |
CN113163443A (zh) * | 2020-01-22 | 2021-07-23 | 普天信息技术有限公司 | 核心网数据传输方法及系统 |
CN113918524A (zh) * | 2021-10-24 | 2022-01-11 | 南京城建隧桥智慧管理有限公司 | 一种智慧管理平台信息过滤删除系统 |
-
2007
- 2007-06-18 CN CNA200710049316XA patent/CN101330473A/zh active Pending
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795230B (zh) * | 2010-02-23 | 2012-05-23 | 西安交通大学 | 一种网络流量还原方法 |
CN101917420A (zh) * | 2010-08-04 | 2010-12-15 | 安徽天虹数码技术有限公司 | 工作网络行为防火墙的行为过滤方法 |
CN101917420B (zh) * | 2010-08-04 | 2014-12-03 | 安徽天虹数码技术有限公司 | 工作网络行为防火墙的行为过滤方法 |
CN103091708A (zh) * | 2011-10-28 | 2013-05-08 | 中国石油化工股份有限公司 | 一种三维地震构造曲率性能优化方法 |
CN103091708B (zh) * | 2011-10-28 | 2015-10-07 | 中国石油化工股份有限公司 | 一种三维地震构造曲率性能优化方法 |
CN102891852A (zh) * | 2012-10-11 | 2013-01-23 | 中国人民解放军理工大学 | 基于报文分析的协议格式自动推断方法 |
CN102891852B (zh) * | 2012-10-11 | 2015-07-01 | 中国人民解放军理工大学 | 基于报文分析的协议格式自动推断方法 |
CN104065638A (zh) * | 2013-08-16 | 2014-09-24 | 武开有 | 一种基于邮件服务空间预留的预防邮件炸弹攻击的方法 |
TWI507890B (zh) * | 2014-04-14 | 2015-11-11 | Wistron Corp | Pushlet即時通訊方法及平台 |
US10447796B2 (en) | 2014-04-14 | 2019-10-15 | Wistron Corporation | Pushlet instant messaging framework and pushlet instant messaging method |
CN105391595B (zh) * | 2015-08-12 | 2019-04-19 | 北京威努特技术有限公司 | 基于工控协议漏洞挖掘用户自定义方法 |
CN105391595A (zh) * | 2015-08-12 | 2016-03-09 | 天津可信网安科技有限公司 | 基于工控协议漏洞挖掘用户自定义方法 |
CN108259415A (zh) * | 2016-12-28 | 2018-07-06 | 北京奇虎科技有限公司 | 一种邮件检测的方法及装置 |
CN108259415B (zh) * | 2016-12-28 | 2022-08-26 | 北京奇虎科技有限公司 | 一种邮件检测的方法及装置 |
CN110602155A (zh) * | 2018-06-13 | 2019-12-20 | 网宿科技股份有限公司 | 代理服务器及其处理数据报文的方法 |
CN109600304A (zh) * | 2018-12-21 | 2019-04-09 | 成都九洲电子信息系统股份有限公司 | 基于时间轮邮件数据还原、威胁检测与趋势行为分析方法 |
WO2020151030A1 (zh) * | 2019-01-22 | 2020-07-30 | 网宿科技股份有限公司 | 一种处理数据报文的方法和装置 |
CN111752973A (zh) * | 2019-03-29 | 2020-10-09 | 卡巴斯基实验室股份制公司 | 生成用于识别垃圾电子邮件的启发式规则的系统和方法 |
CN110535758A (zh) * | 2019-10-12 | 2019-12-03 | 北京明朝万达科技股份有限公司 | 一种邮件处理方法及装置 |
CN110535758B (zh) * | 2019-10-12 | 2021-10-01 | 北京明朝万达科技股份有限公司 | 一种邮件处理方法及装置 |
CN113163443A (zh) * | 2020-01-22 | 2021-07-23 | 普天信息技术有限公司 | 核心网数据传输方法及系统 |
CN111432358A (zh) * | 2020-03-30 | 2020-07-17 | 北京思特奇信息技术股份有限公司 | 一种短信发送方法、系统、介质及设备 |
CN112328412A (zh) * | 2020-11-13 | 2021-02-05 | 重庆航天工业有限公司 | 一种基于linux平台下用户层的ipc通信方法 |
CN112328412B (zh) * | 2020-11-13 | 2024-05-07 | 重庆航天工业有限公司 | 一种基于linux平台下用户层的ipc通信方法 |
CN113918524A (zh) * | 2021-10-24 | 2022-01-11 | 南京城建隧桥智慧管理有限公司 | 一种智慧管理平台信息过滤删除系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101330473A (zh) | 一种多协议支持的网络垃圾信息过滤方法和装置 | |
CN106453033B (zh) | 基于邮件内容的多层次邮件分类方法 | |
Katirai et al. | Filtering junk e-mail | |
CN103441924B (zh) | 一种基于短文本的垃圾邮件过滤方法及装置 | |
CN101310295A (zh) | 语音邮件和传真过滤 | |
CN107766371A (zh) | 一种文本信息分类方法及其装置 | |
CN103136266A (zh) | 邮件分类的方法及装置 | |
US20080244372A1 (en) | System for summarization of threads in electronic mail | |
US20080192302A1 (en) | Method and apparatus for summarization of threads in electronic mail | |
CN102404249B (zh) | 一种基于协同训练的垃圾邮件过滤方法和装置 | |
CN105843851A (zh) | 欺诈邮件分析与提取方法和装置 | |
Oda et al. | Increasing the accuracy of a spam-detecting artificial immune system | |
CN105812554A (zh) | 一种智能管理手机短信的方法和系统 | |
CN110363510A (zh) | 一种基于区块链的加密货币用户特征挖掘、异常用户检测方法 | |
Zhang et al. | Filtering junk mail with a maximum entropy model | |
CN110728453B (zh) | 一种基于大数据的政策自动匹配分析系统 | |
CN110213152A (zh) | 识别垃圾邮件的方法、装置、服务器及存储介质 | |
Sun et al. | Design and Application of an AI‐Based Text Content Moderation System | |
CN106230690B (zh) | 一种结合用户属性的邮件分类方法及系统 | |
Chandra et al. | Machine learning framework to analyze against spear phishing | |
CN110990570A (zh) | 一种基于深度学习的邮件落款提取方法 | |
Kumar et al. | Spam email detection using ID3 algorithm and hidden Markov model | |
CN1696943A (zh) | 一种自适应、安全过滤垃圾邮件的方法 | |
CN100583840C (zh) | 一种基于兴趣认知的垃圾邮件识别方法及其系统 | |
CN103684991A (zh) | 基于邮件特征和内容的垃圾邮件过滤方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081224 |