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 网络,打开配置文件/etc/tor/torrc
(在不同发行版,Tor 的配置文件位置可能不一样,如果配置文件不在这个位置请参考发行版的官方 Wiki 或自行上网搜索),在torrc
中添加以下配置指定一个前置代理:
|
默认情况下,Tor 的 Socks 代理会监听 9050 端口,可以通过torrc
中的SocksPort
字段修改:
Tor 另外还提供了一个「控制端口」,让「控制器应用」(后面会介绍)能够通过此端口访问到 Tor 的内部,用来监控 Tor 的网络流量、运行日志等,以及其他控制功能。「控制端口」的默认监听端口是 9051,可以通过ControlPort
字段修改:
Tor 的节点都是由志愿者提供,其中自然也可能存在「不怀好意」的节点,比如一些国家机构为了打破 Tor 的匿名性,部署了不定数量的「蜜罐节点」。虽然 Tor 的节点都是随机分配的(并且每隔一段时间就会改变线路),但是也要保持警惕(运气是不可靠的)。好在可以通过 Tor 的一些配置缓解(不是解决)这个问题,以降低「蜜罐节点」的威胁,通过ExcludeNodes
字段指定 Tor 不要使用来自哪些国家的节点:
|
开启StrictNodes
选项(即使没有节点可用时也不会去尝试ExcludeNodes
选项排除的节点,这个选项不开启的话,如果没有节点可用时,Tor 就会去尝试排除的节点,这是危险的!):
|
如果希望其他设备(在同一局域网内)也能够使用 PC 上运行的 Tor 的话,可以再添加一个SocksPort
监听:
|
这样在同一局域网内的其他设备就能通过192.168.1.5:10240
这个地址来连接 Tor 的 Socks 代理。
关于 Tor 的配置,还有很多其他的选项,比如限制 IP/端口 访问等……这里不多介绍了,需要的请到这里了解。
启动
配置好以后,启动 Tor 服务:systemctl start tor
,查看 Tor 启动状态:systemctl status tor
,如果 Tor 配置 和 「前置代理」都没问题的话,就能看到 Tor 已经 100% 启动:
现在来测试一下是否成功连接到了 Tor 网络,根据前面自己配置的代理端口(没配置的话默认是 9050)设置浏览器代理,我这里使用 Firefox 的 SwitchyOmega 拓展新建一个代理(直接在浏览器中设置也可以),配置如下:
配置好代理后,访问 Tor 官方的检查页面:
可以看到已经成功连接到了 Tor 网络,如果其他程序想要使用 Tor 代理,只需要配置程序的代理设置为 Tor 代理即可;如果程序不支持使用代理,那么可以尝试使用 ProxyChains。
Nyx
想要检查 Tor 的运行状态和网络流量等信息,可以使用官方推荐的Nyx工具。
安装
Nyx 的安装和安装 Tor 一样简单,安装过程就不演示了,请自行参考官方 Wiki或网络教程。
设置 Tor 访问密码
前面说过,Tor 提供了一个「控制端口」,实际上就是给 Nyx 这类工具使用的。为了安全起见,连接之前需要先给 Tor 的「控制端口」设置一个访问密码,不要使用配置文件默认的密码,使用以下命令生成密码 Hash:
|
执行后会得到一个类似16:3266B495ABCDE7BE60C427803A077AE9F913092837E0635DD4E28A344E
这样的字符串,把它复制一下,填入配置文件的HashedControlPassword
字段:
|
保存配置文件后重载 Tor 服务:systemctl reload tor
。
使用
运行 Nyx:nyx -i 8889
(8889 为 Tor 的控制端口,如果没有设置 Tor 的「控制端口」则不需要 -i
参数),然后它会要求输入密码,正确输入你设置的密码后即可进入到界面:
由于涉及到隐私的关系,对图片的部分区域进行了模糊处理。
按方向键(左右)可以切换显示页面,总共有 5 页,每页的内容分别是网络流量+ Tor/Nyx 运行日志、网络连接、配置选项、原始配置文件、命令解释器;按m
键可以显示顶级菜单栏,通过菜单栏里的选项可以获取新身份(New Identity);按h
键显示当前页面的快捷键……
这个工具虽然是命令行界面的,但是却非常的简单易用,关于此工具的具体用法请自己体验。
Snowflake
Tor 在 2019 年发布了新的「可插拔传输」(网桥)“Snowflake”,它使用 WebRTC 来代理通过临时代理的流量。
如果你所在的地区没有审查,你可以使用“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 系统:
……