本文概述了如何配置 Firefox 以增强安全性并保护隐私。
配置
以下是一些以隐私为导向的调整,用于防止浏览器指纹收集和跟踪。
跟踪保护
Firefox 提供了增强跟踪保护选项。可以通过 GUI 界面“设置 > 隐私与安全”启用不同级别的保护,或者在 about:config
中设置:
-
privacy.trackingprotection.enabled
为true
除了隐私益处外,启用跟踪保护还可能将加载时间减少 44%。[1]
需要注意的是,这并不能完全替代广告拦截扩展(例如 uBlock Origin),并且可能无法与 Firefox 衍生版本兼容。若已经运行此类广告拦截器并使用正确的规则列表,跟踪保护可能是多余的。
反指纹收集
当隐私设置为“标准”(默认)或“严格”时,Firefox #跟踪保护会屏蔽来自一份列表的已知“指纹追踪器”。针对指纹收集的保护是 Firefox 中正在积极开发的一项实验性功能。
作为从 Tor 浏览器向上游引入功能项目的一部分,Mozilla 已启动 Firefox 反指纹收集项目。许多反指纹收集功能可以通过在 about:config
中启用以下设置实现:
- 设置
privacy.resistFingerprinting
为true
有关更多信息,请参阅: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_only
为true
-
media.peerconnection.enabled
为false
(仅在希望完全禁用 WebRTC 时)
可使用此 WebRTC 测试页面和 WebRTC IP 泄漏 VPN / Tor IP 测试来确认您的内部/外部 IP 地址不再泄漏。
禁用 HTTP 来源地址(HTTP Referer)
HTTP 来源地址(HTTP Referer)是一个可选的 HTTP 头字段,用于标识从链接到当前请求页面的前一个网页的地址。
将 network.http.sendRefererHeader
设置为 0
或 1
,具体取决于偏好。
network.http.referer.XOriginPolicy
可能是一个更好的解决方案。
禁用连接测试
默认情况下,为了测试连接,Firefox 会定期尝试连接到 Amazon 和/或 Akamai 服务器。[2] 例如,在酒店、餐厅或其他需要输入密码访问互联网的场所,如果存在强制门户并阻止流量,该功能会阻止所有其他连接尝试。这可能会泄露您的使用习惯。
要禁用强制门户测试,在 about:config
中设置:
-
network.captive-portal-service.enabled
为false
禁用遥测
将 toolkit.telemetry.enabled
设置为 false
,并/或在“偏好设置 > 隐私与安全 > Firefox 数据收集与使用”中禁用。
启用“请勿跟踪”标头
将 privacy.donottrackheader.enabled
设置为 true
,或者在“偏好设置 > 隐私与安全 > 跟踪保护”中切换。
禁用/强制使用“受信递归解析器”
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.enabled
为true
-
network.dns.http3_echconfig.enabled
为true
可能还需要将 network.trr.mode
设置为 2
或 3
。
禁用地理定位
在 about:config
中将 geo.enabled
设置为 false
。
禁用“安全浏览”服务
“安全浏览”提供网络钓鱼保护和恶意软件检查功能,但可能会将用户信息(例如 URL、文件哈希等)发送给 Google 等第三方。
要禁用“安全浏览”服务,请在 about:config
中设置:
-
browser.safebrowsing.malware.enabled
为false
-
browser.safebrowsing.phishing.enabled
为false
此外,为禁用下载检查功能,请将 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.wasm
为false
-
javascript.options.wasm_baselinejit
为false
-
javascript.options.wasm_ionjit
为false
删除系统范围的隐藏扩展
某些扩展是隐藏的,且默认安装在 /usr/lib/firefox/browser/features
中。许多扩展可以通过 rm extension-name.xpi
安全删除。这些扩展可能默认未启用,并且可能有启用或禁用的菜单选项。请注意,删除的文件会在更新 firefox包 时重新出现。为保持这些扩展被移除,可以将其目录添加到 /etc/pacman.conf
的 NoExtract 中。部分扩展包括:
-
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 进行网络搜索
通过减少提供给单一实体的信息量,增强隐私保护。例如,每次通过不同的随机代理发送网络搜索,使单一搜索引擎几乎无法建立用户画像。可以使用 Searx 的公共实例(即站点)来实现这一点。Searx 是一个以 AGPL-3.0 授权的开源站点构建器,用于生成站点(称为“实例”)。每个公共实例都可以作为用户与各种搜索引擎之间的中间人。
从这个和这个公共实例列表中,选择并添加尽可能多的 Searx 网站书签(如果禁用了 JavaScript,需要暂时启用它以加载列表)。为了快速访问这些书签,可以将书签名称更改为 SX1
、SX2
⋯⋯ SX(n)
(其中 (n)
是书签中 Searx 实例的总数)。
添加书签后,只需在网址栏中输入 sx
、一个数字,然后按 Enter
,即可加载一个实例。
参见 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。
企业策略
通过使用企业策略,可以建立网络和系统范围的策略,这些策略既可以补充也可以覆盖用户配置的偏好。例如,文档没有记录禁用测试版渠道更新检查的用户偏好,而一个策略可以作为有效的解决方法。可以通过 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
还可以通过比较清理后的 prefs.js
与工作中的 prefs.js
在 Fingerprint JS API Demo 中的字符串结果,观察隐私方面的附加效果。
extensions.json
extensions.json
文件列出记录的扩展及其设置。值得注意的是其中包含的默认情况下 .mozilla
和 extensions
文件夹所在的用户主目录路径。可以通过将 applyBackgroundUpdates
设置为 0
值来禁用不需要的后台更新。需要注意的还有 installDate
和 updateDate
字段。Bubblewrap 可以有效地屏蔽用户名和主目录路径,此时可以清理并修改 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.lz4
和 search.json.mozlz4
中的类似元数据。mozlz4 是一个支持 Mozilla(非标准)LZ4 文件压缩/解压的命令行工具。
移除子系统
与崩溃报告相关的遥测功能可以通过删除以下文件禁用:
/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.js(arkenfox-user.jsAUR)
- pyllyukko/user.js
- ffprofile.com(GitHub)⸺在线 user.js 生成器。用户可以选择启用和禁用的功能,最后可获取配置模板的 zip 文件下载链接。例如,你可以禁用某些发送数据到 Mozilla 和 Google 的功能,或禁用一些恼人的 Firefox 功能,例如 Mozilla Hello 或 Pocket 集成。
另见
- Brainfucksec's firefox hardening guide(英文)⸺一份维护良好的 Firefox 加固指南。
- Privacy Guides(英文,繁体中文可用)⸺社区维护的帮助保护在线隐私的资源。
- privacytools.io Firefox 隐私插件
- prism-break.org 浏览器插件
- MozillaWiki:Privacy/Privacy Task Force/firefox about config privacy tweeks⸺Mozilla 维护的一个 Wiki 页面,包含隐私相关设置的说明。
- 如何阻止 Firefox 的自动连接⸺详细列出相关的 Firefox 功能和设置,逐项禁用的注解列表。
- 搜索引擎比较⸺用于通过一些以隐私为中心的数据点比较流行搜索引擎的网页。