2007年11月11日 星期日

你所不知的世界奇迹——GFW(防火长城)

上网的时候,和多人会郁闷,为什么自己上网时很多网页都无法打开,尤其是国外的一些网站。也许你会以为是网络暂时不畅,或是网站不安全,或是遭到黑客攻击,或者干脆是自己RP有问题,但是你可能从未意识到,其实绝大多数情况下,都是强悍的GFW的黑手在幕后操作着这一切......

以下资料来源于被GFWed的Wikipedia

防火长城,也称中国防火墙中国国家防火墙,是對中华人民共和国政府在其管辖互联网内部建立的多套网络审查系统(包括相关行政审查系统)的俗稱。其名称得自於2002年5月17日Charles R. Smith所寫的一篇關於中國網路審查的文章《The Great Firewall of China》,取與Great Wall(长城)相谐的效果,简写为Great Firewall,缩写GFW[1],戏称功夫网。隨著使用的廣泛,GFW已被用於動詞,GFWed是指被防火長城所屏蔽。

一般情况下防火長城主要指中国对互联网内容进行自动审查和过滤监控、由计算机路由器等网络设备所构成的软硬件系统。由於中國網絡審查較為完備,中國國內的不合適網站會直接行政干預和關閉,故防火長城主要作用在於對中國境內外的網絡資訊互相訪問進行分析、過濾、阻斷。

然而,利用防火长城等技术手段对网络内容的审查在一定程度上限制了言论的自由,在何种程度上、采取何种手段进行网络审查一直是争议的话题。也有报告认为,防火长城其实是一种圆形监狱式的全面监控,以达到自我审查的目的[2]

此外还有一套网络安全软件構架的金盾工程,它與防火長城的關係目前還沒有明確的看法。

目录

主要技术

域名劫持

主条目:域名劫持

全球一共有13组根(Root)级别的DNS服务器,目前中国大陆有 F、I、J 這3个根域DNS镜像[3]

2002年左右,中国大陆网络安全单位开始采用域名劫持技术,用路由器提供的IDS监测系统来进行域名劫持,防止了一般民众访问被过滤的网站。

关于防火长城的结构猜测

国家入口网关的IP封锁

90年代初期,中国大陆只有教育网高能所公用数据网3个国家级网关出口,中国政府对认为违反中国国家法律法规的站点进行IP封锁,这是有效的封锁技术。对于IP封锁,用普通Proxy技术就可以绕过。只要找到一个普通的海外Proxy,然后通过Proxy就可以浏览自己平时看不到的资讯了。所以,网络安全部门现在通常会将中国政府认为特别反动的网站的网址加入关键字过滤系统,以防止民众透过普通海外HTTP代理服务器访问。

一般情况下,GFW对于海外「非法」网站会采取独立IP封锁技术。然而,部分「非法」网站使用的是由虚拟主机服务提供商提供的多域名、单(同)IP 的主机托管服务,这就会造成了封禁某个IP,就会造成所有使用该服务提供商服务的其他使用相同IP的网站用户一同遭殃,就算是内容健康、正当的网站,也不 能幸免(如森美个人网站,内容并无不當之處,但网站使用的是虚拟主机托管服务,而因为有一个香港BBS亦使用该托管服务,这就造成了GFW为了封锁该BBS,直接把这个固定IP:203.80.210.5封禁了。随之,有82个香港网站由于GFW封锁了这个IP地址,不论合法与否,都不能在中国大陆访问)。

Firefox的「連線被重設」錯誤訊息。当碰触到GFW設定的关键词后,即可能马上出现這種畫面。
Firefox的「連線被重設」錯誤訊息。当碰触到GFW設定的关键词后,即可能马上出现這種畫面。
当Google新闻中的图片地址含有某些敏感字符时被GFW拦截的画面,在图中可以见到网页只开启了部分就停止了。
当Google新闻中的图片地址[4]含有某些敏感字符时被GFW拦截的画面,在图中可以见到网页只开启了部分就停止了。
当Google新闻网在下载带有列入关键字过滤网址网站的图片时,就会导致全站所有透过Google服务器下载的图片全部无法显示或突然出错(画面中的情况是第一条新闻的图片链接是被关键字过滤的网址「philly.com」)。
当Google新闻网在下载带有列入关键字过滤网址网站的图片时,就会导致全站所有透过Google服务器下载的图片全部无法显示或突然出错(画面中的情况是第一条新闻的图片链接是被关键字过滤的网址「philly.com」)。

主干路由器关键字过滤阻断

在2002年左右,中国大陆研发了一套系统,并规定各个因特网服务提供商必须使用。思科等公司的高级路由设备帮助中国大陆实现了关键字过滤,最主要的就是IDS(Intrusion Detection System)--- 入侵检测系统[5]。它能够从计算机网络系统中的关键点(如国家级网关)收集分析信息,过滤、嗅探指定的关键字,并进行智能识别,检查网络中是否有违反安全策略的行为。利用这些设备主要进行IP数据包内容的过滤,如果符合既定的规则,则向该连接两端的计算机发送IP欺骗性质(从前后IP报头TTL值相差较大可知)的RST复位包,干扰两者间正常的TCP连 接,使数据流中断,而在终端主机上会显示连接失败。这种关键字过滤-复位技术只对TCP连接有效(如今被广泛应用的HTTP协议正是使用TCP作为传输层 协议,从目前来看,GFW对HTTP报文的过滤似乎仅限于HTTP头,通常URL请求就位于HTTP头部分,而GFW对HTTP数据部分很可能不作过滤[6],这正是某些用PHP编写的HTTP在线代理能避开关键字过滤的原因,例如PHProxy,它将明文的URL请求放在HTTP数据部分),对UDP(DNS通常使用UDP,GFW对捕获的DNS查询报文也进行关键字过滤并返回伪DNS响应[7], 但因UDP没有复位标志而无法进行传输层的干扰)及其他第四层协议无效,对明文数据有效,对加密数据无效。不同的IDS有可能在一段预定或随机的时间内持 续干扰刚刚被干扰中断的两计算机间的所有TCP通信。所以在访问境外网站时,如果数据流里有敏感字词,即会立即被提示「该页无法显示」或网页开启一些后突 然停止,随后在1-3分钟或更长时间内无法用同一IP浏览此域名或IP地址上的内容,屏蔽时间据猜测和敏感词等级以及所属网站有关。此种过滤是双向的,也 就是说,国内含有关键词的网站在国外不可访问(如在百度搜索一塌糊涂BBS),国外含有关键词的网站在国内不可访问[8]

被屏蔽过滤的关键词主要是与民运法轮功相关的词汇及部分网站的网址上。

  • 在任何海外搜索引擎网站搜索防火长城关键字列表里面的任何关键字时,会马上触发GFW导致「该页无法显示」。
  • 任何海外网站网页中如果含有防火长城关键字列表的小部分关键字时,就有机会触发GFW而导致网页下载突然出错、停止或立即出现「该页无法显示」。
  • 某些特定的海外网站网址会被列入关键字过滤[9],即使IP地址未被封锁,也不能访问。

不过,GFW对于网页中含有的关键字字符并不是100%可以过滤成功,即使某些网页被成功拦截并导致「该页无法显示」,此时只要在浏览器进行多番刷 新就有机会显示出来。而且,GFW还会偶尔出现故障而导致关键字过滤系统失效,此时部分只被网址关键字过滤的网站就能正常使用(如 my.opera.com)。

对于Google.com返回结果中的网页地址进行过滤,对关键字的过滤并 不严格。而Google.com返回的大量网页,中国网络审查更经济而有效的方法便 是像前面所说的一样,而且事实上对于Google.com的审查也正是如此。

从GFW的分布来看,审查过滤系统主要位于国际出口处,但最近通过对审查过滤系统返回的RST复位包IP头进行(TTL值)分析,发现存在两个欺骗 源,其一位于国际出口处,另一个位于骨干网省级接入处。因此推测GFW对于境内的非法内容也具有一定审查能力。值得提到的是,对于境内网络内容的审查主要 是通过ICP备案来实现的。

2007年2 月前后,GFW开始对境外及境内的WAP网站含有的敏感字符进行过滤,原本在移动版Google可以打开的维基百科中文版现已不能通过Google网页转 换功能进行访问,连带的就是在访问含有「zh.wikipedia.org」的Google链接后,5分钟内再次访问Google被阻断。

关键字过滤-复位包分析

Flickr图片服务器网址被列入关键字系统导致无法显示任何图片。
Flickr图片服务器网址被列入关键字系统导致无法显示任何图片。

分析过程采用任意sniffer软件记录HTTP客户端PC进出站数据包,只考虑TCP连接本身,忽略DNSARP及其他。分析进站RST复位包IP头TTL字段值可认为逻辑上存在两个欺骗源(实际可能只是初始TTL不同),为方便叙述,将它们分别称为「伪源1」和「伪源2」,伪源1离客户端PC路由跳计数较大,逻辑位置大致在互联网运营商国际出口处,伪源2离客户端PC路由跳计数较小,逻辑位置大致在互联网运营商骨干网省级大节点处。

  • IP头部分:
    1. Identification(标识)字段:在第一批RST包中,伪源1和伪源2将其设置为一个固定的值,而正常的处理方式是发送的每个IP报文都有不同的标识值,一般按生成次序递增。观察中发现伪源2的第二批RST包中该字段值会改变。
    2. Flags(分片标志)字段:伪源1和伪源2处理方式不同,例如伪源1将DF(不分片)标志置0,伪源2将DF标志置1。
    3. Time to Live(生存时间)字段:如前所述,伪源1的RST包到达客户端PC时经过的跳计数较大,而伪源2较小,且可推测与真正的源物理位置有差距。
  • TCP头部分:
    1. Sequence number(序列号)字段:关键字过滤系统很可能会偶而繁忙导致本地出口堵塞,以致RST包发送延迟并晚于真正的源发回的数据包到达客户端PC,造成 RST包被客户端PC丢弃,从而整个过滤干预行为失败。考虑到这个因素,伪源还具有序列号预测功能,例如伪源2相邻的3个RST包中该值分别相差1460 (以太网默认MSS值)和2920(即1460*2)。
    2. Window size(窗口大小)字段:伪源1和伪源2处理方式不同,例如伪源1似乎为该字段设置了一个随机值,伪源2将其置0。正常的RST包是将该字段置0。

HTTPS证书过滤

部分人发现少数特定证书的传输被阻断,导致HTTPS连接中断。由于HTTPS本身的特点,这并不意味着与网站传输的内容可被破译。

对破网软件的反制

针对网上突破防火长城的各类破网软件,防火长城也在技术上做了应对措施以减弱破网软件的穿透能力。比如每年的特定关键时间点,无界等软件就可能会无法正常连接或连接异常缓慢,这时境内外的正常网络互联亦会受到干扰。[來源請求]

针对Tor, 有分析认为中国大陆公安网络审查部门采取了新的封锁措施——建立虚假Tor节点。鉴于无法真正的完全封锁Tor,网络安全部门在中国国内网络中安装了大量 虚假 Tor节点服务器,所有经过这些"节点"的信息都将被最大程度的审查,与此同时,所有到达这些虚假节点的网络请求都将被屏蔽。有意见认为因为此举会暴露防 火长城的位置,中国大陆公安网络审查部门对虚假节点的设立有所节制。但另一方面,tor节点的大量增加很可能仅仅是因为国内用户增加的缘故,即使存在有虚 假节点,对于使用图形界面Vidalia的用户也可以轻松将含有境内节点的路由删除,以确保安全。

对电子邮件通讯的拦截

2007年7月17日,大量使用中国国内邮件服务商的用户与国外通信出现了退信、丢信等普遍现象,症状为:

  • 中国国内邮箱给国外域发信收到退信,退信提示「Remote host said: 551 User not local; please try
  • 中国国内邮箱用户给国外域发信,对方收到邮件时内容均为「aaazzzaaazzzaaazzzaaazzzaaazzz」。
  • 中国国内邮箱给国外域发信收到退信,退信提示「Connected to ***.***.***.*** but connection died. (#4.4.2)」
  • 国外域给中国国内邮箱发信时收到退信,退信提示「Remote host said: 551 User not local; please try
  • 国外域给中国国内邮箱发信后,中国国内邮箱用户收到的邮件内容均为「aaazzzaaazzzaaazzzaaazzzaaazzz」。

对此,新浪的 解释是「近期互联网国际线路出口不稳定,国内多数大型邮件服务提供商均受到影响,在此期间您与国外域名通信可能会出现退信、丢信等现象。为此,新浪VIP 邮箱正在采取措施,力争尽快妥善解决该问题。」而万网客户服务中心的解释是「关于近期国内互联网国际出口存在未知的技术问题导致国内用户与国外通信可能会 出现退信、丢信等普遍现象,万网公司高度重视,一直积极和国家相关机构汇报沟通,并组织了精良的技术力量努力寻找解决方案。」[10]

有网友推測由於GFW会过滤进出邮件,当发现敏感(关键)字后往两边各发送三个伪造的reset断掉连接,通常都发生在数据传输中间,所以会干扰到内容。[11]

GFW测试

部分网站的IP Tracert图,依次为Google Blogspot、维基百科、亚洲电视
部分网站的IP Tracert图,依次为Google Blogspot维基百科亚洲电视

测试网站IP是否被屏蔽或网址是否被列入了关键字过滤名单,可以使用以下方法。

中国大陆境外

  • 打开这个网站,然后按指引测试(仅测试IP是否被屏蔽)。
  • 打开百度,输入要测试网站网址的全部或要测试的关键字,若返回「无法显示」就证明该字符的关键字过滤生效。

中国大陆境内

对于境外所有不能直接访问的网址:

  • 在浏览器中设置一位于境外的有效的普通HTTP代理服务器。如果能访问,说明该网址可能是被域名劫持或IP封锁(或两者同时生效),需要进一步排查;如果还不能访问,排除网站故障的因素,则该网址已被列入关键字过滤黑名单。
  • 使用操作系统的trace route命令对网址进行IP路由跟踪,windows系统使用tracert -d命令(加参数-d以避免逆向DNS解析等待)。如果在运营商骨干网段出现「timeout」或者「reports: Destination host unreachable」,说明IP封锁生效(也可能是域名劫持,两者很难区分,可以通过设置不同的DNS服务器进行比较)。
  • 如果同时出现设置普通HTTP代理服务器仍无法访问并且trace route路径中断,则IP封锁和关键字过滤同时生效。

会被過濾的网站

所有境外的网站都受到关键词过滤的影响,可能出现暂时不可访问。被固定封锁的网站类型包括:部分色情论坛或网站;所有民运、法轮功或具有法轮功背景的以及在大陆被查禁的宗教的网站;大部分人权组织的网站;反华势力的网站;台湾全部的政府网站;绝大多数香港、台湾的新闻网站或综合网站中提供新闻的分站;海外提供blog或个人网站服务的知名站点或影响较大的讨论或网志型网站;部分个人网站;部分文件寄存网站;

这些类型的网站被封锁的根本原因是因为其网站上发布中国政府不能接受的政治等方面的内容,有些综合性或技术性的网站只是含有少量的或可能牵涉到这些信息而被整体封锁,例如曾经对Google的全面封锁。

注释

  1. 百度日本站被GFW屏蔽 疑与色情内容有关,人民网(中国大陆无法訪問百度日文的原因有观点认为与GFW无关,详情见百度
  2. JR, Crandall, "ConceptDoppler: A Weather Tracker for Internet Censorship", Computer and Communications Security
  3. Asia Pacific Root servers亚太互联网络信息中心
  4. 这一例子的特殊性在于--Google新闻中的图片地址都是以news.google.com开头,因此当请求的图片链接中有关键字被检测到,例如来自 BBC新闻的news.bbc.co.uk,所有来自news.google.com的数据都会被暂时干扰中断。另外值得一提的是,Google的web 服务几乎都采用gzip压缩编码,因此HTTP数据部分即显示的页面内容不太可能被过滤,只有位于客户端HTTP头的请求URL内含有关键字才可能被检测 到。
  5. 思科公司为中国特制了数据包级别的内容过滤路由器(content filtering router),而中国的路由器80%是思科公司的。」正在进行中的「金盾工程」是一个与Novell的合作项目。这个工程将包括生化监控、人工智能自动识别等技术。
  6. 大陆境内可以做这样的简单验证实验:在本地主机安装HTTP服务端程序,例如Apache, 不要加载任何压缩或加密模块,调试完成后(完成的标志是在其他主机上能访问本地页面)在本地主机上用浏览器浏览本地页面,浏览器预先设置一普通的海外 HTTP代理服务器,本地页面文件名不要带敏感关键字,例如默认index.html即可,页面内容任意填充GFW敏感关键字,结果是浏览无碍;然后将页 面文件名改名,带敏感关键字,例如falungong.html(法輪功),结果是访问页面被重置。本地浏览器设置海外代理的作用是强制HTTP数据通过 GFW,也可以在海外的某主机上直接浏览本地页面,只要数据经过GFW即可。
  7. 例如直接使用海外DNS查询主机名6park.com,用sniffer记录进站数据包可以看到若干伪DNS响应,均指向Google,而真正的主机地址是70.85.39.9
  8. Google.cn除外,原因是国外DNS服务器会将此域名同样指向美国的Google服务器。
  9. 例如维基百科中文网的网址(zh.wikipedia.org)列入了屏蔽关键词中,故导致无论使用什么类型或网址的代理服务器都不能正常登入维基中文版。
  10. 万网关于海外邮件通信问题的进展通告
  11. GFW让邮件内容变成了aaazzzaaazzzaaazzzaaazzzaaazzz

参见

外部链接

1 评论:

匿名 说...

你不是一个人在战斗……