Der Webbrowser Firefox bietet neben vielen nützlichen Erweiterungen, mit denen zusätzliche Funktionen nachrüsten kann, auch die Möglichkeit, gewisse Dinge anzupassen. Über die Adresse about:config lassen sich wesentlich mehr Parameter einstellen als über die normalen Einstellungen about:preferences. Diese Einstellungen werden im Profilverzeichnis (~/.mozilla/firefox/…) in der Datei prefs.js gesichert.

Daneben gibt es noch die Datei user.js im Profilverzeichnis, die von Firefox zwar gelesen, aber nicht verändert wird und höherwertiger als die prefs.js ist. Da ich mit mehreren Profilen arbeite, habe ich mir eine user.js in ~/.mozilla/firefox angelegt und in allen Profilverzeichnissen einen Symlink darauf gesetzt. So kann ich profilübergreifend zentrale Einstellungen wie die folgenden vornehmen:

user_pref("general.warnOnAboutConfig", false);

// Nur Alt-Drücken zeigt nicht die Menüleiste an
user_pref("ui.key.menuAccessKeyFocuses", false);

// Kompaktere Tab- und Adressleiste
user_pref("browser.uidensity", 1);

user_pref("browser.tabs.insertAfterCurrent", true);
user_pref("privacy.donottrackheader.enabled", true);

Sollte man als Administrator Einstellungen am Firefox vornehmen wollen, die der Benutzer nicht ändern kann, so kann man dies mit einer policies.json erreichen; hier die Beschreibung zur Deaktivierung von DNS-over-HTTPS (DOH). Eine weitere Erklärung für eine autoconfig.js gibt es unter »Firefox mit AutoConfig anpassen | Hilfe zu Firefox für Unternehmen«.

(Überwachungs-)Funktionen von Firefox abschalten

Leider kommt Firefox auch mit einigen unschönen Funktionen wie der Nutzungserfassung und Übermittlung an Mozilla. Zum Teil ist der Wunsch von Mozilla nach solchen Analysefunktionen nachvollziehbar, aber teilweise geht es auch zu weit. Zum Glück ist Firefox so frei, dass sich viele der unerwünschten Funktionen über die user.js deaktivieren lassen.

Kais user.js

Eine sehr gute Sammlung von Einstellungen zur Deaktivierung unschöner Funktionen veröffentlicht Kai regelmäßig im Matrix-Raum #sichere_firefox-einstellungen_de:matrix.chat-secure.de.

Vor dem Einsatz der user.js ist es ratsam, eine Sicherung des Profilverzeichnisses anzufertigen. Es ist zwar nicht zu erwarten, dass es Probleme gibt, aber besser man hat als man hätte. Datensicherungen sind allgemein eine gute Idee.

Version 1.8

(Veröffentlichung),

In der aktuellen Version 1.8 werden die Einstellungen privacy.firstparty.isolate und media.navigator.enabled gesetzt (Danke, @joerg:alea.gnuu.de). Alle Änderung sind wie immer am Anfang der Datei dokumentiert. Außerdem wird die Datei unter die GPLv2 gestellt.

(Veröffentlichung)

Diese Version ist identisch mit der user.js-1.8, jedoch wird hier zusätzlich die Unterstützung für WebRTC (wieder) aktiviert, so dass Videokonferenzen mit Jitsi Meet oder Big Blue Button abgehalten werden können. Wer dies nicht tun möchte, sollte aus Sicherheitsgründen bei der Standard-Version bleiben.

Version 1.7

(Veröffentlichung),

In der aktuellen Version 1.7 werden vor allem das automatische Umschreiben des Schemas von URLs (http → https) und die Installation empfohlener Add-Ons ohne 3rd-Bestätigungsdialog deaktiviert. Alle Änderung sind wie immer am Anfang der Datei dokumentiert.

(Veröffentlichung)

Diese Version ist identisch mit der user.js-1.7, jedoch wird hier zusätzlich die Unterstützung für WebRTC (wieder) aktiviert, so dass Videokonferenzen mit Jitsi Meet oder Big Blue Button abgehalten werden können. Wer dies nicht tun möchte, sollte aus Sicherheitsgründen bei der Standard-Version bleiben.

Version 1.6

(Veröffentlichung),

In der aktuellen Version 1.6 werden die GEO-API, unsichere SSL-Cipher und die Autoplay-Funktion für HTML 5 abgeschaltet. Außerdem wird eine weitere Werbeschnittstelle deaktiviert. Alle Änderung sind wie immer am Anfang der Datei dokumentiert.

(Veröffentlichung)

Diese Version ist identisch mit der user.js-1.6, jedoch wird hier zusätzlich die Unterstützung für WebRTC (wieder) aktiviert, so dass Videokonferenzen mit Jitsi Meet oder Big Blue Button abgehalten werden können. Wer dies nicht tun möchte, sollte aus Sicherheitsgründen bei der Standard-Version bleiben.

Version 1.5

(Veröffentlichung),

In der aktuellen Version 1.5 werden vor allem die Weitergabe von erteilten Berechtigungen (Kamera, Mikrofon etc.) abgeschaltet und die JavaScript-Unterstützung für die interne PDF-Anzeige explizit deaktiviert. Alle Änderung sind wie immer am Anfang der Datei dokumentiert.

(Veröffentlichung)

Diese Version ist identisch mit der user.js-1.5, jedoch wird hier zusätzlich die Unterstützung für WebRTC (wieder) aktiviert, so dass Videokonferenzen mit Jitsi Meet oder Big Blue Button abgehalten werden können. Wer dies nicht tun möchte, sollte aus Sicherheitsgründen bei der Standard-Version bleiben.

Version 1.4

(Veröffentlichung)

In der aktuellen Version 1.4 wird vor allem der JIT-Compiler abgeschaltet. Grund für die Entscheidung ist CVE-2019-17026, eine erneute kritische Schwachstelle im JIT-Compiler.

Version 1.3

(Veröffentlichung)

In der aktuellen Version 1.3 werden die Empfehlungen für die Seite about:addons und die Erkennung einer Netzwerkverbindung abgeschaltet.

Version 1.2

(Veröffentlichung)

In der aktuellen Version 1.2 wird die Integration von Firefox Monitor abgeschaltet. Außerdem wurde ein fehlendes Semikolon ergänzt.

Version 1.1

(Veröffentlichung)

Es gibt eine neue Version der user.js. In der aktuellen Version 1.1 wird das mit Firefox 68 eingeführte Verhalten, CAs des Betriebssystems automatisch zu importieren, wieder abgeschaltet. Gleiches gilt für den automatischen Import der CAs, falls eine Man-in-the-Middle (MITM) Situation erkannt wird (dient der Unterstützung von AV-Software).

Version 1.0

(Veröffentlichung)

Privacytools.io

Von Privacytools.io gibt es neben den Empfehlungen für Erweiterungen zum Schutz der Privatsphäre auch noch eine Liste von Einstellungen für die user.js.

Arkenfox' user.js

Weiterhin habe ich noch »Firefox privacy, security and anti-fingerprinting: a comprehensive user.js template for configuration and hardening« gefunden.

Browser-Console

Ich bin durch das Debuggen vom Firefox auf die Browser-Console gestoßen. Man kann sie zur Laufzeit im Debugger (Strg+Umschalt+i) unter Einstellungen (F1 oder Settings im Dreipunkt-Menü) mit Enable browser chrome and add-on debugging toolboxes und Enable remote debugging aktivieren und sie dann von einer Seite mit Strg-Alt-Umschalt-i öffnen. In der Netzwerk-Analyse sieht man alle Verbindungen, die im gesamten Browser getätigt werden und nicht nur die des aktuellen Tabs. Dies umfasst Verbindungen von Add-ons, Verbindungen für OCSP und Dinge, die Firefox so treibt.

Interessant ist aber auch, was Firefox so direkt nach dem Start treibt. Dies kann man sehen, wenn man den Browser mit firefox --wait-for-jsdebugger --jsdebugger startet. Damit wird sofort die Browser-Console geöffnet und man sieht auch Verbindungen, die Firefox nur am Anfang tätigt.

So habe ich unter anderem noch Funktionen vom Firefox entdeckt, die ich nicht wirklich nutzen will:

// https://hg.mozilla.org/integration/autoland/rev/2e53567a367c
user_pref("browser.topsites.contile.enabled", false);

// disable Remote settings from https://firefox.settings.services.mozilla.com/v1
// https://searchfox.org/mozilla-central/source/modules/libpref/init/all.js#2192
user_pref("services.settings.server", "x-https://firefox.settings.services.mozilla.com/v1");

// https://support.mozilla.org/en-US/questions/1261510
user_pref("dom.push.enabled", false);

Das Web-Push klingt sehr interessant und wenn es alternative Anbieter gäbe, sodass nicht alles über Mozilla läuft, würde ich dies einsetzen. Vor allem für Mobilgeräte ist es interessant, da sich für diese Google als massive Push-Zentrale etabliert hat. Aber bei Remote settings läuft mir ein kalter Schauer über den Rücken. Für Firmen klingt das nach einem hilfreichen Werkzeug, aber ich möchte meine Konfiguration selbst verwalten. Und bei Contile handelt es sich um irgendwelche Bilder von Partnern, die Firefox in der Adressleiste oder auf der Startseite anzeigt – uninteressant, dafür dass sie alle paar Minuten »aktualisiert« werden.

Bei der Suche nach den Ursprüngen der Zugriffe bin ich auf eine große Dokumentation vieler Firefox-Einstellungen gestoßen.