You are on page 1of 3

编者按:“研究信息安全技术,应用保障系统安全!”本期《技术

技术研究信息安全技术 研究与应用》栏目继续围绕前面《理论探讨》中关于网络安全的话题,

全 从技术研究与应用角度.向读者介绍网络安全中关于P2P网络如何实现流

量控制、uTM技术如何实现网络的综合防御、数据挖掘技术如何在入侵

检测中的应用,以及数字签名技术在电子文档可信显示等内容。

【摘要】本文介绍了P2p应用及其

利用Net6lter框架和 优缺点.对Linux内核的Netnlter/
IpcabIes技术和带宽控制技术进行了
分析,分析P2P协议并提出一套完善
的识别方法。

TC实现P2P流量控制 【关键词】P2P NetfjIter带宽控制


lDtabIes

一苏州大学计算机科学与技术学院张卿陆晓峰冀缫蓊鬻豢囊骥纛凌黪嚣霪鬻翳鬃羹鬻黝

1引言 3 Linux内核的带宽控制技术
P2P是peer_tppeer的缩写,称之为对等联网。IBM对P2P的 Linux从Kemel 2.1.10s就开始支持Qos,既Linux内核本身已

定义是:P2P系统由若干互联协作的汁算机构成,且至少具有如 经提供了相当完整和强大的带宽管理代码[3J。Linux主要使用路
下特征之一:系统依存于边缘化(非中央式服务器)设备的主动协 由工具包(IPRouTE2)的流量控制命令(Tramc control command)

作,每个成员直接从其他成员而非服务器的参与中受益;系统 来进行带宽控制。流量控制模块在概念上可以划分为3部分:队

中成员同时扮演服务器与客户端的角色;系统应用的用户能够意 列策略(Queue Discipline)、分类(cl勰ses)和过滤(filters)。其中每一


识到彼此的存在,构成一个虚拟或实际的群体。简单的i兑,P2P 个嘲络设备(如以太网卡etho)都与一个队列策略相关,队列策略

直接将人们联系起来,让人们通过互联网直接交互。由于P2P应 控制数据报在这个网络设备上怎样来排队,例如,sch-fifo是一
用不依赖于某个具体的服务器,传统的网络管理方法显得力不从 个最简单的队列策略,它只有—个队列,所有分组都按其到达的

心,因此对P2P应用的监控与管理变得尤为重要。 顺序来排列。更加复杂的队列策略可能会使用过滤来区分不同类

2 Netf-Iter框架与lptabIes技术 别的数据报,并对其分别处理。
数据报通常按下面的原则来处理:当一个队列策略的排队
Netfilter提供了一个抽象、通用化的框架,该框架定义的一
个子功能的实现就是包过滤子系统【2】。netfiltef为每种网络协议 函数被调用时,它将在系统中寻找一个与自己相匹配的过滤,然

(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 后用这个过滤将数据报分成对应的分类。而那些没有相应过滤的

这些钩子函数在数据报流过协议栈的几个关键点被调用。一个 数据报,就被系统划分到默认的分类中去。

数据包通过玎etfilter框架时,它将经过如图l所示流程。数据包选 4 P2P协议的识别
择工具Iptables也称为用户空问,是具有可扩展性的规则配置工 要实现对P2P应用的管理,必须先识别哪些是P2P数据流。

具。Netfilter框架提供了一系列的表,每个表由若干个链组成, 哪些不是。目前很多的P2P应用软件都是开放源代码的,我们可
而每条链中可以由一条或多条规则组成。那么Netfilter是表的容 以很方便的知道它们所使用的协议,而另外一些则可以通过抓取

器,表是链的容器,而链又是规则的容器,IptabIes则是对这些 数据包来分析它们的协议。表1列举了部分P2P应用程序及其特

规则进行操作的工具。 征码。
P2P下载工具凭借其速度上的优势,已经完全替代了原先的
Ftp下载工具,迅雷,网际快车等传统下载工具也开始加入P2呦
能。但嘲络上各种各样的P2P下载工具基本上都是参照BitToⅡem
等开放源码的P2旺具,在协议上大同小异,此处不在赘述。但
也有些软件比如迅雷,它的数据经过加密处理,不容易简单识
别。

 
衰1都分P2P应用程序厦其特征码 查udp类型数据包
l应用程序 特征码 备注 retIlm p2p—result;
o糖3 o坤4/ox96 第1.2十宇节
eDonkey

e‰le oxc5 o)【9l/ox92,ox93 第1.2个字节
de厶ult:rettlm 0:
Kad oxe{ox50/o)【59 第l,2十字节

【Gnutell& GHuTELL^或G帅 明文检查



Kaz“ 鼬z“ ・明文检查

卜mex
BnTorrent
xxx一~圳ooo冀嚣篡淼茹:嚣
oxl3 BitTorrent protocol 第l十字节加明文捡叠

5.2为iptabIes添加命令行匹配
咖眦K^叫nPeⅢprotoc01 明文捡蕾

百度下吧 8BiduP2P 明文检查 用户使用Iptables命令行实现对内核netfilter的具体操作,为


^r鲒
PusH slI^1: 明文检壹 了添加新的命令行匹配选项我们需要调用函数registeLmatch来进
行注册,它的入口参数为结构iptablesjnatch,包含以下主要成

5利用Netfmer框架和TC实现P2P流量控制 员:

5.1在Ne删ter中构造新的匹配函数 (1)stmct iptables match★next;Match链,初始为NI几L

(2)ipLchainhbel name:Match名,和核心模块加载类似
在linux2.6内核中,利用Netfilter框架的iptables技术必须先
(3)const cllar★ve巧ion;版本信息
向内核注册自己定义的处理函数:int ipt_fegister_match(struct
(4)size』size;Match数据的大小,必须用IPT AI,IGN0宏指定
ipLmatch+咖他h);注销时使用函数Void ipL.unregister_match(stmct
对界
ipLmatch}match)。这两个函数的核心是stmct ipLmatch结构,
它有如下成员: (5)sizt』use“pacesize;由于内核可能修改某些域,因此size可
能与确切的用户数据不同,这时就应该把不会被改变的数据放在
(1)struct list.Jlead list。初始化为{NuLL,NuLL),由核心使


数据区的前面部分,而这里就应该填写被改变的数据区大小;一

n抛e【I】’T_FuNcTIoNjⅥ&》(]NAM【ELEN一1】。 般来说,这个值和size相同
(2)coIlSt char

Match的名字,该名称必须和模块的名称相匹配 (6)void(★help)O;当iptables要求显示当前match的信息时,就
会调用这个函数
(3)ujnt8j fevision。

(4)int(★match)O。指向具体匹配函数的指针,返回非。表示 (7)void(+init)O;初始化,在paBe之前调用

匹配 (8)int(★parse)O;扫描并接收本match的命令行参数,正确接
收时返回非O
(5)int(★check entry)O。在使用本Match的规则注入表中之前

调用,进行有效性检查,如果返回o,规则不会加入到iptabks中 (9)void(★6naLcheck)O;当命令行参数全部处理完毕以后调
用。如果不正确,应该退出
(6)iptables void(★destroy)O。在包含本Match的规则从表中删

除时调用,于checkentry配合可用于动态内存分配和释放。 (1∞void(★print)O;当查询当前表中的规则时,显示使用了当
前nlatch的规则的额外的信息
(7)stmct module★me。表示当前M3tch是否为模块(NuLL为

否) (11)void(★save)O;按照par!;e允许的格式将本match的命令行参
数输出到标准输出
完成注册之后,主要的工作便是在match函数中过滤网
Iptables将命令行输入转换为程序可读的格式,然后在调
络数据包并判断是否为P2P数据包。部分关键代码如下:
用libiptc库提供的iptc_commit()函数向内核提交该操作请求。
static int match(const stmct sl‘—bu伍★skb,const stmct net—de访ce
★in,const struct neL_device★out,const void★matchinfo,int of豫et,
在libiptc,libiptc.c中定义了ipte_commint(),它根据请求设置了

uIlSigned im pmto匮int★hotdrop) —个struct ipueplace结构,用来描述规则所涉及的表(filter)和

{ H00K点(FORwARD)等信息,并在其后附接当前这条规则的一
switch(ip一>protoc01) 个struct ipL-entry结构。组织好这些数据后,iptc_commit()调用
{ setsockopt()系统调用来启动核心处理该请求。
case IPPRoTo—-TCP:
5.3使用TC命令实现对P2P数据的流量控制

在实现了对P2P数据包的识别之后,我们就可以通过linux的
p2p-result=p2p—.parSe.-t‘P(skb);//检
查tcp类型数据包 带宽控制工具Tc来实现对P2P应用的流量控制,将命令写成脚本
retIlm p2p—result; 文件在系统启动时自动加载。其中关键的命令如下:

) tc adisc add dev ethl mot handle 20:htb de&ult 20//定义新建

c瓠e IPPRoTo—UDP: 下载最顶层根用户规则


{ tc cl∞s add dev ethl parent 20:classid 20:1 htb nte 94000kbps

p2p』esult=p2p—paBe—udp(skb);//检 ceil 940000kb臼s//定义1f):1总下栽带宽94M

 
tc class add dev ethl parent 20:1 chSsid 20:10 htb rate 40kbps 时准确的发现常用P2P应用的数据包如BitTorrent、eMule,
ceil 100kbps prio o//建立一个通道,最小保证带宽40K,最大占 Bitcomet等;另一方面可以将上述P2P应用的下载速度很好的控
用带宽100K。 制在用户设定的允许值之内。利用Linux的带宽控制技术可以为

忙qdisc add dev echl parent 20:10 handlc 201:p丘fo 内网用户设定不同的优先级,将该系统安置在路由器之上,可以


tc 6lter add dev etIll parent 20:protocol ip prio 100 handle 20lO 有效的监控和管理内网用户的P2P流量,实现流量均衡。簟
鼬classid 20:10//建立队列策略和过滤 (责编 张岩)
iptables—F—t Imnde

/sbin/iptables—t mangle—A PoSTRoUTING—m ip2p

一一edk—kazaa—bit—i M AR K一一set—mafk 2010将edk,kazaa和bit应

用的数据打上标记并丢到相应的通道里。

6结论
通过实验该控制系统达到了预期的目标,一方面可以及

1引言 各种后门和跳板的特洛伊木马、利用大 为防火墙主要有三个作用:一是防DOS


随着网络安全威胁逐步呈现出复杂 量傀儡主机进行淹没式破坏的DDos攻击 攻击,二是策略控制,三是地址转换。
化的趋势,单一的安全技术已不能满足复 以及网络资源的滥用和非授权访问等。 作为一个基础的安全策略,防火墙必不
杂网络综合性防御的需要。因而,以整 这些恶意行为在嘲络上肆意泛滥,使得 可少,而且防火墙技术已经相当成熟,
合式安全技术为代表的uTM技术有着越 计算机网络面ll缶的安全困境远超从前。 但这对于安全来i兑远远不够。防火墙只
来越广泛的应用。uTM即unified Threat 2.2网络综合防御的重要性。安全 能对非法}方问通信进行过滤,对每一个
Management,它是由硬件、软件和网络 问题是网络建设与管理中首先要考虑的 数据包进行检查,它不具备检查包负载
技术组成的具有专『J用途的设备,主要提 问题。一般来说,要保护好蚓络内部安 的能力,因而病毒、蠕虫、木马和其它
供一项或多项安全功能;它将多种安全特 全和边界安全,这就需要考虑到安全的 恶意应用程序就能未经检查而通过。并
性集成于一个硬件没备里,构成一个标准 深度和广度。深度就是要保护到什么程 且,当攻击者将攻击负载拆分到多个分
的统一管理平台(IDc定义)。 度,广度就是要保护到什么样的范围, 段的数据包里,并将它们打乱顺序发出
2 UTM发展的必然 是覆盖全部网络还是做到关键部位保 时,即使功能较强的深度包检测防火墙
2.1信息安全威胁的网络化和复杂 护。所以,要考虑好网络的综合防御, 往往也会失效。这就需要另一种重要的

化。随着Internet、Intranet的飞速发展, 做到全方位深入的保护。 网络安全没备lPs,它可以做一些高层次

网络安全问题日益严重,基于网络的信 2.3单一网络安全产品的局限性。 的防护,如拦截掉大部分蠕虫等。但是

息系统面临着多种威胁,如通过系统漏 针对某种安全问题,都有相应的安全防 IPs也不是一个终极安全目标,还有防病


洞自动化攻击并繁殖的蠕虫病毒、提供 护技术。最普遍的就是防火墙技术。作 毒、反垃圾邮件等安全措施互为补充。

You might also like