Tor网站开发

1.Tor

需要用到的链接

1.Tor

2.Tor Browser

代码

SocksPort 127.0.0.1:9050HiddenServiceDir D:\torHiddenServicePort 80 127.0.0.1:80
ExitPolicy reject *:*

1、下载Tor

image-20251229205826838

解压之后开启全局模式+网卡,运行tor.exe直至进度显示100%,然后关闭窗口

image-20251229205951923

接下来在目录C:\Users\maluyao\AppData\Roaming\tor下面新建torrc的配置文件,复制配置:

SocksPort 127.0.0.1:9050
HiddenServiceDir E:\Serve\Tor
HiddenServicePort 80 127.0.0.1:80
ExitPolicy reject *:*

关掉之后运行tor.exe就发现在E:\Serve\Tor\目录下出现三个新文件

image-20251229210906967

打开hostname文件得到网址:

image-20251229210959906

这就是tor域名

解析配置

SocksPort 127.0.0.1:9050
HiddenServiceDir E:\Serve\Tor
HiddenServicePort 80 127.0.0.1:80
ExitPolicy reject *:*

它配置了三件事:

  1. 本机 SOCKS 代理 SocksPort 127.0.0.1:9050 Tor 在本机回环地址开一个 SOCKS5 代理端口 9050,只允许本机程序连接(浏览器/客户端把代理指到 127.0.0.1:9050 就能走 Tor)。
  2. 开一个 Onion(隐藏服务)并把它转发到你本机 80 端口 HiddenServiceDir E:\Serve\Tor 用于存放隐藏服务的密钥、状态文件,以及生成的 .onion 地址(会在这个目录里有个 hostname 文件)。 HiddenServicePort 80 127.0.0.1:80 把 onion 服务的 80 端口映射到你本机的 127.0.0.1:80(也就是你电脑上跑的 Web 服务:IIS/nginx/Apache/自写服务等)。别人访问你的 .onion,实际会被 Tor 转发到你本地 80。
  3. 不当出口节点 ExitPolicy reject *:* 拒绝所有“出口”连接,所以这台 Tor 不会成为 Exit Node,只做客户端/中继(如果开了)/隐藏服务提供者。

参考

Onion Services 文档(v3)

https://community.torproject.org/onion-services/

torrc 配置项完整说明(官方手册)

https://support.torproject.org/tor-browser/features/onion-services/

https://support.torproject.org/tor-manual/

用 Tor Onion 做 Web 服务

https://community.torproject.org/onion-services/setup/

Onion Service 的安全建议:

https://support.torproject.org/onionservices/onionservices-security/

中继操作

Tor网络上的中继类型

所有类型的中继都很重要,但它们在技术要求和潜在法律影响方面各不相同。了解不同类型的中继,是判断哪一种适合你的第一步。

示例 Tor 电路: Tor 用户 → 守护中继 → 中间中继 → 出口中继 → 目标(例如 example.com)

使用桥接时:

Tor 用户 → 桥接中继 → 中间中继 → 出口中继 → 目标(例如 example.com)

守护中继与中间中继(也称为非出口中继)

守护中继是 Tor 电路中的第一个中继(跳点)。中继中继是在 Tor 电路中作为第二个跳点的中继。要成为守护中继,该中继必须稳定且速度快(上下行带宽至少 2MB/s),否则它将继续作为中继中继存在。

守护中继和中继中继通常不会收到滥用投诉。不过,所有中继都会被列入公开的 Tor 中继目录,因此可能会被某些服务封锁。这些服务包括对 Tor 工作方式存在误解,或是刻意想要审查 Tor 用户的服务,例如网上银行和流媒体服务。

非出口 Tor 中继所需的维护工作很少,带宽使用也可以在 Tor 配置中高度自定义。中继的所谓“出口策略”决定它是否允许客户端从该中继出网。非出口中继在其出口策略中不允许出网

重要提示:如果你在家中使用单一的静态 IP 地址运行中继,并且担心你的 IP 会被某些在线服务封锁,可以考虑改为运行桥接或 Tor Snowflake 代理。这种替代方案有助于防止你的非 Tor 流量被误判为来自 Tor 中继而遭到封锁。

出口中继

出口中继是 Tor 电路中的最后一个中继,负责将流量发送到最终目的地。Tor 客户端所连接的服务(网站、聊天服务、电子邮件提供商等)看到的将是出口中继的 IP 地址,而不是真实的 Tor 用户 IP 地址。

在所有类型的中继中,出口中继面临的法律风险和责任最大。例如,如果某个用户通过你的出口中继下载了受版权保护的内容,作为运营者的你可能会收到 DMCA 通知。任何关于出口的滥用投诉都会直接指向你(通常通过你的托管服务商,取决于 WHOIS 记录)。一般来说,大多数投诉都可以通过模板信函相对轻松地处理。

由于运行出口中继伴随着较高的法律风险,你不应在家中运行 Tor 出口中继。理想的出口中继运营者通常隶属于某种机构,例如中继协会、大学、图书馆、黑客空间或隐私相关组织。这类机构不仅可以为出口中继提供更大的带宽,也更有条件处理滥用投诉或少见的执法机构询问。

桥接

Tor 网络的设计决定了 Tor 中继(守护、中继和出口)的 IP 地址是公开的。然而,政府或 ISP 阻断 Tor 的一种方式就是将这些公开的 Tor 中继 IP 地址加入封锁列表。Tor 桥接是网络中未列入公开 Tor 目录的中继,这使得 ISP 和政府更难封锁它们。

桥接对于处于高压统治环境下的 Tor 用户,或是希望增加一层安全性、担心有人会识别出他们正在连接公开 Tor 中继 IP 地址的人来说非常有用。包括中国和伊朗在内的一些国家已经找到了检测并封锁 Tor 桥接连接的方法。可插拔传输(https://support.torproject.org/tor-browser/circumvention/)是一种特殊的桥接,通过增加额外的混淆层来应对这一问题。

桥接相对容易运行,风险低、带宽需求也低,但对用户的影响却很大。桥接几乎不会收到滥用投诉,而且由于桥接不会被列为公开中继,也不太可能被主流服务封锁。

如果你只能在家庭网络中运行 Tor 节点,只有一个静态 IP,也无法提供大量带宽,桥接是一个非常好的选择——我们建议至少为你的桥接提供 1 Mbit/s 的带宽。

中继节点要求

Tor 中继的运行要求取决于中继类型以及其提供的带宽

如果你不满足运行 Tor 中继obfs4 桥接的要求,运行一个 Snowflake 代理是捐献带宽、帮助用户绕过审查的一个很好的方式。

带宽与连接数

非出口中继应当能够处理至少 7000 个并发连接,这可能会压垮家用级路由器。如果你在数据中心的服务器(虚拟或独立)上运行 Tor 中继,一般不会有问题;如果是在家中、通过家用路由器运行,就需要自行测试路由器是否能够承受,或是否会出现故障。高速出口中继(≥100 Mbit/s)通常需要处理更多的并发连接(>100,000)。

建议中继至少为 Tor 提供 16 Mbit/s 的上行带宽和 16 Mbit/s 的下行带宽,越高越好。中继的最低要求是 10 Mbit/s。如果你的带宽低于 10 Mbit/s 但至少有 1 Mbit/s,建议运行支持 obfs4 的桥接。

每月出站流量

Tor 中继每月至少需要允许使用 100 GB 的出站流量(入站流量也需要同样的额度)。注意:在 10 Mbit/s 的连接下,这大约只相当于 1 天的流量。更多的流量(>2 TB/月)更好,也更推荐。

理想情况下,中继应运行在不限流量的套餐上,或至少包含每月 2 TB 或以上的流量。如果你使用的是计量流量套餐,可能需要在 Tor 配置中限制带宽或每月流量使用量。

公共 IPv4 地址

每个中继都需要一个公共 IPv4 地址——可以直接分配在主机上(推荐),也可以通过 NAT 和端口转发实现。

IPv4 地址不一定必须是静态的,但静态 IP 更理想。你的 IPv4 地址应至少在 3 小时内保持不变(如果变化频率更高,那么在那里运行中继或桥接意义不大,因为新的中继 IP 列表需要时间分发给客户端,而这个过程每小时只进行一次)。

额外的 IPv6 连接非常好,且推荐/鼓励,但不是硬性要求。这个要求通常不成问题(所有商业服务器至少都会提供一个 IPv4 地址)。

注意:每个公共 IPv4 地址最多只能运行 8 个 Tor 中继。如果你想运行超过 8 个中继,就需要更多的 IPv4 地址。

内存要求

速度低于 40 Mbit/s 的非出口中继至少需要 512 MB 内存。 速度高于 40 Mbit/s 的非出口中继至少需要 1 GB 内存。 对于出口中继,建议每个 Tor 实例至少配备 1.5 GB 内存。

磁盘存储

Tor 对磁盘空间需求不高。一个典型的 Tor 中继用于 Tor 相关数据的存储空间少于 200 MB(不包括操作系统本身)。

技术设置

本节介绍在不同操作系统上运行 Tor 中继所需程序的安装与配置。

这些步骤适用于对应操作系统的最新稳定版本;在 Ubuntu 上则适用于最新的 LTS 版本

注意:对于某些操作系统,提供了 alpha 版本的软件包(包含尚未被认为稳定的新特性的 Tor 版本)。这些版本仅推荐给愿意测试前沿版本/新特性并提交漏洞报告的人使用。如果你希望以最少的精力运行一个中继,建议使用稳定版本。

在配置 Tor 之前需要明确的问题 你是想运行 Tor 出口中继,还是非出口中继(桥接 / 守护 / 中继)? 如果你要运行出口中继:你希望在出口策略中允许哪些端口?(允许的端口越多,通常意味着潜在的滥用投诉也越多。) 你希望为入站 Tor 连接使用哪个外部 TCP 端口?(即 “ORPort” 配置:如果你的服务器上该端口未被其他守护进程占用,推荐使用 443 端口。推荐 ORPort 443 的原因是,它通常是公共 Wi-Fi 网络中少数开放的端口之一。9001 端口也是另一个常用的 ORPort。) 你将在中继的 ContactInfo 字段中使用哪个电子邮箱地址?该信息将是公开的。 你希望为 Tor 流量分配多少带宽 / 每月流量? 服务器是否具备 IPv6 地址?

安装命令将以代码块形式给出,且必须以 root 权限执行。

请点击下方你想要托管的中继类型,并且不要忘记阅读“中继安装后事项与最佳实践”。

中继 / 守护中继

运行一个中继 / 守护中继

https://community.torproject.org/relay/setup/guard/

桥接

运行一个 obfs4 桥接,帮助受审查地区的用户连接到 Tor 网络

https://community.torproject.org/relay/setup/bridge/

出口中继

如何部署一个出口中继

https://community.torproject.org/relay/setup/exit/

中继安装后事项与最佳实践

了解中继安装完成后需要做什么

https://community.torproject.org/relay/setup/post-install/

Snowflake

运行一个 Snowflake 代理,帮助受审查地区的用户连接到 Tor 网络

https://community.torproject.org/relay/setup/snowflake/

WebTunnel 桥接

运行一个 WebTunnel 桥接,帮助受审查地区的用户连接到 Tor 网络

https://community.torproject.org/relay/setup/webtunnel/

洋葱服务

洋葱服务是指只能通过 Tor 浏览器访问的服务。运行洋葱服务可以让用户享受到 HTTPS 的所有安全保障,同时还能获得 Tor 浏览器带来的额外隐私优势。

怎么运行的

洋葱服务(Onion Services)是只能通过 Tor 访问的服务。运行一个洋葱服务,可以在享受 HTTPS 所提供的全部安全性的同时,额外获得 Tor 浏览器带来的隐私优势。

为什么使用洋葱服务? 洋葱服务为用户提供了多种隐私和安全方面的好处。

位置隐藏 洋葱服务的 IP 地址是受保护的。洋葱服务是在 TCP/IP 之上的一种覆盖网络,因此在某种意义上,IP 地址对洋葱服务来说甚至没有实际意义:在协议中它们根本不会被使用。

端到端身份认证 当用户访问某个特定的 .onion 地址时,可以确定其看到的内容只能来自该洋葱服务本身,不存在冒充的可能,而这在普通网络环境中通常无法保证。通常,访问一个网站并不意味着中间人没有将连接重定向到其他位置(例如 DNS 攻击)。

端到端加密 洋葱服务的流量从客户端到洋葱服务主机全程加密,相当于免费获得了强级别的 SSL/HTTPS。

NAT 穿透 你的网络是否被过滤,无法在防火墙上开放端口?这种情况可能发生在大学校园、办公室、机场,或几乎任何地方。洋葱服务不需要开放端口,因为它们可以穿透 NAT建立出站连接。

洋葱服务协议:概览 问题随之而来:要实现以上所有特性,需要一种什么样的协议?通常,人们连接到一个 IP 地址即可完成通信,但如果目标根本没有 IP 地址,该如何连接呢?

具体来说,一个洋葱服务的地址看起来像这样:

vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion

它看起来怪异且随机,是因为它实际上是洋葱服务的身份公钥。这也是我们能够实现上述安全特性的原因之一。

洋葱服务协议使用 Tor 网络,使客户端能够向服务进行自我介绍,然后通过 Tor 网络与该服务建立一个会合点(rendezvous point)。下面是这一过程的详细分解:

第一幕:洋葱服务如何设置引荐点

假设你所在城市的一家地方报纸决定搭建一个洋葱服务(使用 SecureDrop)来接收匿名线索。协议的第一步是,洋葱服务会联系多个 Tor 中继节点,请求它们作为其入口点,并建立长期连接。这些连接是匿名化的,因此服务器不会向入口点透露服务的具体位置。

洋葱服务将隐藏在 Tor 网络之后,并通过三跳 Tor 电路仅允许通过三个入口点进行访问,从而保护自身。

onion-service-01

第二幕:洋葱新闻服务发布其描述符的地方

现在引荐点已经设立完毕,我们需要创造一种方式让客户能够找到它们。

为此,洋葱服务会组装一个洋葱服务描述符,其中包含其引荐点列表(以及“认证密钥”),并使用洋葱服务的身份私钥对该描述符进行签名。这里使用的身份私钥,正是编码在洋葱服务地址中的公钥所对应的私钥部分。

洋葱服务随后将这个已签名的描述符上传到 Tor 网络的一部分——分布式哈希表(DHT)中,以便客户端能够获取。上传过程同样通过匿名化的 Tor 电路完成,从而不会暴露洋葱服务的真实位置。

onion-service-02

第三幕:客户想要访问洋葱服务

假设你想匿名地通过当地报纸的 SecureDrop 服务向其发送一些税务欺诈数据。你从公共网站或朋友那里找到了该报纸 SecureDrop 服务的洋葱地址。

onion-service-03

第四幕:客户向洋葱服务机构自我介绍

前面所有步骤都只是为了配置洋葱服务,以便客户端可以访问它。现在让我们快进到实际客户端想要访问该服务的阶段。

在这种情况下,客户端拥有 SecureDrop 的洋葱地址并想要访问它,因此他们使用 Tor 浏览器连接到该服务。接下来,客户端需要访问步骤 2中的分布式哈希表,并请求 SecureDrop 洋葱服务的签名描述符。

onion-service-04

第五幕:客户核实洋葱地址签名

当客户端收到签名描述符时,它会使用编码在洋葱地址中的公钥来验证描述符的签名。这提供了端到端的身份验证安全属性,因为我们现在可以确定该描述符只能由该洋葱服务生成,而不能由其他任何服务生成。

而在该描述符内部,包含了引介点信息,使客户端能够向 SecureDrop 的洋葱服务进行引介并建立连接。

onion-service-05

第六幕:客户确定会面地点

在进行连接之前,客户端(在本例中是您)选择一个 Tor 中继并与其建立连接。客户端请求该中继作为其会合点,并向其提供一个“一次性密钥”,该密钥将用于会合过程。

onion-service-06

第七幕:洋葱服务与客户的会面

引荐点会将您的详细信息(密钥和会合地址)传递给洋葱服务,洋葱服务会运行多个验证过程来决定您是否值得信赖。

onion-service-07

第八幕:会面地点验证客户的秘密

洋葱服务通过匿名电路连接到会合点,并将“一次性密钥”发送给它。会合点进行最终验证,以匹配您和该服务发送的密钥字符串(该密钥字符串也来自您,但已通过该服务转发)。

汇合点只是简单地将(端到端加密的)消息从客户端转发到服务,反之亦然。

onion-service-08

第九幕:洋葱服务与客户的会面

通常,客户端与洋葱服务之间的完整连接由 6 个中继组成:其中 3 个由客户端选择,第 3 个作为汇合点,另外 3 个由洋葱服务选择。这为该连接提供了位置隐藏功能。

最后,利用汇合点,在你和你所在报纸的 SecureDrop Onion 服务之间形成 Tor 电路。

onion-service-09

设置你的洋葱服务

本指南将向你展示如何为你的网站搭建一个洋葱服务(Onion Service)。如果你想了解洋葱服务协议的技术细节,请参阅我们的洋葱服务协议页面。

第 0 步:准备一个可用的 Tor

在本指南中,我们假设你的机器上已经有一个可以正常运行的 Tor。要设置 Tor,请按照 Tor 安装指南进行操作。Tor 必须能够正确启动并运行,本指南才能生效。同时,你还需要知道 Tor 的配置文件所在位置。

第 1 步:搭建一个可用的 Web 服务器

第一步,你需要在本地搭建一个 Web 服务器,例如 Nginx、Apache,或你喜欢的其他 Web 服务器

第 2 步:配置 Tor 洋葱服务

下一步是打开 Tor 的配置文件(torrc),并进行相应配置来设置洋葱服务。根据你的操作系统和环境不同,Tor 的配置文件位置或内容可能会有所差异。

你需要在 torrc 文件中添加以下两行:

HiddenServiceDir /var/lib/tor/my_website/
HiddenServicePort 80 127.0.0.1:80

HiddenServiceDir 用于指定一个目录,该目录中将包含你的洋葱服务所需的信息和加密密钥。你需要将其修改为一个 Tor 运行用户可读写的实际目录。

HiddenServicePort 用于指定一个虚拟端口(也就是访问你的洋葱服务时使用的端口)。在上述示例中,它表示所有访问洋葱服务 80 端口的流量,都会被转发到 127.0.0.1:80(也就是第 1 步中 Web 服务器监听的地址)。

提示:为了避免将洋葱服务暴露给本地网络,一个良好的实践是使用 Unix 套接字而不是 TCP 套接字来运行洋葱服务。你需要在 torrc 中添加以下两行:

HiddenServiceDir /var/lib/tor/my-website/
HiddenServicePort 80 unix:/var/run/tor/my-website.sock

第 3 步:重启 Tor 并检查是否成功

现在保存你的 torrc 文件并重启 Tor:

systemctl restart tor

当 Tor 启动时,它会自动创建你在 HiddenServiceDir 中指定的目录(如果该目录不存在)。

第 4 步:测试你的洋葱服务是否可用

要获取你的洋葱服务地址,请进入你设置的 HiddenServiceDir 目录,找到一个名为 hostname 的文件。该文件中包含了你新创建的 v3 洋葱服务的主机名。目录中的其他文件是你的洋葱服务密钥,务必要妥善保密。如果密钥泄露,其他人就可以冒充你的洋葱服务,使其被视为已泄露、不可信,甚至存在安全风险。

现在你可以使用 Tor 浏览器访问你的洋葱服务,你应该能看到第 1 步中设置的 HTML 页面。如果无法访问,请查看日志文件获取线索,并不断调整直到它能够正常工作。

需要注意的是,这样配置的洋葱服务,任何知道或发现该地址的人都可以访问。你也可以让洋葱服务启用身份验证,只有持有私钥的用户才能访问该服务。更多信息请参阅客户端授权相关文档( Client authorization)。

(可选)第 5 步:运行多个洋葱服务

如果你希望为同一个洋葱服务转发多个虚拟端口,只需添加更多的 HiddenServicePort 行即可。如果你希望在同一个 Tor 客户端上运行多个洋葱服务,只需再添加一个 HiddenServiceDir 行即可。之后的所有 HiddenServicePort 行都会对应最近的 HiddenServiceDir,直到你添加下一个 HiddenServiceDir 为止:

HiddenServiceDir /var/lib/tor/onion_service/
HiddenServicePort 80 127.0.0.1:80

HiddenServiceDir /var/lib/tor/other_onion_service/
HiddenServicePort 6667 127.0.0.1:6667
HiddenServicePort 22 127.0.0.1:22

如果你在同一个 Web 服务器上运行多个洋葱网站,请记得编辑 Web 服务器的虚拟主机配置文件,并为每个网站添加对应的洋葱地址。例如,在 Nginx 中并使用 Tor 的 Unix 套接字时,配置可能如下:

nginx
server {
   listen unix:/var/run/tor/my-website.sock;
   server_name <你的洋葱地址>.onion;
   access_log /var/log/nginx/my-website.log;
   index index.html;
   root /path/to/htdocs;
 }

运维安全(Operational Security)。

最后,如果你计划长期运行该服务,建议在安全的位置备份 private_key 文件。

当你的洋葱网站运行起来之后,你可能还想部署Onion-Location,或使用 Docker、Heroku、Terraform、Ansible、stem 等工具来自动化管理洋葱服务。如果你有一个静态网站,但从未安装过 Nginx 或 Apache,另一个可以尝试的项目是 OnionShare,它通过图形界面引导配置,所需配置极少,更容易运行一个洋葱网站。

如何安装

https://community.torproject.org/onion-services/setup/install/

支持

tor

https://support.torproject.org/about-tor/

tor浏览器

https://support.torproject.org/tor-browser/

生态

https://onionservices.torproject.org/

评论

评论加载中……