Total Pageviews

Sunday, 2 August 2015

那些有关墙的鸟事

总的来说,是写给好久没在国内互联网乌七八糟的环境下混过的诸位海归同学,以及对技术不大熟悉的菜鸟的,尽量浅显易懂。如果哪一段看不懂,请留言,我再改改。

目录

  1. 大墙的技术分析
  2. 互联网安全指南
  3. 翻墙术

GFW这劳什子,最可恶的地方不是屏蔽“政治不正确”,而是干扰人民正常使用网络的基本人权。真理部的混蛋们把世界上最优秀的互联网服务拦在国门之外,逼大家使用国内高仿且随时可以删除关闭的山寨货,而且用无形的压力强迫人民自我审查,逼大家变成double thinking的精神病。我真没看出这是哪门子的“先进文化前进方向”了,野蛮愚昧倒是堪比“不许片帆入海”的满清。
所以翻墙这事儿就像逃出Shawshank监狱——最好的网络服务大多在监狱的高墙外,逃出升天只能依靠自我救赎。习练翻墙这门武功有点费劲:对手GFW不断变异越来越强;习武者只能不断增加道行,见招拆招——魔高一尺、道高一丈矣。不过不用太担心,给大家壮个胆:本站首页的动态数据更新来自已经被封的friendfeed,没事吧,嘿嘿。毛主席教导我们:一切反动派都是纸老虎。只要大家都行动起来,GFW这个反人类的垃圾连同背后的操纵者同谋者,迟早会被扔进垃圾堆,再被踩上n只脚。北电网络的下场,算是开了个好头。

1. 大墙的技术分析

欲练练翻墙神功,必先……解剖GFW。这样的文章已经很多,这篇转载的文档中可以看到北京邮电大学现任校长方某某如何一手搭建GFW,GFW的历史和发展状况,以及GFW和金盾工程之间的关系;wikipedia辞条防火长城准确性有点问题,不过还是有参考价值;而这篇由清华计算机系的丁旋写的论文状文章GFW的工作原理及突破技术则是实验、数据和GFW具体实现技术的猜测(此文我备份了一份,因为随时可能被和谐)。下面这些是我结合自己的体验写的GFW简化版小结。

1.1. 科普:互联网如何工作

要知道GFW怎么搞事,对互联网的工作原理最好能心里有数,否则尤其是非工程背景的同学,对于翻墙这件稍有技术难度的事情会很迷茫。下面以典型的网络程序——Web浏览器(你正在使用的程序)为例,介绍一下互联网的工作方式。不要当成RFC文档,我就没想写严谨了,所以请计算机系的同学直接跳过。
言归正传,拿本文所在的网页当例子:当你在浏览器的地址栏里输入http://impanda.org/about.php或者通过超链接打开这个页时,浏览器究竟干了些什么?
首先看看这个俗称网址、学名称为统一资源定位符(URL)的字串。我们拿禁售之前从沃尔玛抢购的西瓜刀做一下分拆:
顾名思义,这一串东西是一个网络资源的唯一合法代表,就好象共产党政权是中国的唯一合法代表一样。网络资源可能是一张图、一个武藤兰的小视频,也可能是像本页一样的超文本页将若干个文件聚合在一个页面里呈现出来。
浏览器加载这个URL对应的网页文件(含文本和排版信息,不含图片)的过程大致可分为如下3步:
首先(第1步)浏览器会把服务器的域名翻译成IP地址,这一过程需要用到DNS(Domain Name System,域名系统)。DNS逻辑上可以看成一个辞典,给他域名,它还给你IP地址;之后,浏览器会和网页所在的服务器建立连接(第2步),约定传输数据的格式等,然后正式传输数据(第3步)。
本页还内嵌着若干图片,甚至可能内嵌视频等,浏览器会首先下载/about.php,解析文件内容之后得到图片、视频等文件的URL,然后会继续工作,直到把所有相关的文件全部下载。所有这些文件,都会走上面的这个工作流程。

1.2. GFW阴招揭底

很不幸,上一节说到的“分3步走”的路线方针政策,每一步都会被GFW干扰。如果GFW想把这个网页封锁了,有可能出什么招呢:
  • DNS劫持:下载的第1步是DNS查询,GFW返回一个不存在或者错误的IP地址即可,这样第2、3步啥也拿不到。此手法黑客们惯用,用于窃取密码等。例如伪造一个假的银行网站,然后通过篡改银行域名对应的IP地址的方法,骗你去假网站输密码。GFW搞国家恐怖主义,直接篡改敏感域名的查询结果。猛击此处可以看到GFW的DNS劫持效果的实验。可以看出当DNS查询需要用到境外的DNS服务器时,GFW就开始下小黑手了。经他之手的域名,就不知道解析到哪个岛国去了。这块做得相当高科技,起初只是直接篡改了国内DNS服务器,是可以通过opendns之类绕行的;目前GFW的新科技支持直接修改DNS报文,使得opendns失灵,这就难搞了。
  • 封禁IP:直接在国家的互联网出口上禁止对敏感网站IP的访问。这样在第2步就走不下去了。这是所有封禁里最猛的一招,除了翻墙绕过,别无它法。twitter、youtube、facebook等网站目前受此待遇。
  • 关键字过滤:对于一些没办法封(完全封掉之后反弹太大)的网站,比如google.com,GFW采用了一个敏感词和敏感URL列表,对URL和网页内容进行过滤。如果URL里面含有“王丹柴玲吾尔开希”或者“dajiayuan.com”之类,下载过程会诡异的中断掉,接下来的大约一分钟内,你对这个网站的访问会被临时的、惩罚性的禁止。为了干扰翻墙软件、Proxy和各类搜索引擎,目前除了明文之外,还支持base64、rot13、URL encode等编码。除了http协议之外,其他协议,如用于电子邮件的pop3、smtp协议,上bbs用的telnet协议等,也会被“特别关照”。
需要提示的是GFW部署的位置,它位于国家的互联网出口,相当于网上的“海关”,所以国内的网站GFW是管不着的。这是因为对付国内的网站不需要GFW的高科技,人直接上门查封服务器完事。实在查封不了的大型网站(例如门户、搜索引擎、知名BBS等),会下行政命令让人家删文:这个过程可以是主动发出“删除××的通知”,也可以是威胁强迫各网站自我审查——douban很典型。这个可以用google做一下实验。同样搜索关键字“明慧网”(FLG的官网),访问位于国内的服务器google.cn,没事;访问美国的服务器www.google.com/ncr立马完蛋。如果大家能看到google.com的内容,两相对比,会发现google.cn少了很多东西,所以搜索结果最下方会有“据当地法律法规和政策,部分搜索结果未予显示”,提示这页被Google中国主动太监过了。

2. 互联网安全指南

那么如何在中国大陆地区安全舒适的使用互联网嘞?尤其是工作在媒体、活跃在文化圈,恰恰政治又不总是那么正确的朋友们。你的电脑被某些部门盯上的可能性很高啊。下面有一些总的原则。

2.1. 不要把私有数据放在国内,避免用国内服务传输隐私

这是基本原则。好比如果你把金子放在贼人家里,纵使让坦克帮你运钞,财富仍然朝不保夕。切记!所有的私人数据——blog、微blog、email、聊天工具、在线书签、图片库、在线文档等等——尽量不要使用国内的服务。否则小到被删文,大到网站直接被关,自己码了几天的字直接去google里面刨缓存,绝对是欲哭无泪的。更为危险的是,使用国内ICP的服务,你的一言一行都会被记录在案,到时候很可能惹大麻烦。比如这个例子:“RT @XKnow: RT @Fight4Future: RT @even5435 RT @Blueprint219: 我被刑事拘留時光是QQ聊天記錄就簽到我手軟,現在堅決不用QQ,也沒見活不下去。RT @adeyso 几年前马化腾已经和高院签了份合作协议,QQ聊天记录是可以作为法律证据的。”所有国内的信箱、聊天工具等等都有这个风险。人家的用户注册协议里都会有配合公安办案的条目。在国内恶劣的法律条件下,言论自由当然没有,连隐私也没有任何保障。国外的这些基础服务有严格的法律约束着,而且资金雄厚,不容易倒闭;哪怕被盾,数据本身没事,总能找到翻墙访问的办法——翻墙总比删除好吧。
  • 特别提示之一:微软。它可不属于上述“国外服务商”。有过hotmail向国安部门提供用户邮件作为颠覆国家罪的证据的恶劣先例,live space也干过屏蔽关键词的事。微软为了利润一如既往的龌龊蹩脚讨好政府,和google相比,道德上有很大缺陷。邮件服务请弃之并转投gmail,不得不用的msn里面,切忌谈论敏感事务,能不用尽量不要用。
  • 特别提示之二:skype。它虽然是个美国货,但是在国内访问skype官网【skype.com】,会莫名其妙的跳到所谓的TOM skype 【skype.tom.com】 ——这玩意儿可不是个省油的灯,除了加入广告,还加入了很多它不应该做的事情。例如监听、截获或者什么的。解决方法倒也不难,直接下载Skype安装文件本尊就是了。
为了加深印象,我摘录一下江苏省宿迁市中级人民法院2009年10月16日发布的《郭泉“颠覆国家政权罪”的刑事判决书》被法庭认定的证据部分:
8、物证“神舟”牌笔记本电脑、“明基”牌笔记本电脑、黑色台式兼容机三机各一台、“新科”牌U盘一只、手机两部及公安机关制作的搜查笔录、电子证据检查工作记录、勘验检查照片记录表、提取电子证据清单。证实公安机关对被告人郭泉位于金信花园2号1001室住处和南京师范大学办公地点进行搜查,扣押郭泉上述物品,以及经检查,在电脑及U盘中发现大量《民主**》文本文件、被告人郭泉使用QQ、MSN、SKYPE即时通讯软件账号向他人传送《民主**》文章的记录,经郭泉辨认并确认的情况。
19、被告人郭泉在侦查阶段的供述,证实自2007年下半年以来……及自己在互联网上使用的QQ、MSN、SKYPE等即时通讯软件的账号等情况。
呵呵,怕了吧?~~
淡定……要淡定……
我自己使用的私人数据服务清单奉上,供诸位纠结君参考之:
  • 电子邮件:gmail,为数不多的在线程序的功能比本机程序好的例子。
  • 聊天工具:gtalk,聊天记录保存在gmail里,检索方便,界面清爽,接口开放因此很容易和各种服务(例如下面的rememberthemilk和friendfeed)集成,比msn好n倍。
  • 网络电话:Skype国际版,用来打国际长途电话很便宜,打国内电话也不算贵。
  • 在线视频收藏:youtube
  • 文艺评论:douban,这个实在是没办法,国外没有类似的中文服务。
  • 相册:flickr
  • 在线收藏夹:delicious,力荐,配合firefox很好用;Opera Bookmarks,手机浏览器的收藏夹。
  • 在线记事本:rememberthemilk,经常配合手机使用。
  • 在线文档:google docs
  • 在线硬盘:dropbox,很优秀的服务,在网站或者blog贴图之用。
  • 在线地图册:google maps,可以自定义地图,地理信息的分享利器。
  • RSS阅读和评论:google reader,其实是一款翻墙神器也,而且非常好用。
  • 微blog:twitter(码字)、flickr(贴图)、friendfeed(讨论),微博客要用就用最好的,国内的digu、fanfou之类最多做个中转,随时可能被关,不靠谱。
  • 主页、blog:impanda,主机位于美国,因此只要不被盾,上面写啥都行,随便搞搞翻墙中转程序都可以。如果懒得自建blog,找国外的blog提供商也行。

2.2. 传输加密

首先需要弄明白一件事,那些信息需要加密?比如你去匿名浏览163主页,这些通信内容显然没必要加密。需要加密的数据都是和隐私相关的。具体来说有这几类:
  1. 用户名、密码
  2. 电子邮件文本
  3. 通讯簿,社会关系列表
  4. 个人财务信息
  5. 私密电子文档
那么具体在上网过程中,如何加密?
其一,协议加密。注意,某些网络传输协议是没有任何加密的明文,在传输过程中的任何一站都可以通过关键字匹配什么的,将其截获。这样协议有:http、telnet、pop3、基本款smtp……很杯具对吗,大部分internet的常用协议都是明文传输的。从你的机器到被你访问的机器,中间会经过n个路由器。这些路由器,除了离你和对方最近的一两个跳步,其他统统是电信、联通、网通的资产。他们都不可信赖。当初设计时是为了性能——加密解密毕竟会影响性能,而且增大传输的数据量。但现在的互联网环境,江湖险恶,小心为妙。
解决的方法是:如果被访问的机器支持,应该尽量使用加密的协议。例如超文本传输,应尽可能使用https而不是http;传送邮件时,使用tls加密数据流;使用telnet时,可以用ssh加密(水木和ptt都支持);
例如gtalk,请使用它的英文版。中文版gtalk当年根据中国政府的要求,使用了http协议,为了便于在传输过程中“监听”。英文版是https的,没办法监听的。
其二,使用加密压缩传输敏感文件。加密的压缩文件(*.zip、*.7z、*.tar、*.rar……),只要密钥选择得当,暴力破解几乎不可能。举个例子哈。地下党员小A要把一份地下党人员名单用gmail传给他的上峰B,假设她装的压缩软件是7z(winrar之类都是类似的),她的正确做法是:首先右键点击文件,选择7z的add to archive选项(压缩被选中的文件)之后,在弹出的对话框中找到Encryption(加密)框,然后输入A和B事先约定的密码。

2.3. 翻墙,不要怕麻烦

如果你不想沦为信息时代的二等公民,被最好的网络资源和服务拒之门外,还是翻墙吧。具体怎么翻墙,我在下面一部分会讲。

2.4. 养成好习惯

第一个话题是网吧,也包括临时使用其他人的电脑。如果外出旅行,常会遭遇网吧。网吧是一个高危的地方。在网吧里上网不小心,就和嫖妓不带套一样,非常危险。那个地方不仅常常潜伏着非法的木马和病毒,而且公安叔叔们也会安装一堆合法的间谍软件,时刻准备着截获你的密码。在网吧如何保证安全?我给一些建议:
  • 尽量不要使用网吧里已经安装好的软件输入自己的用户名和密码。具体来说:在网吧里,用已经装好的IE,浏览网页无所谓,收发邮件、开QQ聊天,不可以。
  • 随身的U盘里带上自己常用浏览器的安装程序,例如Google Chrome离线安装包,只用自己安装的浏览器登录用户名和密码。
  • 慎用IM,如果一定要用,在自己安装的浏览器里,用Web版的,总之避免在本机留下聊天痕迹。例如:Web QQ、Web MSN、gmail里内嵌的gtalk
  • 离开时清除所有痕迹,卸载已经安装的软件并删除所有用户数据。用chrome的话,很简单——有隐身模式。如果一直在隐身模式下使用,只要关闭了隐身窗口,删除痕迹的事就算大功告成。
第二个话题是,请重视计算机安全,预防木马和病毒。现代病毒已经很少有明显的症状,而且大多数是为了窃取感染者的机密信息牟利。对于绝大多数用户,请安装防病毒软件并保持病毒库最新,同时打开操作系统的自动修补功能。
最后要提醒一下密码的选择。密码常常成为加密体系中最薄弱的一环。建议使用强密码。如何设置强密码,请学习关于密码强度的文档。微软对于强密码的建议是:
  • 长度至少有 8 个字符。
  • 密码中组合使用字母、数字和符号字符。
  • 字典中查不到。
  • 不是命令名。
  • 不是人名。
  • 不是用户名。
  • 不是计算机名。
  • 定期更改。
  • 与以前的密码明显不同。

3. 翻墙术

3.1. SSH

使用SSH的过程,打个比方,相当于你在美国雇了个人帮你收发网页。你的请求(URL)给这个美国佬,他帮你收好,然后把结果寄给你。对于国内可以直接访问的URL,你可以不寄出这份请求,只去要那些国内实在拿不着的数据。
SSH是我比较推荐的翻墙方法。开一个小程序,像拨号一样联接到国外的一台SSH主机上。然后可以指定这个程序作为代理服务器,转发各种需要翻墙的请求。这种方式保持了很高的灵活性。可以配置各种规则,只让被阻拦的地址翻墙,避免访问国内地址也要跑到美国走一遭的悲剧(会很慢)。
具体的方法如下:
  1. 购买SSH帐号。具体怎么买,如果你是我的熟人,直接过来问我好了。
  2. 下载并安装Tunnelier,目前最好的SSH客户端,没有之一。
  3. 配置Tunnelier,这样就设置好了一个sock5的代理服务器,地址127.0.0.1,端口在Listen Port框中指定
    • Login
      Host: 填入主机名称
      Username: 用户名
      Initial method: password
      Password: ****
      Store encrpyted pass…: 选中
    • Options
      Always reconnect: 选中
      Open Terminal: 取消
      Open SFTP: 取消
    • Services
      Socks/Http Proxy Forwarding
      Enabled: 选中
      Listen Port: 1234(或者其他数字)
  4. 修改快捷方式。在快捷方法的命令行里添加 -loginOnStartup
  5. 设置各个应用程序的代理。例如,在firefox里,推荐使用自动代理autoproxy插件

3.2. VPN

VPN,打个比方,相当于把你的机器虚拟的搬到美国去了。你的所有请求,都虚拟的从美国发出。
VPN的优点是强大,缺点是过于强大,导致所有网络流量都要跨好几次太平洋。这样很慢。
解决方案是修改路由表,让国内的地址不走VPN线路,直接访问。可问题有两个:第一,国内的IP段会不断有变化,所以这个路由表也会时不时的修改,这很烦哎。第二,国外的又不是全都被封了,这样还是不如走URL黑名单的SSH来得快。

3.3. https

颇有一些网站,http协议无法访问,https倒是通行无阻。例如Google Reader、Gmail、Friendfeed等等。这是由于http协议是明文,可以用关键字过滤的方式阻断,而https不可能,除了直接封锁https的端口,GFW拿它没办法。
不过国家有关方面已经开始对Google族的https服务端口下毒手,采取10分钟开放、10分钟阻断的恶劣手腕,相当下流。所以gmail现在可能也得靠SSH来撑了。

3.4. hosts文件

适用于被DNS劫持的一些网站。例如flickr、dropbox等。具体方法如下:
  1. 新建文本文件,改名叫hosts,注意:没有扩展名
  2. 将hosts对应关系填入文本
  3. 打开C:\Windows\system32\drivers\etc\
  4. 用外面的文件替换之
至于hosts里面应该填什么,请自行google,找我要也行。

3.5. 一些典型网站的解决方案

  • Twitter:除了用SSH或VPN暴力翻墙,还有大量的第三方解决方案,例如各种私搭乱建的Dabr客户端.
FROM http://b.impanda.org/?p=244