本文概述了如何配置 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 功能和設置,逐項禁用的註解列表。
- 搜尋引擎比較⸺用於通過一些以隱私為中心的數據點比較流行搜尋引擎的網頁。