跳转到内容
来自 Arch Linux 中文维基

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

配置

以下是一些以隐私为导向的调整,用于防止浏览器指纹收集和跟踪。

跟踪保护

Firefox 提供了增强跟踪保护选项。可以通过 GUI 界面“设置 > 隐私与安全”启用不同级别的保护,或者在 about:config 中设置:

  • privacy.trackingprotection.enabledtrue

除了隐私益处外,启用跟踪保护还可能将加载时间减少 44%。[1]

需要注意的是,这并不能完全替代广告拦截扩展(例如 uBlock Origin),并且可能无法与 Firefox 衍生版本兼容。若已经运行此类广告拦截器并使用正确的规则列表,跟踪保护可能是多余的。

反指纹收集

当隐私设置为“标准”(默认)或“严格”时,Firefox #跟踪保护会屏蔽来自一份列表的已知“指纹追踪器”。针对指纹收集的保护是 Firefox 中正在积极开发的一项实验性功能。

作为从 Tor 浏览器向上游引入功能项目的一部分,Mozilla 已启动 Firefox 反指纹收集项目。许多反指纹收集功能可以通过在 about:config 中启用以下设置实现:

  • 设置 privacy.resistFingerprintingtrue
警告:这是一个实验性功能,可能导致某些网站功能异常,如时区固定为 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 来源地址(HTTP Referer)

HTTP 来源地址(HTTP Referer)是一个可选的 HTTP 头字段,用于标识从链接到当前请求页面的前一个网页的地址。

network.http.sendRefererHeader 设置为 01,具体取决于偏好

注意:某些网站使用 Referer 头来控制来源条件。完全禁用此字段可能会导致网站功能中断。在这种情况下,调整 network.http.referer.XOriginPolicy 可能是一个更好的解决方案。


禁用连接测试

默认情况下,为了测试连接,Firefox 会定期尝试连接到 Amazon 和/或 Akamai 服务器。[2] 例如,在酒店、餐厅或其他需要输入密码访问互联网的场所,如果存在强制门户并阻止流量,该功能会阻止所有其他连接尝试。这可能会泄露您的使用习惯。

要禁用强制门户测试,在 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 可以读取所有 DNS 请求,从而提供 TRR 服务。

  • 相比于 Cloudflare 所提供的,如果更信任自己配置的 DNS 服务器,可以在 about:config 中将 network.trr.mode(整数类型,如果不存在请创建)设置为 5。(值为 0 表示默认禁用,可能会被未来更新覆盖;值为 5 表示选择性禁用,不会被覆盖。)
  • 如果更加信任 Cloudflare 的 DNS 服务器,并希望通过加密的 DNS 请求获得额外的隐私,可以通过将 network.trr.mode 设置为 3(完全禁用传统 DNS 请求)或 2(默认使用 TRR,如果失败则回退到传统 DNS 请求)来强制启用 TRR。请注意,启用 TRR 可能会破坏内网网站或本地网络中主机名的名称解析。
  • 如果希望加密 DNS 请求但不使用 Cloudflare 的服务器,可以通过将 network.trr.uri 设置为您解析器的 URL 来指向一个新的 HTTPS DNS 服务器。可用解析器的列表以及其他 TRR 配置选项可以在 curl wiki 中找到。

加密客户端问候

要启用加密客户端问候(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 可能存在安全风险。[3] 若要禁用 WebGL,请在 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 extension-name.xpi 安全删除。这些扩展可能默认未启用,并且可能有启用或禁用的菜单选项。请注意,删除的文件会在更新 firefox 时重新出现。为保持这些扩展被移除,可以将其目录添加到 /etc/pacman.confNoExtract 中。部分扩展包括:

  • doh-rollout@mozilla.org.xpi⸺DoH(基于 HTTPS 的 DNS)部署(若选择使用 #禁用/强制使用“受信递归解析器”,请勿删除)。
  • screenshots@mozilla.org.xpi⸺Firefox 截图功能。
  • webcompat-reporter@mozilla.org.xpi⸺用于报告 Firefox 中受损的网站,Mozilla 可通过 webcompat@mozilla.org.xpi 动态修复网站或改进 Firefox。

所有用户和系统扩展的列表可在 about:support 中查看。完整的系统扩展列表及描述其功能的 README 文件可参见 [4]

默认安装在 /opt 路径中的 Firefox(例如稳定版)具有安装在 /firefox/firefox/browser/features 下的系统扩展。

使用 Searx 进行网络搜索

注意:自 2023 年 9 月起,SearX 已停止维护,推荐使用其活跃的分支 SearxNG

通过减少提供给单一实体的信息量,增强隐私保护。例如,每次通过不同的随机代理发送网络搜索,使单一搜索引擎几乎无法建立用户画像。可以使用 Searx 的公共实例(即站点)来实现这一点。Searx 是一个以 AGPL-3.0 授权的开源站点构建器,用于生成站点(称为“实例”)。每个公共实例都可以作为用户与各种搜索引擎之间的中间人。

这个这个公共实例列表中,选择并添加尽可能多的 Searx 网站书签(如果禁用了 JavaScript,需要暂时启用它以加载列表)。为了快速访问这些书签,可以将书签名称更改为 SX1SX2 ⋯⋯ SX(n)(其中 (n) 是书签中 Searx 实例的总数)。

添加书签后,只需在网址栏中输入 sx、一个数字,然后按 Enter,即可加载一个实例。

注意:建议时常或在实例变得不可靠时更新上述书签,以减少在线指纹。
提示:
  • 如果有网络服务器和可用带宽,考虑自建一个公共 Searx 实例,以帮助他人提升隐私保护(更多信息)。
  • 为了进一步保护隐私,可在 Tor 浏览器中使用 Searx 实例,Tor 的洋葱路由能提供一定程度的匿名性。
  • 还可以通过自建一个私有 Searx 实例来进一步提升隐私。安装 searxAUR 软件包并启动 uwsgi@searx.service 服务,Searx 将可通过 http://localhost:8888/ 访问。

参见 https://www.privacyguides.org/en/search-engines/ 了解其他选项。

使用 Invidious 观看视频

Invidious 实例是 YouTube 的替代前端,这些网站基于开源代码构建。利用传统方法,很难限制为了访问内容向 YouTube(即向谷歌)发送的信息量。

使用 Invidious 的好处包括:

  • 视频可在不运行脚本的情况下访问,而 YouTube 强制用户运行脚本。
  • 视频可以保存以供将来观看或分享给他人,包括离线观看。这减少了向 Google 发送关于何时观看或重看的反馈信息。
  • 可选的音频模式减少带宽使用。当与类似 Tor 浏览器的工具结合使用时,数据包的减少和轻量级的网站可能提高匿名性。
  • Invidious 是一个免费的开源界面,简化了设置独立、私密的视频托管服务的过程。因此,一些网站使用 Invidious 提供自己的内容或从 YouTube 删除的内容。这可能在未来限制 YouTube 创建用户画像的能力(参见提示)。

从列表([5][6][7][失效链接 2024-01-13 ⓘ])中向书签中添加尽可能多的有效 Invidious 实例。注意,其中一些实例可能由 Cloudflare 托管。

可以通过将任何 YouTube 视频 URL 中的 youtube.com 替换为实例域名以将其更改为 Invidious URL。

注意:Invidious 不索引来自 Facebook 或 Cloudflare 服务器的视频。此外,内容通常仍然通过 Google 服务器发送给用户。为获得更高的隐私保护,请参见 Tor

企业策略

通过使用企业策略,可以建立网络和系统范围的策略,这些策略既可以补充也可以覆盖用户配置的偏好。例如,文档没有记录禁用测试版渠道更新检查的用户偏好,而一个策略可以作为有效的解决方法。可以通过 policies.json 管理单个或多个策略,如下所示:

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

about:support 中验证 企业策略激活 状态,并在 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 文件复制到单独的位置:

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

通过将条目设置为 0 或直接删除,可从副本 prefs.sanitized.js 中剔除所有标识符字符串和日期代码。根据需要将清理过的 prefs.sanitized.js 同步回使用的配置文件:

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

还可以通过比较清理后的 prefs.js 与工作中的 prefs.jsFingerprint JS API Demo 中的字符串结果,观察隐私方面的附加效果。

extensions.json

extensions.json 文件列出记录的扩展及其设置。值得注意的是其中包含的默认情况下 .mozillaextensions 文件夹所在的用户主目录路径。可以通过将 applyBackgroundUpdates 设置为 0 值来禁用不需要的后台更新。需要注意的还有 installDateupdateDate 字段。Bubblewrap英语Bubblewrap/Examples#Firefox 可以有效地屏蔽用户名和主目录路径,此时可以清理并修改 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 文件压缩/解压的命令行工具。

移除子系统

这篇文章的某些内容需要扩充。

原因:删除的文件在升级软件包后会恢复,请将它们添加到 NoExtract 以避免被安装。 (在 Talk:Firefox/隐私 中讨论)

崩溃报告相关的遥测功能可以通过删除以下文件禁用:

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

对于从 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 的大小,从而提升安全性和性能。

要重新打包/压缩,请在 omni.ja 文件内容的根目录使用命令 zip -0DXqr omni.ja *

加固的 user.js 模板

多个活跃项目维护了全面的 Firefox 加固配置,这些配置以 user.js 文件的形式提供,可直接放置于 Firefox 配置文件目录中:

  • arkenfox/user.jsarkenfox-user.jsAUR
  • pyllyukko/user.js
  • ffprofile.comGitHub)⸺在线 user.js 生成器。用户可以选择启用和禁用的功能,最后可获取配置模板的 zip 文件下载链接。例如,你可以禁用某些发送数据到 Mozilla 和 Google 的功能,或禁用一些恼人的 Firefox 功能,例如 Mozilla Hello 或 Pocket 集成。

另见