Firefox/隐私

来自 ArchWiki

本文概述了如何配置 Firefox 以增强安全性和隐私性。

配置

以下是以隐私为中心的调整,旨在防止浏览器指纹识别和跟踪。

跟踪保护

Firefox 增加了一个增强跟踪保护的选项。可以通过 GUI 设置 > 隐私与安全 在不同级别启用它,或者通过设置 about:config

  • privacy.trackingprotection.enabled true

除了隐私优势外,启用跟踪保护还可以将加载时间缩短 44%。

请注意,这不能替代 uBlock Origin 等广告拦截扩展,并且可能适用于或不适用于 Firefox 分支。如果您已经运行了带有正确列表的此类广告拦截器,则跟踪保护可能是多余的。

反指纹识别

当您的隐私设置设置为标准(默认)或严格时,Firefox 跟踪保护会阻止已知的“指纹识别器”列表。指纹识别保护是 Firefox 中正在大力开发的不同实验性功能。

Mozilla 已经在 Firefox 中启动了一个 反指纹识别项目,作为从 Tor 浏览器向上游移植功能项目的一部分。许多这些反指纹识别功能都通过 about:config 中的此设置启用

  • privacy.resistFingerprinting true
警告: 这是一个实验性功能,可能会导致一些网站崩溃,时区为 UTC0,并且网站将优先使用浅色主题。请注意,文本转语音引擎将被禁用 (bug #1636707),并且一些网站图标将损坏 (bug #1452391)。

更多信息请参阅: Firefox 的指纹识别保护

更改浏览器时区

您系统的时区可用于浏览器指纹识别。要将 Firefox 的时区设置为 UTC,请按以下方式启动它

$ TZ=UTC firefox

或者,设置一个脚本来启动上述命令(例如,在 /usr/local/bin/firefox 中)。

更改用户代理和平台

您可以使用 about:config 中的 general.useragent.override 首选项覆盖 Firefox 的用户代理。

键的值是您浏览器的用户代理。选择一个已知的常用值。

提示
  • Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0 用作 Tor 浏览器的用户代理,因此非常常见。
  • 反指纹识别选项还会启用 Tor 浏览器用户代理并自动更改您的浏览器平台。
警告: 更改用户代理而不更改为相应的平台将使您的浏览器几乎是唯一的。

要更改 firefox 的平台,请在 about:config 中添加以下 string

general.platform.override

选择与您的用户代理对应的已知通用平台。

提示:Win32 用作 Tor 浏览器的平台,与上面提供的用户代理相对应。

WebRTC 暴露局域网 IP 地址

为防止网站通过 WebRTC 的点对点(和 JavaScript)获取您的本地 IP 地址,请打开 about:config 并设置

  • media.peerconnection.ice.default_address_onlytrue
  • media.peerconnection.enabledfalse。(仅当您要完全禁用 WebRTC 时)

您可以使用此 WebRTC 测试页面WebRTC IP 泄漏 VPN / Tor IP 测试 来确认您的内部/外部 IP 地址不再泄漏。

禁用 HTTP Referer

HTTP Referer 是一个可选的 HTTP 标头字段,用于标识先前网页的地址,当前请求页面的链接是从该网页跟踪而来的。

根据您的首选项,将 network.http.sendRefererHeader 设置为 01

注意: 某些站点使用 Referer 标头来控制来源条件。完全禁用此标头可能会导致站点崩溃。在这种情况下,调整 network.http.referer.XOriginPolicy 可能会提供更好的解决方案。

禁用连接测试

默认情况下,Firefox 会尝试定期连接到 Amazon 和/或 Akamai 服务器 定期 间隔,以测试您的连接。例如,酒店、餐厅或其他企业可能需要您输入密码才能访问互联网。如果存在 Captive portal 并阻止流量,此功能将阻止所有其他连接尝试。这可能会泄露您的使用习惯。

要禁用 Captive Portal 测试,请在 about:config 中设置

  • network.captive-portal-service.enabledfalse
注意: 一份报告指出,禁用此功能后,Mozilla VPN 无法连接。

禁用遥测

toolkit.telemetry.enabled 设置为 false,和/或在 首选项 > 隐私与安全 > Firefox 数据收集和使用 下禁用它。

启用 “请勿追踪” 标头

privacy.donottrackheader.enabled 设置为 true,或在 首选项 > 隐私与安全 > 跟踪保护 中切换它

注意: 远程服务器可以选择不遵守 “请勿追踪” 请求。
警告: “请勿追踪” 标头 (DNT) 实际上可能被用来指纹识别您的浏览器,因为大多数用户都将此选项禁用。

禁用/强制 “可信递归解析器”

Firefox 60 引入了一个名为可信递归解析器 (TRR) 的功能。它绕过系统中配置的 DNS 服务器,而是通过 HTTPS 将所有 DNS 请求发送到 Cloudflare 服务器。虽然这明显更安全(因为“经典”DNS 请求以纯文本形式通过网络发送,沿途的每个人都可以监听这些请求),但这也会使 Cloudflare(提供 TRR 服务器)可以读取您的所有 DNS 请求。

  • 如果您信任自己配置的 DNS 服务器胜过 Cloudflare 的服务器,则可以在 about:config 中将 network.trr.mode(整数,如果不存在则创建)设置为 5 来禁用 TRR。(值为 0 表示默认禁用,并且可能会被未来的更新覆盖 - 值为 5 表示选择禁用,并且不会被覆盖。)
  • 如果您信任 Cloudflare DNS 服务器并且希望获得额外的隐私(感谢加密的 DNS 请求),则可以通过将 network.trr.mode 设置为 3(完全禁用经典 DNS 请求)或 2(默认使用 TRR,如果失败则回退到经典 DNS 请求)来强制执行 TRR。请记住,如果您正在使用任何内联网网站或尝试通过主机名访问本地网络中的计算机,则启用 TRR 可能会破坏此类情况下的名称解析。
  • 如果您想加密您的 DNS 请求但不使用 Cloudflare 服务器,则可以通过将 network.trr.uri 设置为您的解析器 URL 来指向新的 DNS over HTTPS 服务器。目前可用的解析器列表可以在 curl wiki 中找到,以及 TRR 的其他配置选项。

加密客户端问候 (ECH)

要启用加密客户端问候 (ECH)(以前称为加密服务器名称指示 (eSNI)),以便在线路上监听的任何人都看不到您建立 TLS 连接的服务器名称,请设置

  • network.dns.echconfig.enabledtrue
  • network.dns.http3_echconfig.enabledtrue

您可能还需要将 network.trr.mode 设置为 23

禁用地理位置

about:config 中将 geo.enabled 设置为 false

注意: 这可能会破坏需要访问您位置的网站。可能需要简单地允许每个站点的位置访问,而不是完全禁用此功能。

禁用 “安全浏览” 服务

安全浏览提供网络钓鱼保护和恶意软件检查,但它可能会将用户信息(例如 URL、文件哈希等)发送给 Google 等第三方。

要禁用安全浏览服务,请在 about:config 中设置

  • browser.safebrowsing.malware.enabledfalse
  • browser.safebrowsing.phishing.enabledfalse

此外,通过将 browser.safebrowsing.downloads.enabled 设置为 false 来禁用下载检查。

禁用 WebGL

WebGL 存在潜在的安全风险。[1] 如果您想禁用它,请在 about:config 中将 webgl.disabled 设置为 true

扩展

参见 浏览器扩展#隐私

禁用 WebAssembly (和 JavaScript)

WebAssembly,也称为 Wasm,是一种相对较新的语言。与 JavaScript 不同,Wasm 在浏览器中本地执行预编译代码,用于高性能模拟和应用程序。它因隐藏恶意软件途径以及与 JavaScript 一样,可用于跟踪用户而受到批评。Tor 浏览器阻止 JavaScript 和 Wasm。

参见 浏览器扩展#隐私 中的 NoScript,以像 Tor 浏览器那样阻止 JavaScript,这可以在需要时快速访问。要禁用 Wasm,请在 about:config 中设置

  • javascript.options.wasmfalse
  • javascript.options.wasm_baselinejitfalse
  • javascript.options.wasm_ionjitfalse

移除系统级隐藏扩展

某些扩展是隐藏的,默认安装在 /usr/lib/firefox/browser/features 中。许多可以通过 rm 扩展名.xpi 安全删除。它们可能默认未启用,并且可能具有用于启用或禁用的菜单选项。请注意,删除的任何文件将在更新 firefox 软件包后返回。要保持删除这些扩展,请将目录添加到 /etc/pacman.conf 中的 NoExtract。一些扩展包括

  • doh-rollout@mozilla.org.xpi - DoH Roll-Out(如果您选择使用上面的 #禁用/强制 “可信递归解析器”,请勿删除)。
  • screenshots@mozilla.org.xpi - Firefox 截图。
  • webcompat-reporter@mozilla.org.xpi - 用于报告在 Firefox 中受到破坏的站点,以便 Mozilla 可以改进 Firefox 或使用 webcompat@mozilla.org.xpi 扩展动态修补站点。
  • 所有组合的用户和系统扩展都在 about:support 中列出。有关系统扩展的完整列表,包括描述其功能的 README 文件,请参见 [2]

Firefox 安装到诸如安装到 /opt 的默认版本之类的路径在 /firefox/firefox/browser/features 中安装了系统扩展。

通过 Searx 进行网络搜索

注意: SearX 自 2023 年 9 月起不再维护。活跃的分支是 SearxNG

隐私可以通过减少您提供给单个实体的信息量来增强。例如,通过不同的、随机选择的代理发送每个新的网络搜索,使得单个搜索引擎几乎不可能构建您的个人资料。我们可以使用 Searx 的公共实例(或站点)来实现这一点。Searx 是一个 AGPL-3.0开源 站点构建器,它生成被称为“实例”的站点。每个公共“实例”都可以充当您和众多不同搜索引擎之间的中间人。

此公共实例列表其他列表中,将您希望的尽可能多的 Searx 站点加入书签(如果 JavaScript 被禁用,您将需要暂时启用它以加载列表)。为了快速访问这些书签,请考虑在书签的名称字段中添加 SX1SX2 ... SX(n),其中 (n) 是您加入书签的 searx 实例的数量。

完成书签操作后,只需在 URL 栏中输入 sx、一个数字和 Enter 键,即可加载一个实例。

注意: 不时更新上述书签,或在实例变得不可靠时更新,以减少您的在线指纹。
提示
  • 如果您有 Web 服务器和可用带宽,请考虑运行一个公共 Searx 实例,以帮助其他人提高他们的隐私性(更多信息)。
  • 为了提高隐私性,请将 Searx 实例与 Tor 浏览器 一起使用,Tor 浏览器使用 onion-routing 来提供一定程度的匿名性。
  • 您可以通过在本地运行 Searx 的私有实例来进一步提高您的隐私性。 安装 searxAUR 软件包并 启动 uwsgi@searx.service。 Searx 将在 https://127.0.0.1:8888/ 上可用。

有关其他选项,请参阅 https://www.privacyguides.org/en/search-engines/

通过 Invidious 观看视频

Invidious 实例充当 YouTube 的替代前端。它们是由 开源代码 构建的网站。通常难以限制用户发送给 YouTube (Google) 的信息量以访问内容。

使用 Invidious 的好处包括

  • 无需运行脚本即可访问视频。 YouTube 强制用户运行脚本。
  • 视频可以保存以供将来观看,或供他人观看,包括离线时。这减少了发送给 Google 的关于何时观看或重新观看内容的反馈。
  • 可选的仅音频模式,可减少带宽使用量。当与 Tor 等浏览器结合使用时,在更轻量级的网站上使用更少的数据包可能提高您的匿名性。
  • Invidious 是一个免费且开源的界面,使建立独立的、私有的视频托管服务更加容易。因此,存在一些网站正在使用 Invidious 来提供他们自己的内容或从 YouTube 上删除的内容。因此,它可能有助于限制 YouTube 未来构建个人资料的能力(见注释)。

从以下列表中将尽可能多的功能正常的 invidious 实例加入书签(此处此处此处[失效链接 2024-01-13 ⓘ])。请注意,其中一些实例可能由 Cloudflare 托管。

您可以通过简单地将 youtube.com 部分替换为您要使用的实例的域名,将任何 YouTube 视频 URL 更改为 Invidious URL。

注意: Invidious 不索引来自 Facebook 或 Cloudflare 服务器的视频。此外,内容通常仍然从 Google 服务器发送给用户。为了增加隐私性,请参阅 Tor 浏览器

企业策略

可以通过使用 企业策略 来建立网络和系统范围的策略,企业策略既补充又覆盖用户配置首选项。例如,没有记录的用户首选项来禁用检查 beta 频道版本的更新。但是,存在一种企业策略可以有效地部署为一种解决方法。可以通过 policies.json 管理单个和/或多个策略,如下所示

  • 禁用应用程序更新
  • 强制启用硬件加速
{
 "policies": {
  "DisableAppUpdate": true,
  "HardwareAcceleration": true
 }
}

about:support 中验证 Enterprise Policies 是否设置为 Active,并在 about:policies 中查看特定于版本的策略。

清理后的配置文件

prefs.js

构成 Firefox 配置文件的文件可以剥离某些元数据。例如,典型的 prefs.js 包含标识客户端和/或用户的字符串。

user_pref("app.normandy.user_id", "6f469186-12b8-50fb-bdf2-209ebc482c263");
user_pref("security.sandbox.content.tempDirSuffix", "2a02902b-f25c-a9df-17bb-501350287f27");
user_pref("toolkit.telemetry.cachedClientID", "22e251b4-0791-44f5-91ec-a44d77255f4a");

有多种方法可以重置这些字符串,但前提是必须首先创建一个没有此类标识符的主 prefs.js,并将其同步到工作配置文件中。最简单的解决方案是在复制 Firefox 的 prefs.js 到单独的位置之前关闭 Firefox

$ cp ~/.mozilla/firefox/example.default-release/prefs.js ~/prefs.sanitized.js

通过将任何和所有标识符字符串和日期代码设置为 0 或从复制的 prefs.js 中完全删除条目来剥离它们。根据需要将现在清理后的 prefs.js 同步到工作配置文件。

$ rsync -v ~/.prefs.sanitized.js ~/.mozilla/firefox/example.default-release/prefs.js
注意: 在下次启动 Firefox 期间,所需的标识符和日期代码条目和/或字符串将自动重新填充并重置为新值

还可以观察到次要的隐私效果,可以通过在 Fingerprint JS API Demo 中检查清理后的 prefs.js 与工作 prefs.js 之间的字符串结果来见证。

extensions.json

假设已安装扩展程序,则 extensions.json 文件列出所有配置文件扩展程序及其设置。值得注意的是用户主目录的位置,默认情况下 .mozillaextensions 文件夹存在于该位置。可以通过将 applyBackgroundUpdates 设置为适当的 0 值来禁用不需要的后台更新。次要的注意事项是 installDateupdateDateBubblewrap 可以有效地屏蔽主目录的用户名和位置,此时可以清理和修改 extensions.json 文件以指向沙盒化的 HOME 位置。

{"schemaVersion":31,"addons":[{"id":"uBlock0@raymondhill.net","syncGUID":"{0}","version":"0","type":"extension","optionsURL":"dashboard.html","optionsType":3,"optionsBrowserStyle":true,"visible":true,"active":true,"userDisabled":false,"appDisabled":false,"embedderDisabled":false,"installDate":0,"updateDate":0,"applyBackgroundUpdates":0,"path":"/home/r/.mozilla/firefox/example.default-release/extensions/uBlock0@raymondhill.net.xpi","skinnable":false,"softDisabled":false,"foreignInstall":true,"strictCompatibility":true}}

还可以完成从 addonStartup.json.lz4search.json.mozlz4 中删除类似的元数据。 mozlz4 是一个命令行工具,为 Mozilla(非标准)LZ4 文件提供压缩/解压缩支持。

移除子系统

崩溃报告 相关的遥测可以通过删除以下内容来禁用

/usr/lib/firefox/crashreporter
/usr/lib/firefox/minidump-analyzer
/usr/lib/firefox/pingsender

这些删除的文件将在升级软件包后恢复,将它们添加到 NoExtract 以实现持久化。

对于选择从 Mozilla 官方来源手动安装 Firefox 的用户,可以通过删除 firefox 目录中的 updater 来禁用更新程序系统。

编辑 omni.ja 的内容

注意: 修改 omni.ja 的内容可能会抑制或丢失某些功能。此外,它会在每个 Firefox 版本更新/覆盖。用户需要自行决定隐私方面的收益是否值得预期的可用性损失。

文件 /usr/lib/firefox/omni.ja 包含 Firefox 使用的大多数默认配置设置。例如,从 Firefox 73 开始,无法通过扩展程序或将首选项 URL 设置为 ""); 来阻止对 firefox.settings.services.mozilla.com 和/或 content-signature-2.cdn.mozilla.net 的网络调用。除了使用 DNS 沉洞或防火墙阻止已解析的 IP 块外,一种解决方案是 grep(1) 遍历 omni.ja 的提取内容,然后删除对 firefox.settings.services.mozilla.com 和/或 cdn.mozilla.net 的所有引用。还可以删除无关的模块,例如未使用的字典和断字文件,以出于安全和性能原因减小 omni.ja 的大小。

要重新打包/重新压缩,请使用命令 zip -0DXqr omni.ja *,并确保您的工作目录是 omni.ja 文件中文件的根目录。

强化的 user.js 模板

一些活跃的项目以 user.js 配置文件的形式维护全面的强化 Firefox 配置,该配置文件可以放入 Firefox 配置文件目录中

  • arkenfox/user.js (arkenfox-user.jsAUR)
  • pyllyukko/user.js
  • ffprofile.com (github) - 在线 user.js 生成器。您可以选择要启用和禁用的功能,最后您将获得一个 zip 文件的下载链接,其中包含您的配置文件模板。例如,您可以禁用某些将数据发送到 Mozilla 和 Google 的功能,或者禁用几个烦人的 Firefox 功能,例如 Mozilla Hello 或 Pocket 集成。

另请参阅