1、1摘要:BT是目前最热门的下载方式之一。就HTTP、FTP、PUB等下载方式而言,一般都是首先将文件放到服务器上,然后再由服务器传送到每位用户的机器上,该软件相当的特殊,一般我们下载档案或软件,大都由 HTTP 站点或FTP 站台下载,若同时间下载人数多时,基于该服务器频宽的因素,速度会减慢许多,而该软件却不同,恰巧相反,同时间下载的人数越多你下载的速度便越快,因为它采用了多点对多点的传输原理。本文将具体分析在BT中利用Sniffer对数据监听的,从中分析出 BT下载所占带宽。并通过对HTTP代理对应用层协议进行过滤实现对BT的封杀的过程。关键词:BT、 Tracker、HTTP代理一 什么是
2、BT定义BT是目前最热门的下载方式之一,它的全称为“BitTorrent” 简称“BT”,中文全称“比特流 ”,但很多朋友将它戏称为 “变态下载” 。BitTorrent(简称BT,俗称BT下载、变态下载)是一个多点下载的源码公开的P2P软件,使用非常方便,就像一个浏览器插件,很适合新发布的热门下载。其特点简单的说就是:下载的人越多,速度越快。 BitTorrent 下载工具软件可以说是一个最新概念 P2P 的下载工具、它采用了多点对多点的原理,一般简称 BT(BitTorrent) 也就是大家所说的变态下载。该软件相当的特殊,一般我们下载档案或软件,大都由 HTTP 站点或FTP 站台下载,
3、若同时间下载人数多时,基于该服务器频宽的因素,速度会减慢许多,而该软件却不同,恰巧相反,同时间下载的人数越多你下载的速度便越快,因为它采用了多点对多点的传输原理。二 BT 下载过程解析 传统的文件下载服务如 FTP 或者 HTTP 都有一个提供 FTP 或 HTTP 应用程序的服务器,该服务器存放用户需要的文件;一般用户作为客户端,使用 FTP或 HTTP 客户端程序主动连接服务器,在获得授权后即可从服务器下载文件。这种典型的客户端/服务器模式对于文件的合法性、安全性可以很好的控制,但有致命的缺点,当有多个用户同时访问服务器时,由于服务器的性能因素、服2务器连接广域网出口的带宽因素等,会导致用
4、户的访问速度急速下降。另外,在客户端/服务器模式下用户主要使用网络的下行带宽,即从服务器到用户主机的带宽,而上行带宽即从用户主机到服务器的带宽利用率非常低,造成了带宽资源的浪费。在 BT 世界中,所有用户同时扮演客户端和服务器双重角色,当下载的时候,同时使用上行带宽将已经下载的文件部分传送到其他用户;BT 同时应用多进程技术,可以从多个下载源也称为种子的用户主机上同时进行多个下载。因此,下载的用户越多,也即种子越多,从而下载的速度就越快。 BT 应用中需要 Web 服务器和 Tracker 服务器。Web 服务器只负责 torrent文件的发布,Tracker 服务器用于管理 BT 客户端的连
5、接,两种服务器并不需要存放下载文件,因此不会在服务器和用户主机间产生下载流量;而用户之间则建立直接端到端的 TCP 连接,用于传输文件内容。 BT 下载过程可以分为三个阶段:一是从 Web 服务器获取 torrent 文件阶段,二是从 Tracker 服务器下载种子列表以及反向连接验证阶段,三是 BT 客户端之间数据传输阶段。 第一阶段和普通的 HTTP 访问 Web 页面完全一样,没有明显的特征,但是有经验的网络管理员可以判断出哪些热门 Web 站点会发布 torrent 文件,从而在某些场合可以通过禁止这些 Web 站点的访问来禁止 BT。 第二阶段一般也采用 HTTP 的形式进行,Tra
6、cker 服务器使用的端口通常是TCP 的 81、 82、6969、8000、8001、8080,Tracker 通过 HTTP 的 GET 命令参数来接收信息,而响应给客户端的是 Bencoded 编码的消息,在 HTTP 请求的报文中携带了 BT 的特征数值 User-Agent:BitTorrent,通过这些可以识别出 BT客户端和 Tracker 服务器通信的数据流。BT 下载过程的前两个阶段是下载的准备阶段,此过程中的数据流量较小,但信息很关键,禁止这些数据流的通信则意味着 BT 下载无法进行,因此通过这些数据包的特征识别出 BT 业务流在很多场合无法使用。 第三阶段是 BT 客户端
7、之间的数据传输阶段,也是真正的下载阶段。在下载阶段 BT 客户端之间会端到端的建立连接,并且一直维持到一块数据的完成再拆除连接。早期的 BT 应用程序默认的使用 TCP 的传输端口 68816889,这时可以简单的根据端口号来识别一个 BT 流。但最新的 BT 应用程序为了防止被探测而允许用户随意修改 TCP 的端口号,因而基于传输层端口号的识别方法不3再有效。 三、BT 下载的危害31、对硬盘的损害BT 三大指控:高温、重复读写、扇区断块。Bittorrent 下载是宽带时代新兴的 P2P 交换文件模式,各用户之间共享资源,互相当种子和中继站,俗称 BT 下载。由于每个用户的下载和上传几乎是
8、同时进行,因此下载的速度非常快。不过,开发 BT 的人因为缺乏对维护硬盘的考虑,使用了很差的 HASH 算法,它会将下载的数据直接写进硬盘(不像 FlashGet等下载工具可以调整缓存,到指定的数据量后才写入硬盘),因此造成硬盘损害,提早结束硬盘的寿命。此外,BT 下载事先要申请硬盘空间,在下载较大的文件的时候,一般会有23 分钟时间整个系统优先权全部被申请空间的任务占用,其他任务反应极慢。有些人为了充分利用带宽,还会同时进行几个 BT 下载任务,此时就非常容易出现由于磁盘占用率过高而导致的死机故障。 因为 BT 对硬盘的重复读写动作会产生高温,令硬盘的温度升高,直接影响硬盘的寿命。而当下载人
9、数愈多,同一时间读取你的硬盘的人亦愈多,硬盘大量进行重复读写的动作,加速消耗。基于对硬盘工作原理的分析可以知道,硬盘的磁头寿命是有限的,频繁的读写会加快磁头臂及磁头电机的磨损,频繁的读写磁盘某个区域更会使该区温度升高,将影响该区磁介质的稳定性还会导至读写错误,高温还会使该区因热膨涨而使磁头和碟面更近了(正常情况下磁头和碟面只有几个微米,高温膨胀会让磁头更靠近碟面) ,而且也会影响薄膜式磁头的数据读取灵敏度,会使晶体振荡器的时钟主频发生改变,还会造成硬盘电路元件失灵。任务繁多也会导至 ide 硬盘过早损坏,由于 ide 硬盘自身的不足,过多任务请求是会使寻道失败率上升导至磁头频繁复位(复位就是磁
10、头回复到 0 磁道,以便重新寻道)加速磁头臂及磁头电机磨损。因此有些人形容,BT 就像把单边燃烧的柴枝折开两、三段一起燃烧,大量的读写动作会大大加速硬盘的消耗,燃烧硬盘的生命。其次,同时因为下载太多东西,使扇区的编排混乱,读写数据时要在不同扇区中读取,增加读写次数,加速硬盘消耗。 432、对网络带宽的损害当前,以 BitTorrent(以下简称 BT)为代表的 P2P 下载软件流量占用了宽带接入的大量带宽,据统计已经超过了 50%。这对于以太网接入等共享带宽的宽带接入方式提出了很大的挑战,大量的使接入层交换机的端口长期工作在线速状态,严重影响了用户使用正常的 Web、E-mail 以及视频点播
11、等业务,并可能造成重要数据无法及时传输而给企业带来损失。因此,运营商、企业用户以及教育等行业的用户都有对这类流量进行限制的要求。BT 将会占用太多的网络资源,从而有可能在接入网、传输网、骨干网等不同层面形成瓶颈,造成资源紧张,这似乎也是目前运营商包括网通、长宽等封掉 BT 端口的最大理由。33、助长了病毒的传播2005 年 11 月 17 日,公安部公共信息网络安全监察处许剑卓处长在天津AVAR2005 大会上做了中国网络犯罪现状的报告,报告指出,通过计算机病毒和木马进行的黑客行为是计算机网络犯罪的主要根源。调查情况表明,计算机病毒除了通过常规的电子邮件等途径传播外,目前网络上盛行的 P2P
12、软件成为计算机病毒和木马传播的主要途径。这些病毒和木马对企业的安全形成巨大的挑战。34、可能面临着版权侵害的风险Fred Lawrence 是一个美国普通老人,因为自己孙子的缘故惹来了美国电影协会(MPAA )的大麻烦。 Lawrence 的孙子通过 iMesh P2P 服务在家中的电脑下载并分享了 4 部电影,美国电影协会通过 IP 地址找到了他和他的电脑,并以侵犯版权为由要求老人为此在 18 个月中付出 4000 美元的罚金; 现在国内外都在严厉打击盗版,不排除版权作者或机构通过各种网络跟踪技术来找到非法进行 P2P 下载的用户,并提起诉讼或者其他赔偿要求;如果企业员工进行了这些行为,可能
13、由此对企业的形象造成极大负面影响,并可能使得企业遭受其他损失!此外,员工可能通过 BT 等下载一些色情、反动、暴力的等违法的信息,这些信息可能被公安机关检测到,由此可能给员工和企业带来法律风险。四 管住局域网内的BT下载5BT 下载以其独特的优势受到广大用户的喜爱,它在下载的同时还为其他用户提供上传,因此下载的人越多,它的速度越快。不过,麻烦也随之而来,如果多个用户同时使用 BT 进行下载,会占用大量网络带宽,严重影响其他用户的正常工作。我们可以严格限制用户的 BT 下载流量或完全禁止 BT 下载。41 限制带宽BT 之所以会危害到局域网,是因为它占用了大量网络带宽。因此,限制每个用户使用的网
14、络带宽,可以明显缓解 BT 对网络的危害。笔者以大家常用的代理软件 CCProxy 为例,对用户带宽进行限制。在服务器端的 CCProxy 主窗口中,点击“账号” 按钮,弹出账号管理对话框,在属性栏的“允许范围” 中选择“允许部分” ,接着点击“新建”按钮,弹出账号对话框。接下来,限制 IP 地址为“192.168.0.12”的客户机的带宽。在“IP 地址/IP 段”中输入该 IP 地址(图 1),然后设置 “最大连接数” ,默认为“-1”,就是不进行任何限制,在此输入“5”,这样客户机只能和代理服务建立 5 个连接,也就可以限制 BT 下载时使用的线程数。接着在 “带宽(字节/秒)”栏中为客
15、户设置最大的网络带宽,如限制为 100KB/s,则可输入“102400”,最后点击“确定”按钮。这样该客户机只能使用 100KB/s 的带宽,而且它和代理服务器最多只能建立 5 个连接。其它客户机的限制方法与此相同,不再赘述。6(图 1)42 彻底封闭 BT 下载解决 BT 对局域网的危害,最彻底的方法是不允许进行 BT 下载,BT 一般使用 TCP 的 68816889 的端口。由于个人网络防火墙只能封闭本机的 BT 端口,对局域网用户无效,笔者就采用 ISA2004 封闭 BT 端口。在 ISA 控制台窗口中,右键点击“防火墙策略”,选择“ 新建访问规则”,弹出访问规则向导对话框,在“访问
16、规则名称”栏中输入“禁用 BT”,点击“下一步”按钮后,选择“拒绝” 选项,接着在“协议” 对话框中选择“所选的协议”。点击“添加” 按钮,在“ 添加协议” 对话框中点击“ 新建协议”,弹出协议定义向导对话框,在名称栏中输入“BT”,点击“下一步”按钮,进入“首要连接信息”对话框。点击“新建” ,弹出“ 新建/编辑协议连接” 对话框(图 2),在“协议类型”中选择“TCP”,选择方向为 “入站” ,端口范围为“从 6881 到 6889”,然后点击“确定”按钮,接下来一路点击“下一步”按钮,即可完成 BT 协议的定义。(图 2)接着在添加协议对话框中展开“用户定义”,并添加 BT 协议(图 3
17、),点击“下一步”按钮后,指定访问规则源。点击“添加”按钮,弹出“添加网络实体”对话框,展开网络目录,选择“内部”。点击“添加” 按钮,接着点击“下一步”按钮,设置访问规则目标,在网络实体对话框中展开网络目录,添加“外部”,然后进入“用户集”对话框,选择“ 所有用户”并点击“ 完成”按钮。7(图 3)最后在防火墙策略窗口中选中这一规则,并点击上方的“应用”按钮(图 4)。这样局域网内的用户就不能进行 BT 下载了。但该方法也有不足之处,如果 BT软件使用的不是 68816889 的端口,该规则就会失效。由于 BT 端口是可改变的,所以一旦 BT 下载端口发生改变,你就得立即查到新的端口,并将它
18、封掉。8(图 4)加载 PDLM 模块 使用 Cisco 公司出品的 PDLM 模块可以省去我们配置路由策略的工作,封锁效果非常好。上文介绍的两种方法,一个是对数据包的目的地址进行封锁,一个是对数据包使用的端口进行封锁,虽然在一定范围内有效,但不能起到全面禁止 BT 的作用,通过 PDLM+NBAR 的方法来封锁 BT 就存在这个问题了。Cisco 在其官方网站上提供了三个 PDLM 模块,分别为KAZAA2.pdlm,bittorrent.pdlm 和 emonkey.pdlm,可以用来封锁 KAZAA、BT、电驴。在此我们以封锁 BT 下载为例。 建立一个 TFTP 站点,将 bittor
19、rent.pdlm 复制到该站点 ,在核心路由器中使用ipnbarpdlmtftp:/TFTP 站点的 IP/bittorrent.pdlm 命令加载 bittorrent.pdlm 模块。 接下来设置路由策略,具体命令如下: class-map match-any bit BIT match protocol bittorrent 准! policy-map limit-bit /创建一个 POLICY-MAP 名为 LIMIT-BIT 9class bit /要求符合刚才定义的名为 BIT 的 CLASS-MAP drop /如果符合则丢数据包! interface gigabitEthe
20、rnet0/2 /进入网络出口那个接口 service-policy input limit-bit /当有数据包进入时启用 LIMIT-BIT 路由策略 service-policy output limit-bit /当有数据包出的时候启用 LIMIT-BIT 路由策略 如果不想每次启动路由器时都要手工加载 TFTP 上的 bittorrent.pdlm,可以把这个 PDLM 文件上传到路由器的 Flash 中,然后选择 TFTP 服务器的 IP 地址即可。值得提醒大家的是,封锁 KAZAA 或者是 EDONKEY 时,在路由器配置中将“matchprotocol 后的 bittorren
21、t 替换为 KAZAA2 或者 EDONKEY 即可,其他配置和封锁 BT 一样,通过 NBAR 加载 PDLM 模块法封锁 BT 软件后,已经完全断绝了 BT 流量,网络速度也恢复到以前的稳定值了。 限制 NAT 的单用户连接数 在 CiscoIOS12.3(4)T 后的 IOS 软件上支持 NAT 的单用户限制,即可以对做地址转换的单个 IP 限制其 NAT 的表项数,因为 P2P 类软件如 BT 的一大特点就是同时会有很多的连接数,从而占用了大量的 NAT 表项,因此应用该方法可有效限制 BT 的使用,比如我们为 IP10.1.1.1 设置最大的 NAT 表项数为 200;正常的网络访问
22、肯定够用了,但如果使用 BT,那么很快此 IP 的 NAT 表项数达到 200,一旦达到峰值,该 IP 的其他访问就无法再进行 NAT 转换,必须等待到 NAT 表项失效后,才能再次使用,这样即有效地保护了网络的带宽,同时也达到了警示的作用。例如限制 IP 地址为 10.1.1.1 的主机 NAT 的条目为 200 条,配置如下: ip nat translation max-entries host 10.1.1.1 200 如果想限制所有主机,使每台主机的 NAT 条目为 200,可进行如下配置: ip nat translation max-entries all-host 200 使用
23、 HTTP 代理过滤应用层协议 10当 BT 客户端下载时,必须进行 Tracker 查询,Tracker 通过 HTTP 的 GET命令的参数来接收信息,而响应给对方(下载者)的是 Bencoded 编码的消息。在HTTP 请求报文中,携带了 BT 的特征值 User-Agent:BitTorrent。 针对该情况,网络管理员可以通过一些安全管理设备以及流量管理设备,甚至网络管理系统软件,过滤特定的应用层数据包(如 HTTP 数据包),然后根据 BT 数据包中的关键字(BitTorrent),从 HTTP 数据包中过滤 BT 数据包。 控制整体 BT 下载流量 将整体 BT 下载的流量控制在
24、某个范围内。如整个校园网络可以使用的 BT下载流量设定为 1Mbps。校园网络剩余的其他网络带宽资源可以给关键业务或者其他非关键业务使用,有效地防止 BT 下载侵吞大量网络带宽资源。以 Cisco设备为例,具体命令为: access-list 130 remark bt access-list 130 permit tcp any any range 6881 6890 access-list 130 permit tcp any range 6881 6890 any rate-limit input access-group 130 712000 8000 8000 conform-act
25、ion transmit exceed-action drop rate-limit output access-group 130 712000 8000 8000 conform-action transmit exceed-action drop 限制或禁止在特定时间段内的 BT 下载 校园网络工作时间内限制或者禁止 BT 下载,这样工作时间内不会有 BT 下载流量和关键业务竞争,也充分保护了校园网络关键业务。同时,在非工作时间,校园网络也可以自行利用高速的网络资源。以 Cisco 设备为例,具体命令为: time-range test periodic daily 20:00 to 2
26、3:00 access-list 130 permit tcp any any range 6881 6890 time-range test access-list 130 permit tcp any range 6881 6890 any time-range test 保证关键业务专用动态带宽 将校园网络关键业务划分到专用动态带宽中间,BT 下载使用剩余带宽,避免两者竞争。 11某些特定校园网络会使用 BT 下载提供服务。对于这样的校园网络,由于BT 下载具有很高的侵略性,因此需要使用保护机制来保障其他关键业务的正常运行。网络管理员可以通过一些管理软件(如当前国内较为流行的聚生网管之类
27、的)或者网络硬件配置,针对应用流进行较细粒度的速率限制,例如将 BT 用户下载的优先级限制为 5(0 最高,7 最低),带宽限制为 64kbps。这样可以确保 BT软件使用的同时不会影响其他业务的开展,充分保护这些应用。剩余的网络资源可以全部提供给 BT 下载使用。 关于网络上关于“封杀 BT”问题上的争论,仁者见仁,智者见智。总的来说,BT 是 P2P 技术在解决大容量文件的问题上是一种很好的解决方案,它代表着网络发展的一种趋势,是网络资源共享的一种倾向。至于如何对待,在不同的单位不同的场合因根据具体情况具体分析,封杀不是唯一的办法,更不是最终的解决方案。5.0 术语表 PDLM Packet Description Language Module数据包描述语言模块。NAT Network Address Translation网络地址转换 IOS Internet work Operating System网际操作系统HTTP Hypertext Transfer Protocol超文本传输协议FTP File Transfer Protocol文件传输协议PUB Public公开的目录