0%

Linux 下使用「裸」Tor

Linux下使用「裸」Tor

Tor 简介

Tor 是实现匿名通信的自由软件。其名源于「The Onion Router」(洋葱路由器)的英语缩写。用戶可通过 Tor 连接由全球志愿者免费提供,包含 7000+ 个中继的覆盖网络,从而达到隐藏用戶真实地址、避免网络监控及流量分析的目的。Tor 用戶的互联网活动(包括浏览在线网站、帖子以及即时消息等通讯形式)相对较难追踪。Tor 的设计初衷在于保障用戶的个人隐私,以及不受监控地进行秘密通信的自由和能力。 ——维基百科

前言

看到标题有些人可能会有疑问,“为什么说是「裸」Tor 呢?”,因为这里说的 Tor 和有些人认为的 Tor 不同。使用 Tor 的大部分用户其实使用的是「Tor Browser」,这是一个「Tor 套件」,它包含了为 Tor 用户特别定制的 Firefox 浏览器(增强了隐私保护以及自带了一些安全拓展等),通过「Tor Browser」,用户可以简单地通过图形界面来启动 Tor,降低了使用门槛。而本文采用的是「不带 Firefox 的单独 Tor」,所以称之为「裸 Tor」。

「Tor Browser」对不精于技术但想保护自己隐私的普通用户来说无疑是非常友好的,但对于我这种「喜欢折腾」的技术宅来说,更希望能够保持精简与高度自定义。鉴于这是一篇「新手友好」的文章,内容不会太深入,主要介绍 Tor 在 Linux 下的基本配置与使用。

安装

主流发行版都有 Tor 的软件包,根据你使用的发行版参照官方 Wiki 进行安装,这部份通常都很简单——几行命令的事,这里我用 Arch Linux 示范安装:

安装 Tor

配置

安装成功后可以通过启动 tor 服务来启动/停止 Tor,在国内网络环境下,直接启动显然是无法成功连接的——Tor 节点早已被国内封锁,启动前需要先配置一个「前置代理」来帮助连接到 Tor 网络,打开配置文件/etc/tor/torrc(在不同发行版,Tor 的配置文件位置可能不一样,如果配置文件不在这个位置请参考发行版的官方 Wiki 或自行上网搜索),在torrc中添加以下配置指定一个前置代理:

Socks5Proxy 127.0.0.1:6666 # 代理地址根据你自己的代理填写

默认情况下,Tor 的 Socks 代理会监听 9050 端口,可以通过torrc中的SocksPort字段修改:

SocksPort 字段

Tor 另外还提供了一个「控制端口」,让「控制器应用」(后面会介绍)能够通过此端口访问到 Tor 的内部,用来监控 Tor 的网络流量、运行日志等,以及其他控制功能。「控制端口」的默认监听端口是 9051,可以通过ControlPort字段修改:

ControlPort 字段

Tor 的节点都是由志愿者提供,其中自然也可能存在「不怀好意」的节点,比如一些国家机构为了打破 Tor 的匿名性,部署了不定数量的「蜜罐节点」。虽然 Tor 的节点都是随机分配的(并且每隔一段时间就会改变线路),但是也要保持警惕(运气是不可靠的)。好在可以通过 Tor 的一些配置缓解(不是解决)这个问题,以降低「蜜罐节点」的威胁,通过ExcludeNodes字段指定 Tor 不要使用来自哪些国家的节点:

ExcludeNodes {cn},{hk},{mo}

开启StrictNodes选项(即使没有节点可用时也不会去尝试ExcludeNodes选项排除的节点,这个选项不开启的话,如果没有节点可用时,Tor 就会去尝试排除的节点,这是危险的!):

StrictNodes 1

如果希望其他设备(在同一局域网内)也能够使用 PC 上运行的 Tor 的话,可以再添加一个SocksPort监听:

SocksPort 192.168.1.5:10240 # 本机的 IP 地址和要监听的端口

这样在同一局域网内的其他设备就能通过192.168.1.5:10240这个地址来连接 Tor 的 Socks 代理。

关于 Tor 的配置,还有很多其他的选项,比如限制 IP/端口 访问等……这里不多介绍了,需要的请到这里了解。

启动

配置好以后,启动 Tor 服务:systemctl start tor,查看 Tor 启动状态:systemctl status tor,如果 Tor 配置 和 「前置代理」都没问题的话,就能看到 Tor 已经 100% 启动:

Tor 启动

现在来测试一下是否成功连接到了 Tor 网络,根据前面自己配置的代理端口(没配置的话默认是 9050)设置浏览器代理,我这里使用 Firefox 的 SwitchyOmega 拓展新建一个代理(直接在浏览器中设置也可以),配置如下:

Tor 代理

配置好代理后,访问 Tor 官方的检查页面

Tor 检查

可以看到已经成功连接到了 Tor 网络,如果其他程序想要使用 Tor 代理,只需要配置程序的代理设置为 Tor 代理即可;如果程序不支持使用代理,那么可以尝试使用 ProxyChains

Nyx

想要检查 Tor 的运行状态和网络流量等信息,可以使用官方推荐的Nyx工具。

安装

Nyx 的安装和安装 Tor 一样简单,安装过程就不演示了,请自行参考官方 Wiki或网络教程。

设置 Tor 访问密码

前面说过,Tor 提供了一个「控制端口」,实际上就是给 Nyx 这类工具使用的。为了安全起见,连接之前需要先给 Tor 的「控制端口」设置一个访问密码,不要使用配置文件默认的密码,使用以下命令生成密码 Hash:

tor --hash-password "你要设置的密码"

执行后会得到一个类似16:3266B495ABCDE7BE60C427803A077AE9F913092837E0635DD4E28A344E这样的字符串,把它复制一下,填入配置文件的HashedControlPassword字段:

HashedControlPassword 16:526AB953967827D5601A347283A93A78DBC9535EE60B7D25737375EC2C

保存配置文件后重载 Tor 服务:systemctl reload tor

使用

运行 Nyx:nyx -i 8889(8889 为 Tor 的控制端口,如果没有设置 Tor 的「控制端口」则不需要 -i参数),然后它会要求输入密码,正确输入你设置的密码后即可进入到界面:

Nyx 界面

由于涉及到隐私的关系,对图片的部分区域进行了模糊处理。

按方向键(左右)可以切换显示页面,总共有 5 页,每页的内容分别是网络流量+ Tor/Nyx 运行日志、网络连接、配置选项、原始配置文件、命令解释器;按m键可以显示顶级菜单栏,通过菜单栏里的选项可以获取新身份(New Identity);按h键显示当前页面的快捷键……

这个工具虽然是命令行界面的,但是却非常的简单易用,关于此工具的具体用法请自己体验。

Snowflake

Tor 在 2019 年发布了新的「可插拔传输」(网桥)“Snowflake”,它使用 WebRTC 来代理通过临时代理的流量。

Snowflake 流量走向示意图

如果你所在的地区没有审查,你可以使用“Snowflake”帮助那些在审查网络中的人们;与此同时,你只需要安装一个浏览器拓展或仅仅是打开一个网站而已。

如果你想通过“Snowflake”帮助他人,有以下方法供你选择:

开始前请确保你的浏览器启用了 WebRTC

  • 浏览器拓展
    安装Firefox拓展Chrome拓展,这将使你成为“Snowflake”代理。它还可以告诉你在过去 24 小时内帮助了多少人。

  • 浏览器
    进入这个网站,点击按钮以启用“Snowflake”,同时你依然能够正常使用浏览器(如切换到其他页面),不要关闭页面就行。

  • 独立(专业)

    使用此方法你将需要安装和配置 Go 来构建独立的 proxy-go 代码,请参考官方文档

Tor 客户端

你在 Windows、Linux、macOS、Android、iOS 上都可以使用 Tor,在官网可以下载到各个平台的客户端。

使用 Tor 应当具备的安全意识

  • 不要使用 Tor 登录日常使用的帐号

  • 不要在任何地方透露自己的个人信息

  • 不要访问使用 HTTP 协议的站点,只访问 HTTPS 站点

  • 避免在 Tor 中进行的网络活动与外网相关联(访问同一台服务器、登录同一个帐号、使用同一个 ID、……)

  • 使用「前置代理」连接到 Tor

  • 对不信任的网站不要启用 JavaScript 脚本(使用 NoScript 拓展)

  • 始终保持 Tor 的版本为最新

  • 退出 Tor 时清除浏览器的历史记录、Cookie、本地存储等数据

  • 在虚拟机中进行要求高安全性的活动,并使用保护隐私相关的 Linux 系统:

  • ……