跳至內容
出自 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 集成。

另見