Total Pageviews

Thursday 22 September 2016

关于搭建Tor Relay以及为什么现在 Tor Bridges 更好

Tor 本质是匿名工具,代理非其所长,流量特征明显,所以不鼓励他人在不必要的时候使用 Tor 突破网络封锁。由全球志愿者和义务机构共同支撑的 Tor 网络,服务器之间需要不断握手建立加密认证的 circuit,同时「First Hop」的服务器容易被屏蔽。引用一个这里的观点,如果可以就在前端使用 Shadowsocks 或 VPN 这种突破封锁的工具。毕竟 Tor 的主要作用是匿名!匿名!匿名!
Tor 的结构和工作方式很容易理解,支撑其网络的是许多志愿者,非营利机构,科研院校和图书馆,还有那些布蜜罐的混蛋们,包括 FBI。
Tor
Source:电子前哨基金会,eff.org

Tor 的节点分两种

  1. 第一种是中继节点,而中继节点又分两种:
    • Tor Relay,就是我部署过的,需要加入 Directory。虽然现在 GFW 是通过流量特征屏蔽 Tor,但作为第一跳的 IP 还是可能会被探测屏蔽。
    • Tor Bridges,也是我推荐部署的,第一跳的 IP 不在公共 directory 里,手动获取也方便。
  2. 第二种是 Exit Nodes,出口节点。所谓蜜罐也都是部署在出口节点上的。出口节点以外的访问的目标网站如果不是 SSL,那么从出口到目标网站就是明文的,会暴露 DNS 记录和明文密码。
我自己没搭过出口节点,也不建议在个人的商业 VPS 上这么做。如果自己的 VPS 效能与流量剩余多,可以考虑试一试部署 Tor Relay 或 Tor Bridges,但不要与主页部署在一起,一旦被侦测到后换主机换 IP 重新 Forward DNS 烦了去了。
并且自己搭建中继节点也没有法律风险,不会被主机商掐,他们最担心的就是利用出口节点做 BT 下载,Botnet,滥发垃圾邮件或发起 DDoS 攻击,由于 Tor 的链路是不可回溯的,所有黑锅都得出口节点背,律师函也是发给 VPS 服务商的。欧美国家的出口节点大都是 ISP 或图书馆院校机构,有 abuse desk,很正规。但俄罗斯,巴基斯坦之类的国家,因为当地 ISP 和机房没有欧美那么严格的 Regulations,非常可能被布有蜜罐。中国的 Dedicated IPs 不是 ISP 就是企业,可想而知,在一个 Tor 被穷追猛打的国度出现出口节点,谁敢用?所以一定要在客户端中修改 torrc 排除这些国家。下面第一行是排除这些国家的中继节点,不走那里的服务器。第二行是不从那些国家服务器的出口出去。
ExcludeNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu},{br},{kz},{kw},{lk},{ci},{tk},{tw},{??}  
ExcludeExitNodes {cn},{hk},{mo},{sg},{th},{pk},{by},{ru},{ir},{vn},{ph},{my},{cu},{br},{kz},{kw},{lk},{ci},{tk},{tw},{??}  
当然并不是不排除的国家就安全,美国肯定有 FBI 的蜜罐,东欧的网络犯罪集团也多了去了,野鸡服务器大把大把的,某些不干好事的暗网服务器会放在乌克兰俄罗斯罗马尼亚这些东欧国家。每次使用 Tor 浏览器时看下自己的 Circuit 和出口,过一段时间或 Session 换 New Identity,一切要自己注意。
我经常被分配到瑞典,荷兰,法国与英国的出口,其中,瑞典与荷兰出口相对安全,那里网络自由文化与隐私保护观念深入人心,民间力量与非营利基金会给的资助也多,甚至政府会拨款。 

使用自有的 VPS 做 Tor Relay / Bridges 有下面这些优势

  • 24×7
  • Dedicated IP
  • 安装更新方便
  • 价格便宜
  • 高速出口带宽,骨干网机房
  • CPU 及系统资源一般都处于低效利用,每月 Bandwidth 自己使用有限,索性划给 Tor
  • 情怀
但并不是所有 VPS 主机商都对 Tor 友好,可以 ⌘+F 参考这里。我现有的三家主机商允许部署 Tor Relay / Bridges , 但对于 Exit 都闪烁其辞。
BridgesRelayExit
DigitalOceanYesYesNo
VultrYesYesNo
LinodeYesYesAmbiguous
Tor 上面所说的 " How do I make my University / ISP / etc happy with my exit node? '' 就别看了,中国大学机构和 ISP 封你还来不及,国外正规的出口大都是学术研究机构,公共图书馆和教育科研单位,总之 EFF 在西方学术圈和知识分子阶层挺吃得开,做出口节点什么的大有人支持,abuse reporting 也不指向他们,关系撇得干净。反正出口让有能力也有专业人士帮助的非营利组织做就行了。
至于具体的 how-to,官网 Manuals 里都有,安装完成后 Tor 默认是出口节点,因此要把 /etc/tor/torrc 里的 "ExitPolicy" 那行注释掉或改成 "reject",成为中继节点,想要注册到 Tor Relay List 或者 Unsubscribe 退出的,都在这里。为了防止滥用和超出 VPS Plan 预期,修改下面四个参数并去掉注释,分别是 Tor 的月流量配额,每月清零时间,平均限速和峰值限速。 service tor restart 重启就 OK 了。
AccountingMax 500 GBytes # 每月分配给 Tor 500G 流量  
AccountingStart month 3 15:00 # 每月3号15点(Locale)清零  
RelayBandwidthRate 100 KBytes  # Throttle traffic to 100KB/s (800Kbps)  
RelayBandwidthBurst 200 KBytes # But allow bursts up to 200KB (1600Kb)  
除了 Tor Relay,也可以搭建 Tor Bridges 网桥,但不对客户端广播。只需要在 Exitpolicy 后添加一行 BridgeRelay 1 就行了。为防止被国家防火墙屏蔽 IP,建议想做节点的都设置成 Tor Bridges,隐蔽对外广播,只靠手动获取。
ORPort 443  
Exitpolicy reject *:*  
BridgeRelay 1  # only add this line if you want to be a bridge  
网桥需要自己手动获取,种类很多,但默认的 obfsproxy 的流量特征早被识破,只能在别国使用,对国家防火墙来说 Too Simple!不符合国情。必须要使用 obfs4 (obfs = obfuscation 或 obfuscated traffic,字面理解就是 Tor 的第四代流量混淆技术)。
obfxproxy 的流量特征已被图中的 "Censor" 所识别,必须用 obfs4。Source:torproject.org

  1. "Bridge relays (or "bridges" for short) are Tor relays that aren't listed in the main Tor directory. Since there is no complete public list of them, even if your ISP is filtering connections to all the known Tor relays, they probably won't be able to block all the bridges. If you suspect your access to the Tor network is being blocked, you may want to use bridges." Link: Tor Bridges 
References and Literatures:
  1. Tor FAQ
  2. A few things everyone can do now
  3. Tor Bridges
  4. obfsproxy
  5. Tor Pluggable Transports
  6. Tor Volunteer
  7. Configuring a Tor Relay on Debian / Ubuntu
  8. Good or Bad ISPs
  9. Thanks to EFF and Tor Project