简介
计算机的防火墙,和物理意义上的墙并不一样,物理上的墙建立以后,那就既进不来,也出不去了。而计算机的墙,则是可以对两个方向进行控制。
其实我们今天所说的计算机防火墙,大致有两种,一种是对内的,一种是对外的。
传统意义上的防火墙,一般是用来防止外部访问的,当然,你也可以设置禁止访问某些IP或者网站,禁止内部访问。
>我们使用计算机的时候,会开放很多端口,比如22,139,3389等等,而作为非开发者的用户,往往用不到这些端口。 再考虑到使用这些端口的程序有的时候是有漏洞的,开放了容易被攻击,所以干脆打开防火墙封闭了就好。 这就好比你日常宅在家,并不需要出门,就把锁孔都堵死来保证安全一样。
而我们今天讨论的主角,主要的功能不是阻止别人进来(入侵),而是阻止你出去的。 你访问不了google等大部分海外网站的根本原因: 防火长城,GreatFireWall,简称GFW。
每当谈起互联网的历史,都会有一种恍如隔世的感觉,当年上网大部分的网站并不需要注册,博客随便看,甚至可以匿名评论。就算要注册,有个邮箱就够了,不需要实名制(实名制在今天的体现是大部分网站注册都要手机号)。大家在网上大体友善的讨论,无私的分享,自由的交谈。几乎所有的网站不需要VPN即可访问。搜索引擎就管搜索,聊天软件也只聊天,没有那么多弹窗和流氓软件。那是互联网的田园时代。
和之前的”互联网公司是如何’强奸’用户的”一样,老网虫应该都对这些事情有一些印象,而现大部分人可能并不知道这些黑历史。 不论是寿司之神,还是其他顶级的厨师都说过,要想成为好的厨师,首先要吃得出什么是美食。最近辗转反侧,我觉得有必要把这些内容写出来,让人看见,哪怕只是一两个人,告诉大家互联网原来应该是什么样子的,今天为什么是这个样子。
先来科普下 GFW 是怎么挡住我们的:
- 关键字过滤
- IP 封锁
- DNS 污染、劫持
- 特定端口封锁
- 加密连接的干扰
关键字过滤
大家都知道,比如 Http 协议数据包头部是明文的,所以 GFW 一旦发现连接有敏感词,马上就会伪装成连接两方,向真正的对方发送 RST 数据包,真正的双方一看,出现异常了,那把连接关闭吧。
所以,有时候你会发现有的页面正在打开,然后过了一会又没了,显示无法连接。
IP 封锁
GFW 可以在出境的网关上加一条伪造的路由规则,这样对于一些被过滤了的 IP 的数据包就无法正确地被送达,所以也就无法访问了。
GFW 封路由可是很凶残的,直接封独立 IP ,这样可能因为某个敏感站点,导致跟他同一台主机的其他站点也无法访问,理解起来就像旁注。
DNS 污染、劫持
DNS 也就是域名解析服务,GFW 会对所有经过骨干出口路由的在 UDP 的 53 端口上的域名查询进行检测,一旦发现有黑名单里的域名,它就会伪装成目标域名的解析服务器给查询者返回虚假结果。由于 UDP 是一种无连接不可靠的协议,查询者只能接受最先返回的结果。
而即便我们用可靠的 TCP 协议来查询,虽然 GFW 不能污染 DNS 了,但是可能会被重置(发送 RST),查询者也无法得到返回的 IP 。
特定端口封锁
对于一些特点的 IP ,GFW 会丢弃特定端口上的数据包,使得某些功能无法使用,比如 443端口SSL,22端口的SSH。
GWF 曾经干过一件事,针对 Google 的一些 IP 上的443端口,实施间歇性封锁,不明所以的用户就会觉得这是 Google 抽风了,久而久之自然不能忍受 “老是出问题” 的产品。
加密连接的干扰
加密连接不总是加密的,公钥还是明文的,所以 GFW 就能识别出特定服务的证书。然后在遇到 “黑名单” 加密连接时,它会发送RST数据包,干扰双方正常的 TCP 连接,进而切断加密连接的握手。
即使 GWF 有这么多阴招,我们还是有办法的,本文主要也是说这个的。
VPN
VPN 叫虚拟专用网络,顾名思义你连上 VPN 后,就等于接进了一个 “局域网”,这个局域网里的传输都是强制加密的,你的数据先传到 VPN 服务器,然后再传给真正目标。正是因为加密,所以 GFW 就封锁不了了。
但是,如果某个 VPN 特别猖狂,GFW 直接把 VPN 服务器的域名、 IP 封掉,那这个 VPN 也就用不了了。
加密代理
FanQiang 说到底,都是加密数据。代理的作用就是:把你要访问的目标告诉它,它访问成功后把数据加密返回给你,从而间接使你访问到了被 Q 的目标。
同样,GFW 也可以把代理服务器封掉。
直接访问 IP
毕竟过滤 IP 是黑名单,不可能更新那么及时,而 Google 服务那么多,镜像 IP 很多的。
墙的历史
1987年,中国发出了第一封电子邮件:“Across the Great Wall, we can reach every corner in the world”(越过长城,走向世界每个角落)。从那一年开始,我们用互联网和这个世界联系在一起了,但是就在12年后,那个越不过去长城,回来了。
1998年,为了防止大家访问部分网站,针对IP和DNS的污染,开始了。伴随着污染,墙和梯的较量正式开始。 早期的GFW不能称之为墙,更像是一个补丁,只是单纯的污染DNS,那么我们修改DNS服务器就可以绕过去。 加上国内的DNS也流氓,所以大家大多会把DNS改成Google提供的 8.8.8.8/8.8.4.4
。
这样幼稚的屏蔽方式,政府也知道是不行的,于是,真正的GFW正式登上历史舞台。
除了屏蔽特定的IP或者域名之类,GFW还会审查流量内容,因为当时大部分的网站都没有用HTTPS进行加密,所以流量是非常透明的,审查起来很容易。 当然,也会对URL进行审查,有一段时间Google无法访问,就是因为URL里面又一个叫gs_rfai
的参数,其中“rfa”字样,与在大陆被封锁的自由亚洲电台的网址和英文缩写巧合而被GFW屏蔽。 近几年HTTPS普及了,针对内容审查手段也就慢慢失效了。
墙的其它升级就简单的多了,主要就是两个任务:
- 针对IP、域名列表的扩充,扩大黑名单范围;
- 对新增的翻墙工具的封堵。
这些是功能上的升级,性能上也在升级,据传说16年,GFW就拥有100多台小型机做的集群了(而且,各地的GFW似乎也没能完美的同步(也可能是故意的),大致是以省为单位,有的时候会出现某个网站只能被某些省访问的情况出现)。
举些升级的例子:
- 比如你用HTTP/SOCKS代理翻墙,那我就检测代理的流量特征(于是HTTP/SOCKS代理,卒……)。
- 你用SSH翻墙,我就检测你的流量特征,分析你到底是在执行命令,传输文件还是在打隧道翻墙
- 但是SSH隧道目前仍然可用,技术角度说,完全区分SSH/SFTP和翻墙流量还是有难度的
- 你用GoAgent翻墙,那我就屏蔽Google的所有IP。
- 你用PPTP翻墙,那我就检测PPTP的协议,直接杀。
- OpenVPN也遭遇了PPTP同样的待遇。
- 但是AnyConnect没有,因为很多外企在使用它连接公司内网。
- Shadowsocks也差点遭受和各大VPN一样的待遇,但是因为SS的流量实在难以识别,所以当时(大约2015年)解决的方式更加粗暴:请Shadowsocks的作者喝茶。
- 后来(大约2020年前)Shadowsocks还是被识别了,参见这个报告。
- 目前最强大的工具应该是V2Ray,除了支持的协议多,其中的VMess协议对计算机时钟的要求让这个系统可以抵御一定的流量重放攻击。
- 最近大家开始用Vultr/Linode搭建服务器……这个的确不好管,但是重要节假日(每年10月1日前后,国庆,两会)就批量屏蔽这些IP。
- GFW不仅防止国内用户访问国外主机,有的时候还会禁止一些境外IP访问国内的主机,这样可以屏蔽部分使用内网穿透技术的人。
今天我们怎么fq
- HTTPS代理,TLS给HTTP代理穿上了铠甲,使之又能再战500年。但是考虑到GFW会主动刺探,所以最好将代理的endpoint隐藏在正常网站的某个子路径下。
- SSH隧道,SSH采用非对称加密,再加上有广泛的正常用途(管理服务器)所以目前SSH隧道还是可用的。
- Shadowsocks/V2Ray/GoProxy 其实可以理解为对你的代理流量进行加密和混淆的工具,但是GFW在慢慢尝试识别这些流量。
- 需要特别说明一下的是,GoProxy比较特殊,支持内网穿透。
- AnyConnect等商用方案。
除此之外,还有内网穿透等一系列骚操作,日后我会补充一些教程,教大家如何搭建自己的服务。 当然,这一系列教程不能说**,也不能说科学上网,要说连接公司内网,本质上,在公司外部管理公司内网和**的技术基本一致,但是会多一些诸如混淆之类的不必要操作。
我对墙的记忆
事实上,我个人没有经历过只有DNS污染这个阶段,我第一次感受到墙的威力,是谷歌退出中国。
山雨欲来风满楼,事实上,早在2007~2009年,就开始出现一些Google搜索的负面新闻:
据了解,今年1月和4月,“谷歌中国”网站因存在大量淫秽色情和低俗链接,曾两次被互联网违法和不良信息举报中心公开曝光。近期,举报中心又接到公众举报,经核查发现,“谷歌中国”网站仍然存在大量淫秽色情和低俗信息,包括大量极其低级、丑陋的色情图片、视频和文字。 举报中心有关负责人表示,“谷歌中国”网站未按照我国法律法规的要求做好淫秽色情内容的过滤工作,大量境外互联网上的淫秽色情信息通过该网站传播到我境内,严重违反了《全国人大常委会关于维护互联网安全的决定》和国务院《互联网信息服务管理办法》等法律法规,以及有关行业自律规范,严重侵害青少年身心健康,损害公众利益。 举报中心在强烈谴责“谷歌中国”网站的同时,还建议相关执法部门依法处罚,并希望广大网民继续予以监督。
那么这些色情联想是什么呢:
但是后来有人发现,这些词以前都没人搜索,是在新闻播出的前些天才有人搜索,搜索量还全部来自于北京。
这个事情是百度策划的,的确,深入理解搜索引擎,并且能做出有效的内容攻击,怎么看都不像电视台那帮子文科生能做出来的事情。 只可惜Google的日志留的太全了,被发现了。
很多人说Google退出中国是因为不接受审查,这个是错误的,事实上,Google不是没有配合中国审查,也不只有中国要求Google进行审查。
但是按照规则配合审查是不够的,因为根本就没有什么规则,政府对谷歌(当然对其它所有互联网公司都一样)的要求是自我审查。一般来说,还需要配合网信办等神秘机构做一些舆论引导:
这些舆论引导并不合符合政府一般的办事流程,比如发红头文件,通知,办法之类的。 往往就是个微信消息或者邮件,乃至一个电话,但是不设立专门的部门应对这种不规范的办事方式,公司可能就开不下去。
大致流程就是,你的网站的内容,你自己看着办,我这里只给出精神和模糊的指导意见,但是如果我(政府部门)觉得你内容有问题,那就先约谈,让你再自己琢磨琢磨哪里做错了,要是还是不满意, 我就封鲨你:
简而言之就是:
2010年,Google与政府彻底谈崩了,但是还没等Google关闭服务,首先就遭到了DNS污染,这个时候大家通过修改hosts文件还是可以上Google的,那个时候往上大多流传着好多hosts文件的版本。 后来Google就把google.cn做成了静态页面,指向Google香港,但是随着事态恶化,先是用香港Google搜索国家领导人的时候会自动断开,后来香港的Google也很快不能用了。
就是从这里开始,我感受到了墙,也就是从这里开始,百度的搜索质量开始下跌,广告越来越多,越来越隐蔽,广告质量也下降,出现很多虚假广告,比如莆田系的医院。这些都是后话了。
以及这一篇:深度调查 | 为什么我们不能访问谷歌?(长文慎入) 写的有理有力,调查清晰,证据翔实,部分稍微有些小错误,但是长文难免有纰漏,瑕不掩瑜,我认为值得一读。
墙的设计者
说到墙,不得不讨论一下墙的设计者:方滨兴教授,这个人在中文互联网可谓是臭名昭著。 2011年,方滨兴出现在武汉大学,被学生用鞋子和鸡蛋砸。 同年,方滨兴接受采访的时候说,自己电脑上装了6个VPN。 2013年,方滨兴在微博上发了一条拜年微博,转发评论万余次,大多都是“滚”,评论后被和谐,并被水军洗地。 同年,方滨兴说因为身体原因不再担任北邮校长职务,大家在网络上表示:“祝病魔早日战胜校长”。 搜索引擎上搜索方滨兴,有的时候会联想出来“方滨兴死了吗”。 2016年,方滨兴以杰出校友身份,回到其母校哈尔滨工业大学做题为《定义网络空间安全》的报告。报告中,他试图以韩国政府也架设网络防火墙来论证中国架设网络防火墙的必要性。但由于论证其观点的韩国网页被防火墙阻挡,无法登录,方滨兴只能在众目睽睽之下连接VPN绕过大陆的网络防火墙继续演讲。但连接VPN后,1分钟之内便断线2次,只得用Google搜索网页截屏。由于场面尴尬,报告结束后没有安排任何提问环节。
详细内容可参见Wiki
对于这个人,我只认可他的一句话:中国防火墙与虚拟专用网VPN之间是场“永恒的战争”。
后记
我想说:长远来看,墙一定会倒下。但是事实上我看到的是:墙越来越高,越来越厚。 现在的墙是黑名单模式,但是我总感觉在不久的将来,会出现白名单模式。 一旦出现白名单模式,大部分的翻墙手段都会失效,那是我眼中互联网的末日。
一言难尽
国内网络,发发牢骚罢了