一种抵御 DDoS 攻击的 IP 追踪技术

目录 互联网产品, 安全

在拾掇家务时,发现一页我在 2008 年 10 月做的备忘录,记录了一个可用于抵御 DDoS 攻击的 IP 追踪技术。当时因为觉得 idea 太小,不值当写成文章投出去。纸张放那里总是占地方,在博客里电子化一下,然后就能销毁了。

Differential Deterministic Packet Marking

这个 idea 是在 IP 协议的基础上做一些扩展,可以帮助用户在 DDoS 攻击时识别攻击数据包和定位攻击者。在理解这个 idea 之前,可能需要先看几篇参考文献:

[1] Z. Gao and N. Ansari, "Tracing cyber attacks from the practical perspective, " IEEE Communications Magazine, vol. 43, no. 5, pp. 123-131, 2005.

[2] A. Belenky and N. Ansari, "On deterministic packet marking, " Computer Networks, vol. 51, no. 10, pp. 2677–2700, 2007.

[3] Y. Xiang, W, Zhou, and M. Guo, "Flexible deterministic packet marking: an iP traceback system to find the real source of attacks, " IEEE Transactions on Parallel and Distributed Systems, vol. 20, no. 4, pp. 567-580, 2009.

这个 idea 主要是在 [3] 基础上做的改进,其 motivation 是仅仅使用标记段 [3] 内容太保守,用标记段再结合 IP 头中已有的信息,可以做得更好。简单来说就是运营商的接入路由器在 IP 头中增加一些标记,服务器在遭遇到 DDoS 攻击时,可以根据接入路由器增加的标记再结合 IP 头中已有的信息,识别攻击流量,以及确认攻击源。

下文的内容基于三个假设:

  1. Source IP 和 ingress router 的接入 interface 的 IP 经常在同一个网段中;
  2. 大部分网络流是正常的网络流而非 DDoS 的网络流。
  3. ingress router 在可控域中,未被入侵。
图1: 典型网络拓扑示意图,来源于[2]

由图中可见,如果主机使用真实IP 的话,Host 1 发出数据包的 source IP 和 router interface 1 的 IP 仅在最后八位不同,Host 2 发出数据包的 IP 和 router interface 2 的IP 也是仅仅在最后八位不同。

由假设有大部分数据包的 source IP 与 router interface IP 在同一个网段中,这样 ingress router 只需在标记段中标记与 source IP 不同的位即可进行追踪。

图2: IP 头和标记段,标记段与[3]相同

在我的 idea 里,Mark 使用的是 IP 头中的 IDENTIFICATION 域,共 16 位(我们也可以用上 TOS,这样就有 19 或者 24 位),其中各个位的作用如图 3 所示:

图3: 标记段内容

入口路由器上执行的标记算法是:

Algorithm:( 16-bit Mark case, RI for Router Interface)

if (SourceAddr RIAddr ) ⊕ & 0xffff8000 = 0 // Case 1
    Mark := SourceAddr ⊕ RIAddr // 1 packet
else if (SourceAddr ⊕ RIAddr ) & 0xff000000 = 0 // Case 2
    Digest := hash(RIAddr)
    for i=0 to 2 // 3 packets
        Mark[i].M := 1
        Mark[i].A := 0
        Mark[i].seg := i
        Mark[i].digest := Digest
        Mark[i].address_diff := ((SourceAddr ⊕ RIAddr) >> (i*8)) & 0xff
else // Case 3
    Digest := hash(RIAddr)
    for i=0 to 3 // 4 packets
        Mark[i].M := 1
        Mark[i].A := 1
        Mark[i].seg := i
        Mark[i].digest := Digest
        Mark[i].address_diff := ( RIAddr >> (i*8)) & 0xff

我提出的新 idea 对 [3] 的改进能够带来以下几个好处:

  1. 大部分数据包仅靠 1 个包就可以 traceback。根据上面的假设,正常的数据包应该仅仅在 IP 地址的低位与路由器接口 IP 不同,这样仅仅需要在 mark 中的低 15 位与源 IP 异或就能得到路由器接口 IP(case 1)。
  2. 加快路由器对正常数据包的处理速度。由于正常的数据包仅需要 1 个包就能 traceback,不需要计算地址的 hash 值,大大加快了路由器对正常数据包,也是大部分数据包的处理速度。
  3. 不影响正常 IP 数据包的 fragment 策略。由于大部分正常的数据包仅仅需要一个包就能 traceback,那么修改 IDENTIFICATION 域对这些数据包的 fragment 策略毫无影响。对于非正常的数据包,本算法需要多个包才能 traceback,所以对其 fragment 策略会有影响,但由于它是非正常的数据包,不用考虑后果。

之所以觉得这个 idea 小,有两个原因:

  • 第一是在别人方案基础上做的改进,创新不够;
  • 第二是需要部署到全网(至少某个运营商内部)所有接入路由器上,(尤其在 IPv6 已增强安全性的前提下)不太可能实现。

这也符合我对很多研究的看法,虽然有意义,但在工程上基本价值不大,基本上就自己 YY 一下。

网站被认证

目录 网站分析

经过各方证实,我确定了这个域名现在(2011年6月10日)已经被“认证”了。目前显示出来的现象是第一次访问大部分可以成功,点击页面链接就可能会被 reset。

不要问为什么会这样,我也不知道。不过我心理早就预期到可能有这一天,因而一切仍然会继续,除了要费点劲儿。不感慨了,引用菜头一句话:

鲜花总会长出来,不在墙这边相见,就在墙外面思念。

关于话题的吸引力

目录 互联网产品, 读书

上上个周末我参加了一个培训,一位来自 Intel 的培训师在介绍营销方式的时候,提到了一本叫做《粘住:为什么我们记住了这些,忘掉了那些?》的书。从这本书里,我读到了一些有趣的观点,因而迫不及待地想找个实例验证一下。

下面,就是我找到的实例,一个话题:

刚一哥儿们跟我说,当初他博客开在百度,百度擅自拿了他的文章去发布,被投诉之后先是关了他博客,然后被逼问之后又打开博客然后往上放了一堆黄色图片,说要他负责任,这公司真不一般…
一个话题

关于这个话题发生了什么事情呢?

Retweeted by cyclamen and 28 others
RT

被 retweet 了 28 次,不算多哈。但 Twitter 一般只标记官方 retweet 结果,那么 Google 搜索一下:

找到约 176 条结果 (用时 0.05 秒)
搜索结果

还不错哦,仅仅是三天时间,Google 就能搜索出 176 条结果。虽然比不上“私奔”、“抢盐”的话题,但作为一个没有幕后推手(至少我没看出来)的话题,也算是个不错的成绩了。至少,我不知道自己产出的哪些话题在这么短时间内达到过这样的效果。因此,这是一个不错的分析目标。

《粘住》中说,一个好的创意应该会包含 6 个基本要素:简约(Simple)、意外(Unexpected)、具体(Concrete)、可信(Credible)、情感(Emotional)、故事(Stories) 。来看看上面这个话题,是不是一个好的创意。

  • 简约:这一点应该没有人怀疑,在140个字以内(事实上作者只用了 86 个字),讲活了一个故事,既有转折也有评论点题,不可谓不简约。
  • 意外:这得看对谁来说了。对某些人来说,这可能是又一次验证了他一直以来持有的看法而已;对另外一些人,可能会认为一间大公司跟一个小博主过不去这件事情很意外。
  • 具体:在 86 个字中,作者描述了一个无奈又悲愤的博主,和一个强有力的罪恶大公司,动作和语言活灵活现。仿佛这件事情就发生在自己身边,那个朋友就是自己朋友一般,非常的具体。
  • 可信:单从话题内容来看,并不足够可信,因为细节太少,5W 和 1H 缺失了不少。但是由于 Twitter 的开放性,一些名人的 retweet 倒是可能让读者增加不少可信度。
  • 情感:这个话题描述了一个鸡蛋撞向石墙的画面,你我都知道,不难引起共鸣。对于大众来说,毫无威胁地站在鸡蛋这面是很容易的!伤及切身利益时,才会剩下真的勇士。
  • 故事:这是一个故事吗?

可以看到,除了在“可信”上有一些问题,这个话题还算是一个不错的创意,那么有前面那样的吸引力成绩也不算奇怪了。在《粘住》的开头,还为分析创意是否有黏性提出了一个简单的标准:当你看完故事一小时之后,是否能对别人复述出来?要不你来试试?