西西河

主题:【原创】对付网络尖兵纵横攻略 -- ragtime

共:💬10 🌺24 新:
全看分页树展 · 主题
家园 【原创】对付网络尖兵纵横攻略

事情的起因是

“怎样在复杂情况下突破中国电讯的网络尖兵”
一文,请见链接出处

这里说的是对付网络尖兵监听数据流的攻防。对于扫描的防御手段是防火墙,要仔细设置,不让尖兵的扫描试探进入你的家庭网。这里就不说了。

首先要说明的是家用一般涉及两类网络器件。第二层器件例如交换器(switch)和集线器(hub)。桥(bridge)其实就是交换器,也是第二层器件。第三层器件路由器(router)。网关,NAT也都算是路由器。

点看全图

这张图基本包括了常见家用网结构,上面的是电信希望的,下面的是我们希望的,以下图为准。一般家用网都有一个网关,有NAT和防火墙功能。这个器件向外连接ISP的接入网(中间可能还会有ADSL,拨号等等连接,这里这些细节忽略不计),向内连接家庭网。因为家庭网里有多台机器,所以网关向内先连接一个二层器件(多为网桥)。很多家用网关把这两个器件整合成一个盒子。

在这个网桥后面可以直接联终端机,也可以再联交换器集线器和无线接入点。一般来说在家用路由后面所有机器都用同一个IP地址空间。所有第二层器件在传送Etherenet数据包时都不对包作改动,所以是“透明”的。从IP的角度,一般网路设计人员画图,就把所有用第二层器件连接起来的终端机都放在同一条线上,忽略所有这些中间的第二层器件。同理,如果你直接用第二层器件把几台机器连到ISP端口上,那他一下子就可以发现,因为你的家庭网对他是“透明”的。办法只有把你所有机器的MAC地址都改成一样的。不过这个办法问题多多,一旦超过一台机器同时打开你的网络就乱套了。很多家用网关也支持路桥工作方式,设置成这种模式它就变成了一个第二层器件,ISP可以很容易看到/试探你家庭网。所以要注意。

同样在家庭网内部一样可以再嵌套路由器。路由器可以让你再开辟新的IP地址空间。数据包经过路由的时候,路由会对数据包做一些改变。对IP包改动较小,只减TTL。有的IP options也会需要路由对IP包头作改动,不过一般路由多数不支持这些IP options。但是路由完全重包装Ethernet包头,重写目的和源MAC地址。不过除了以变态为乐趣的人比如我,大概一般家庭网都不会再嵌套路由。所以下面都假设只有一重路由。

有了这样的概念我们就可以引入一个比较形象的说法:我们可以把有多少台终端看成家庭网的宽,把有几层路由看成家庭网的厚度。ISP希望的连接是终端直接联ISP,也就是家庭网的厚度和宽度均为一。而我们要做的是厚度和宽度都大于等于二,绝大多数情况厚度为二,但宽度基本都大于二。攻防战也从这两个方向展开。

对于纵的方向(厚度),争夺的要点就是TTL。这个前文已经有提到过,这里再复述一遍。TTL初始值多为2的指数,比如64或128,ISP看到从客户那里进来的包应该带的就是这个值。但是路由必须递减TTL,所以如果ISP看到63或者127,那就是说在客户和ISP之间有一个路由,也就是说这个客户建了个打算共享的网。解决办法一个就是用一个特殊的不减TTL的家用网关,另一个就是改终端机里的缺省初始TTL值到65或者129。

对于横的方向(宽度),则有很多高地可以争夺,原理都是发现/隐藏同一战线上各台机器的不同行为。举个例子,IP包头里有一个序列号,这是为了IP包分段(fragmentation)而设的。每台机器维持自己的序列。如果ISP发现从某个用户那里出来的IP包有同时出于几个不同的序列,那就说明有共享。其他办法还有检测TCP的序列和一些特别的协议行为等等。

对于横向的探测,如果你几台机器不同时上网的话一般是探测不出来的,也就是说这些方法探测的是某一时间点上宽度。

对于横向的探测找一槌子解决的好办法很困难,多半得针锋相对。针对探测方法找解决方法,比如对TCP的一些探测方法可以用在路由修改TCP包头的方法可以防御,不过不具体知道尖兵到底用哪些比较难设计防御。另外我想了一个办法可以解决一些探测方式。这个办法就是在家庭网内加装一个代理(proxy),其他机器用这个代理上网,不直接向外连接。这样所有向外的连接都是由这个代理来做,从外面来看不管怎么看宽度都是一。这个办法多半不能对所有的应用都适用,不过基于web的应用应该还是可以的,毕竟web代理是很成熟的技术了。其他应用的代理,如果还没有恐怕就得专门写了。

元宝推荐:闲看蚂蚁上树,四月一日,
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河