Quitter le forum et retourner au site

et si on sécurisait (un peu plus) Firefox ?

Vous avez un didactiel ou une astuce particulière concernant un logiciel, partagez votre expérience dans cette partie.
Avatar de l’utilisateur
le Manchot Masqué
Administrateur du site
Messages : 719
Inscription : lun. 26 mai 2008, 21:05
Distribution : Debian, Ubuntu
Niveau : Moitié plein !
Localisation : Guebwiller

et si on sécurisait (un peu plus) Firefox ?

Message par le Manchot Masqué »

Firefox stocke par défaut les préférences de l'utilisateur dans le fichier /home/nom_utilisateur/.mozilla/firefox/xxxxxxxx.default/prefs.js.
Si vous avez plusieurs profils dans ce dossier, c'est le fichier profiles.ini qui indique le profil par défaut, les autres pouvant être appelés au démarrage via des options de la ligne de commande que nous ne verrons pas ici.

Comme le suggère l'extension en ".js", "prefs.js" est un simple fichier Javascript (qui n'a rien à voir avec le langage Java) contenant des lignes de la forme :

Code : Tout sélectionner

user_pref(clé,valeur)
Si on tape l'URL about:config dans la barre d'adresse de Firefox, on se rend vite du nombre impressionnant (plusieurs milliers !) de réglages possibles dans le logiciel, en sachant que chaque module installé en sus par l'utilisateur vient ajouter de nouvelles clés/valeurs dans la table de hachage par défaut.

Dans une entreprise ou une association, et même une famille, il peut être utile pour les administrateurs de verrouiller un certain nombre de ces réglages, et d'empêcher les usagers de faire n'importe quoi, même si le risque reste limité, chaque utilisateur ne pouvant finalement détruire que sa propre session.

En 2015, l'agence nationale de la sécurité des système d'information (ANSSI) a publié un document PDF (https://www.ssi.gouv.fr/uploads/2015/01 ... ox_1-1.pdf) sur le paramétrage conseillé de Firefox en entreprise. Nous ne reprenons pas ici tous les réglages proposés par l'ANSSI, tout simplement parce qu'ils ne conviennent pas à des familles ou des particuliers. Empêcher par exemple les gens de mettre leurs vidéos en plein écran peut se défendre en entreprise, mais n'a aucun sens chez M. ou Mme Michu.

Nous avons donc essayé de trouver un compromis acceptable, qui n'est pas, et ne sera jamais, parfait. Le but ici est d'offrir un canevas de départ, que chacun pourra modifier et utiliser à sa convenance. Il est juste dommage que l'ANSSI n'ait pas pensé à faire ce travail elle-même : cela nous aurait sûrement économisé du temps, et sauf erreur de ma part, ce sont aussi les impôts des particuliers qui font vivre l'ANSSI. Le monde n'appartient pas qu'aux entreprises.

Avant de donner nos réglages, il faut impérativement comprendre préalablement le fonctionnement de Firefox.

La logique de Firefox au démarrage est de rechercher les réglages administrateurs dans le fichier /etc/firefox/firefox.js (ou /etc/firefox-esr/firefox-esr.js).
Là encore, il s'agit d'un simple fichier texte en Javascript, sous la forme clé=valeur.

L'administrateur peut ensuite proposer un réglage par défaut en laissant ses usagers libres de le modifier si besoin. Dans ce cas, il rajoutera une ligne du type :

Code : Tout sélectionner

pref(clé,valeur);
Mais il peut aussi "forcer" (verrouiller) le réglage, dans ce cas, il utilisera une ligne du type :

Code : Tout sélectionner

lockPref(clé,valeur);
Firefox lit donc ce premier fichier dans /etc, puis il lit le second fichier prefs.js dans le dossier de l'utilisateur, et fait enfin la synthèse des deux.
Comme on le voit, le mécanisme est finalement assez simple à mettre en place.

Il est juste dommage que l'URL about:config ne propose pas un descriptif détaillé, même en anglais, de chaque clé. On gagnerait beaucoup à comprendre qui rajoute quoi et où.
De ce côté-là, la base de registre DCONF, utilisée sous GNU/Linux par plusieurs environnements de bureau, est quand même plus ergonomique et plus facile à manipuler, mais passons...

A noter également que le

Code : Tout sélectionner

try { ... } catch { ... } 
ici proposé ne semble pas vraiment faire son travail d'après nos tests internes - si vous avez d'autres voies ou d'autres idées d'améliorations, nous sommes évidemment ouverts à toute suggestion !

Pour le reste, les numéros de page se réfèrent au document de l'ANSSI, et vous permettront de choisir vos propres options en connaissance de cause.

Dernier conseil : faites d'abord une sauvegarde de votre fichier original dans /etc/firefox(-esr), histoire de pouvoir revenir en arrière au cas où !

Les réglages ici proposés imposent le moteur de recherche Qwant par exemple - libre à vous de l'accepter ou non.

En vous souhaitant bonne utilisation ! (et bon courage - mais la sécurité de vos usagers vaut bien un peu de temps)

Contenu de /etc/firefox/firefox.js (ou /etc/firefox-esr/firefox-esr.js) proposé :

Code : Tout sélectionner

// This is the Debian specific preferences file for Firefox ESR
// You can make any change in here, it is the purpose of this file.
// You can, with this file and all files present in the
// /etc/firefox-esr directory, override any preference you can see in
// about:config.
//
// Note that lockPref is allowed in these preferences files if you
// don't want users to be able to override some preferences.

// Use LANG environment variable to choose locale
lockPref("intl.locale.matchOS", true);

// Disable openh264.
lockPref("media.gmp-gmpopenh264.enabled", false);

// Default to classic view for about:newtab
lockPref("browser.newtabpage.enhanced", false);

try {
	
// ------------------------------------------------------------------
// https://www.ssi.gouv.fr/uploads/2015/01/NP_NavigateurSecurise_FireFox_1-1.pdf
// ------------------------------------------------------------------

// PAGE 16

// Les extensions peuvent être désactivées automatiquement en fonction de leur localisation.
// 3 (les extensions déposées dans le profil Firefox de l’utilisateur ou dans le profil utilisateur Windows seront automatiquement désactivées20 )

lockPref("extensions.autoDisableScopes",3);

// Les extensions peuvent être activées automatiquement en fonction de leur localisation
// 12 (seules les extensions référencées par une entrée en base de registres ou déposées dans le sous-dossier d’extensions à l’emplacement de l’exécutable FireFox seront activées.Attention, ce paramètre a priorité sur extensions.autoDisableScopes

lockPref("extensions.enabledScopes",12);

// PAGE 17

// Téléchargement régulier d’une liste noire de modules référencés comme étant malveillants
// false si seuls les modules télé-déployés par les équipes informatique sont installés, ou true si l’utilisateur est en mesure d’installer des modules lui-même

lockPref("extensions.blocklist.enabled",true);

// URL de la page qu’un utilisateur peut visiter pour en savoir plus sur la liste noire de modules
// Celle par défaut (https://www.mozilla.org/%LOCALE%/blocklist/)

lockPref("extensions.blocklist.detailsURL","https://www.mozilla.org/%LOCALE%/blocklist/");

// URL de la page qu’un utilisateur peut visiter pour en savoir plus sur la liste noire de modules (variante)
// Celle par défaut (https://addons.mozilla.org/%LOCALE%/%APP%/blocked/%blockID%)
lockPref("extensions.blocklist.itemURL","https://addons.mozilla.org/%LOCALE%/%APP%/blocked/%blockID%");

// Intervalle de téléchargement de la liste noire de modules, en secondes
// 86400 (soit 1 fois par jour)

lockPref("extensions.blocklist.interval",86400);

// Niveau de blocage
// 2 (pour bloquer les extensions de la liste)

lockPref("extensions.blocklist.level",2);

// Adresse de téléchargement de la liste noire de modules
// Celle par défaut (https://addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/% PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE% /%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/)

lockPref("extensions.blocklist.url","https://addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/% PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE% /%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/");

// Modules activés au démarrage de Firefox

lockPref("extensions.enabledAddons","");

// Désactiver la visionneuse PDF intégrée à Firefox (pdf.js)
// true pour que l’utilisateur télécharge les PDF et les visionne via un lecteur PDF tiers maintenu en conditions de sécurité par l’entité et ne faisant pas l’objet de vulnérabilités fréquentes, ou false pour autoriser l’usage du lecteur de PDF intégré.

lockPref("pdfjs.disabled",false);

// Configuration d’activation du plugin Flash
// 1 (demander l’autorisation à l’utilisateur avant chaque exécution du plugin Flash) ou 2 (toujours activer) au choix de l’entité et en fonction des utilisateurs et des contraintes de sécurité

lockPref("plugin.state.flash",1);

// Configuration d’activation du plugin Java
// 0 pour ne jamais activer le plugin Java (à moins que l’entité souhaite utiliser ce plugin malgré les risques de sécurité encourus, auquel cas la valeur à donner serait 1 pour demander l’autorisation à l’utilisateur à chaque exécution du plugin Java)

lockPref("plugin.state.java",1);

// Configuration d’activation du plugin x, où x est à remplacer par le nom court du plugin à désactiver (exemple : npctrl pour Microsoft Silverlight.Les noms courts des plugins sont indiqués en affichant leurs informations détaillées depuis l’interface graphique)
// 0 pour ne jamais activer le plugin, ou 1 pour demander l’autorisation à l’utilisateur avant chaque exécution du plugin

lockPref("plugin.state.x",1);

// Configuration d’activation des autres plugins
// 0 pour ne jamais activer un plugin non explicitement autorisé par les règles précédentes

lockPref("plugin.default.state",0);

// Configuration d’activation des autres plugins au format XPI
// 0 pour ne jamais activer un plugin au format XPI non explicitement autorisé par les règles précédentes

lockPref("plugin.defaultXpi.state",0);

// Cliquer pour lire le contenu nécessitant un plugin
// true pour activer le mode « Cliquer pour lire »

lockPref("plugins.click_to_play",true);

// Chargement automatique des plugins depuis des emplacements utilisés avant Firefox 21

lockPref("plugins.load_appdir_plugins",false);

// PAGE 18

// BLOCAGE DES MODULES COMPLEMENTAIRES POUR LES UTILISATEURS

// URL de récupération d’un module complémentaire

//lockPref("extensions.getAddons.getWithPerformance.url","");

// Nombre de résultats maximum

//lockPref("extensions.getAddons.maxResults",0);

// URL de consultation d’un module complémentaire

//lockPref("extensions.getAddons.get.url","");

// URL de consultation des modules complémentaires recommandés

//lockPref("extensions.getAddons.recommended.browseURL","");

// URL de consultation des modules complémentaires recommandés, par API

//lockPref("extensions.getAddons.recommended.url","");

// URL de recherche de modules complémentaires

//lockPref("extensions.getAddons.search.browseURL","");

// URL de recherche de modules complémentaires, par API

//lockPref("extensions.getAddons.search.url","");

// Afficher le panneau d’ajout de modules complémentaires

//lockPref("extensions.getAddons.showPane",false);

// Cacher le bouton d’installation manuelle d’extensions

//lockPref("extensions.hideInstallButton",true);

// URL du catalogue d’extensions

//lockPref("extensions.webservice.discoverURL","");

// Autoriser l’installation manuelle de modules au format XPI

//lockPref("xpinstall.enabled",false);

// Obligation pour une archive XPI d’être en liste blanche pour être installée manuellement

//lockPref("xpinstall.whitelist.required",true);

// Liste blanche d’archives XPI pouvant être installées manuellement

//lockPref("xpinstall.whitelist.add xpinstall.whitelist.add.*","");

// STRATEGIES DE MAJ DES EXTENSIONS

// Vérifie les attributs du certificat de signature des correctifs téléchargés

//lockPref("extensions.hotfix.cert.checkAttributes",true);

// Empreintes attendues du certificat de signature des correctifs téléchargés
// Laisser la valeur par défaut (91:53:98:0C:C1:86:DF:47 :8F:35:22:9E:11:C9:A7:31 :04:49:A1:AA en date de rédaction de ce document).

//lockPref("extensions.hotfix.certs.1.sha1Fingerprint",Laisser la valeur par défaut (91:53:98:0C:C1:86:DF:47 :8F:35:22:9E:11:C9:A7:31 :04:49:A1:AA en date de rédaction de ce document).);

// Télécharger et installer automatiquement les mises à jour d’extensions

//lockPref("extensions.update.autoUpdateDefault",true);

// URL de téléchargement des mises à jour d’extensions URL en arrière plan

//lockPref("extensions.update.background.","");

// Activer la mise à jour des extensions

//lockPref("extensions.update.enabled",false);

// Intervalle de téléchargement des mises à jour des extensions
// 86400 (soit 1 fois par jour)

//lockPref("extensions.update.interval",86400);

// Notifier l’utilisateur de la présence d’une mise à jour pour ses modules complémentaires

//lockPref("plugins.update.notifyUser",false);

// URL de mise à jour des modules complémentaires

//lockPref("plugins.update.url","");

// PAGE 19

// SSL/TLS et certificats

lockPref("security.ssl3.dhe_dss_aes_128_sha",false);
lockPref("security.ssl3.dhe_dss_aes_256_sha",false);
lockPref("security.ssl3.dhe_dss_camellia_128_sha",false);
lockPref("security.ssl3.dhe_dss_camellia_256_sha",false);
lockPref("security.ssl3.dhe_rsa_aes_128_sha",true);
lockPref("security.ssl3.dhe_rsa_aes_256_sha",true);
lockPref("security.ssl3.dhe_rsa_camellia_128_sha",false);
lockPref("security.ssl3.dhe_rsa_camellia_256_sha",false);
lockPref("security.ssl3.dhe_rsa_des_ede3_sha",false);
lockPref("security.ssl3.ecdhe_ecdsa_aes_128_gcm_sha256",true);
lockPref("security.ssl3.ecdhe_ecdsa_aes_128_sha",true);
lockPref("security.ssl3.ecdhe_ecdsa_aes_256_sha",true);
lockPref("security.ssl3.ecdhe_ecdsa_rc4_128_sha",false);
lockPref("security.ssl3.ecdhe_rsa_aes_128_gcm_sha256",true);
lockPref("security.ssl3.ecdhe_rsa_aes_128_sha",true);
lockPref("security.ssl3.ecdhe_rsa_aes_256_sha",true);
lockPref("security.ssl3.ecdhe_rsa_des_ede3_sha",false);
lockPref("security.ssl3.ecdhe_rsa_rc4_128_sha",false);
lockPref("security.ssl3.rsa_aes_128_sha",true);
lockPref("security.ssl3.rsa_aes_256_sha",true);
lockPref("security.ssl3.rsa_camellia_128_sha",false);
lockPref("security.ssl3.rsa_camellia_256_sha",false);
lockPref("security.ssl3.rsa_des_ede3_sha",false);
lockPref("security.ssl3.rsa_fips_des_ede3_sha",false);
lockPref("security.ssl3.rsa_rc4_128_md5",false);
lockPref("security.ssl3.rsa_rc4_128_sha",false);
lockPref("security.ssl3.rsa_seed_sha",false);

// Version maximum de SSL/TLS : TLS 1.2

lockPref("security.tls.version.max",3);

// Version minimum de SSL/TLS : TLS 1.1

lockPref("security.tls.version.min",2);

// Activer la renégociation SSL pour remédier à une attaque par le milieu connue

lockPref("security.ssl.allow_unrestricted_renego_everywhere__temporarily_available_pref",false);

// Activer « SSL False Start » car non standardisé et amenant de potentielles vulnérabilités

lockPref("security.ssl.enable_false_start",false);

// Activer l’OCSP stapling
// https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/

lockPref("security.ssl.enable_ocsp_stapling",true);

// PAGE 20

// Nécessite une négociation SSL qui n’utilise pas une ancienne version SSL/TLS vulnérable à des attaques par le milieu
// true est la valeur idéale en termes de sécurité, mais false reste conseillé pour éviter que de nombreux sites couramment visités ne soient plus utilisables

lockPref("security.ssl.require_safe_negotiation",true);

// Liste d’hôtes autorisés à faire de la renégociation SSL avec d’anciennes versions vulnérables du protocole
// Liste d’hôtes séparés par des virgules (ne supportant  pas  les wildcards ) et  qu’il  est  utile  de  renseigner si security.ssl.require_safe_negotiation est configuré à true

lockPref("security.ssl.renego_ unrestricted_hosts","");

// Informer l’utilisateur (cadenas cassé rouge dans la barre de status) lorsque les négociations SSL/TLS sont non sécurisées 

lockPref("security.ssl.treat_unsafe_negotiation_as_broken",true);

// Charger la liste de sites déclarés comme utilisant HSTS (HTTP Strict Transport Security)

lockPref("network.stricttransportsecurity.preloadlist",true);

// Autoriser les WebSockets non sécurisées pour un site consulté en HTTPS

lockPref("network.websocket.allowInsecureFromHTTPS",false);

// Activer OCSP 
// 2 pour vérifier le certificat à partir de l’URL de service OCSP et de l’autorité de certification ayant signé le certifi- cat.Notons que cette fonctionnalité est critiquée pour des questions de latence des répondeurs OCSP (de l’or- dre de 300ms pour les plus rapides à plus d’une seconde pour les plus lents).OCSP tend donc à être remplacé par des listes locales de certificats révoqués dans d’autres navigateurs, mais Firefox ne dispose pas encore d’une telle liste.Une entité ayant des contraintes particulières quant à la latence induite par OSCP pourrait opter pour une désactivation d’OCSP avec la valeur 0 

lockPref("security.OCSP.enabled",2);

// Nécessite la validation du certificat par OCSP avant de continuer la navigation sur le site 
// true si security.OCSP.enabled a été configuré à true , ou false dans le cas contraire.

lockPref("security.OCSP.require",true);

// Niveau de certificate pinning (épinglage de certificats) à partir de Firefox 32
// 2 pour utiliser l’épinglage strict

lockPref("security.cert_pinning.enforcement_level",2);

// GESTION DES MOTS DE PASSE

// Effacer les mots de passe enregistrés à la fermeture du navigateur

lockPref("privacy.clearOnShutdown.passwords",false);

// Active le gestionnaire de mots de passe

lockPref("signon.rememberSignons",true);

// Remplissage automatique des formulaires de login

lockPref("signon.autofillForms",true);

// PAGE 21

// DESACTIVATION DE FIREFOX SYNC

// Synchronisation des modules complémentaires

lockPref("services.sync.engine.addons",false);

// Synchronisation des marque-pages

lockPref("services.sync.engine.bookmarks",false);

// Synchronisation de l’historique de navigation

lockPref("services.sync.engine.history",false);

// Synchronisation des mots de passe stockés

lockPref("services.sync.engine.passwords",false);

// Synchronisation des préférences

lockPref("services.sync.engine.prefs",false);

// Synchronisation des onglets ouverts

lockPref("services.sync.engine.tabs",false);

// Moteurs de synchronisation enregistrés

lockPref("services.sync.registerEngines","");

// URL du serveur synchronisation jpake

lockPref("services.sync.jpake.serverURL","");

// URL du serveur de synchronisation

lockPref("services.sync.serverURL","");

// URL du serveur de synchronisation

lockPref("services.sync.serverURL","");

// URI du serveur de jetons

lockPref("services.sync.tokenServerURI","");

// Planification de la prochaine synchronisation

lockPref("services.sync.nextSync",0);

// DESACTIVATION DES RAPPORTS DE MOZILLA

// URL de rapport de santé

lockPref("datareporting.healthreport.about.reportUrl","");

// Activer la journalisation (console) du service de rapports de santé

lockPref("datareporting.healthreport.logging.consoleEnabled",false);

// Activer la journalisation (dumps) du service de rapports de santé

lockPref("datareporting.healthreport.logging.dumpEnabled",false);

// Date de prochaine soumission de rapport de santé

lockPref("datareporting.healthreport.nextDataSubmissionTime","");

// Activer le service de rapport de santé

lockPref("datareporting.healthreport.service.enabled",false);

// Autoriser l’envoi de données au serveur de rapports de santé

lockPref("datareporting.healthreport.uploadEnabled",false);

// Activer l’envoi de données à Mozilla à des fins d’amélioration

lockPref("datareporting.policy.dataSubmissionEnabled",false);

// Accepter les conditions d’envoi de données à Mozilla à des fins d’amélioration

lockPref("datareporting.policy.dataSubmissionPolicyAccepted",false);

// Contourner l’acceptation des conditions d’envoi de données à Mozilla à des fins d’amélioration

lockPref("datareporting.policy.dataSubmissionPolicyBypassAcceptance",false);

// Réponse aux conditions d’envoi de données à Mozilla à des fins d’amélioration

lockPref("datareporting.policy.dataSubmissionPolicyResponseType","accepted-info -bar-dismissed");

// Intégrer l’URL au rapport de crash de plugins

lockPref("dom.ipc.plugins.reportCrashURL",false);

// Activer le rapport de crash du sousprocessus flash

lockPref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled",false);

// Activer la fonctionnalité de télémétrie

lockPref("toolkit.telemetry.enabled",false);

// Adresse du serveur de télémétrie

lockPref("toolkit.telemetry.server","");

// URL du rapport de crash

lockPref("breakpad.reportURL","");

// PAGE 22

// GESTION DES DONNEES PRIVEES (CLEAR PRIVATE DATA)

// Supprimer le cache lors d’une suppression des données privées

lockPref("privacy.cpd.cache",false);

// Supprimer les cookies lors d’une suppression des données privées

lockPref("privacy.cpd.cookies",false);

// Supprimer l’historique des téléchargements lors d’une suppression des données privées

lockPref("privacy.cpd.downloads",false);

// Supprimer l’historique de remplissage automatique des formulaire lors d’une suppression des données privées

lockPref("privacy.cpd.formdata",false);

// Supprimer l’historique lors d’une suppression des données privées

lockPref("privacy.cpd.history",false);

// Supprimer les applications disponibles hors connexion lors d’une suppression des données privées

lockPref("privacy.cpd.offlineApps",false);

// Supprimer les mots de passe enregistrés lors d’une suppression des données privées

lockPref("privacy.cpd.passwords",false);

// Supprimer les sessions en cours enregistrées lors d’une suppression des données privées

lockPref("privacy.cpd.sessions",false);

// Supprimer les paramètres par site lors d’une suppression des données privées

lockPref("privacy.cpd.siteSettings",false);

// Supprimer les données privées à la fermeture du navigateur

lockPref("privacy.sanitize.sanitizeOnShutdown",false);

// AUTRES PARAMETRES LIES A LA CONFIDENTIALITE

// effacer les sessions de navigation en cours lors de la fermeture du navigateur

lockPref("privacy.clearOnShutdown.sessions",true);

// effacer les cookies de navigation lors de la fermeture du navigateur

lockPref("privacy.clearOnShutdown.cookies",true);

// Activer Do-Not-Track

lockPref("privacy.donottrackheader.enabled",true);

// désactiver la géolocalisation

lockPref("geo.enabled",false);

// URI du service de géolocalisation à utiliser

lockPref("geo.wifi.uri","");

// Téléchargement prédictif anticipé des documents liés à la page Web visités (link prefetching)26
// false pour éviter l’établissement de connexions et le téléchargement de contenu non sollicités

lockPref("network.prefetch-next",false);

// Contourne la permission d’accéder à la webcam

lockPref("media.navigator.permission.disabled",false);

// Activer l’envoi de l’entête referer
// 0 pour plus d’anonymat, ou 2 pour ne pas empêcher le fonctionnement de certains sites

lockPref("network.http.sendRefererHeader",0);

// Activer l’envoi de requête POST lors du clic sur un lien (fonctionnalité souvent utilisée pour tracer les clics)

lockPref("browser.send_pings",false);

// PAGE 23

// FILTRAGE DE CONTENU / ACTIONS AUTORISEES

// Autoriser les scripts à fermer une fenêtre

lockPref("dom.allow_scripts_to_close_windows",false);

// Interdire la modification des images sources par script

lockPref("dom.disable_image_src_set",false);

// Interdire le changement de fenêtre active par script

lockPref("dom.disable_window_flip",true);

// Détermine si les fenêtres peuvent être bougées or redimensionnées par script

lockPref("dom.disable_window_move_resize",false);

// Interdire la création fenêtre sans bouton fermeture
// true pour éviter les popups invasifs

lockPref("dom.disable_window_open_feature.close",true);

// Interdire la création de fenêtre sans barre d’adresse
// true pour que l’utilisateur puisse toujours vérifier être à l’adresse prévue

lockPref("dom.disable_window_open_feature.location",true);

// Interdire la création de fenêtre sans barre de status
// true pour que l’utilisateur puisse se rendre contre plus facilement des tentatives de spoofing

lockPref("dom.disable_window_open_feature.status",true);

// Interdire la création de fenêtre sans barre de titre
// true pour que l’utilisateur puisse bien voir qu’il s’agit d’un popup Firefox

lockPref("dom.disable_window_open_feature.titlebar",true);

// Interdire la création de fenêtre sans barre d’outils

lockPref("dom.disable_window_open_feature.toolbar",false);

// Permettre à un script de saisir les événements du presse papier

lockPref("dom.event.clipboardevents.enabled",false);

// Permettre à un script de saisir les événements d’accès au menu contextuel (clic droit)

lockPref("dom.event.contextmenu.enabled",false);

// Activer la communication par API entre applications

lockPref("dom.inter-app-communication-api.enabled",false);

// Activation du plugin container
// true pour exécuter les plugins dans le plugin-container

lockPref("dom.ipc.plugins.enabled",true);

// Exécuter Java au sein du plugin-container
// false pour éviter des problèmes de stabilité

lockPref("dom.ipc.plugins.java.enabled",false);

// PAGE 24

// Utiliser la navigation sécurisée (protection contre le phishing et les logiciels malveillants)

lockPref("browser.safebrowsing.enabled",true);

// Activation de Javascript

lockPref("javascript.enabled",true);

// Autoriser le scripting de plugins par des scripts qui ne sont pas de confiance
// false à moins d’une incompatibilité avec des plugins et/ou pages Web nécessaires à l’entité

lockPref("security.xpconnect.plugin.unrestricted",false);

// Bloquer le contenu mixte actif

lockPref("security.mixed_content.block_active_content",true);

// Bloquer le contenu mixte passif

lockPref("security.mixed_content.block_display_content",false);

// Politique d’origine stricte pour les URi de type fichiers
// true sauf pour les populations de développeurs qu’un tel paramètre pourrait bloquer pour le développement en local

lockPref("security.fileuri.strict_origin_policy",true);

// Politique de gestion des cookies
// 1 pour n’autoriser que les cookies du serveur d’origine, et bloquer les cookies tiers

lockPref("network.cookie.cookieBehavior",1);

// Politique d’expiration des cookies
// 2 pour conserver les cookies pendant toute la durée de la session seulement

lockPref("network.cookie.lifetimePolicy",2);

// Restreindre les cookies tiers à la durée de la session seulement

lockPref("network.cookie.thirdparty.sessionOnly",true);

// N’ouvrir que les .jar servis avec un content-type adéquat

lockPref("network.jar.open-unsafe-types",false);

// Politique de popups
// 1 pour activer les popups, ou 2 pour les rejeter mais cela rendrait la navigation difficile voire impossible sur une quantité de sites Internet non négligeable

lockPref("privacy.popups.policy",1);

// Afficher un message lorsqu’un popup a été bloqué

lockPref("privacy.popups.showBrowserMessage",true);

// Afficher l’icône du bloqueur de popups dans la barre de status

lockPref("browser.popups.showPopupBlocker",true);

// Activer la Content Security Policy (politique de sécurité des contenus) qui permet de détecter et de limiter l’impact de certains types d’attaques

lockPref("security.csp.enable",true);

// Activer l’API permettant d’afficher du contenu en plein écran pour les modules complémentaires

lockPref("full-screen-api.enabled",true);

// Désactiver les notifications sur le bureau

lockPref("notification.feature.enabled",false);

// PAGE 25

// MOTEUR DE RECHERCHE

// Moteur de recherche par défaut

lockPref("browser.search.defaultenginename","Qwant.com");

// URL du moteur de recherche par défaut

lockPref("browser.search.defaulturl","https://www.qwant.com/web");

// Journalisation de l’utilisation des services de recherche à des fins de déboggage

lockPref("browser.search.log",false);

// Ouvrir les résultats de recherche dans un nouvel onglet

lockPref("browser.search.openintab",false);

// Moteur de recherche à utiliser en priorité 1

lockPref("browser.search.order.1","Qwant.com");

// activer les suggestions

lockPref("browser.search.suggest.enabled",false);

// Recherche de mises à jour pour les modules de recherche

lockPref("browser.search.update",false);

// Permettre de faire une recherche depuis la barre d’adresse

lockPref("keyword.enabled",true);

// PAGES D'ACCUEIL

// Page d’accueil après une mise à jour de Firefox

lockPref("startup.homepage_override_url","https://www.qwant.com/web");

// Page d’accueil au premier démarrage

lockPref("startup.homepage_welcome_url","https://www.qwant.com/web");

// Page d’accueil

lockPref("browser.startup.homepage","https://www.qwant.com/web");

// Page d’accueil
// 1 pour ouvrir la page d’accueil indiquée par le paramètre browser.startup.homepage

lockPref("browser.startup.page",1);

// Restauration de session après crash

lockPref("browser.sessionstore.resume_from_crash",false);

// Activer le service de restauration de session

lockPref("browser.sessionstore.enabled",false);

// Page ouverte par défaut lors de la création d’un nouvel onglet de navigation
// about:blank pour une page vide, ou l’adresse d’un site Web ou intranet selon le choix de l’entité

lockPref("browser.newtab.url","about:blank");

// PAGE 26

// AUTHENTIFICATION HTTP / NOM DE STRATEGIE

// Utiliser le module d’authentification NTLM de Firefox plutôt que celui fourni par les APIs du système

lockPref("network.auth.force-generic-ntlm",false);

// Utiliser SSPI plutôt que GSSAPI pour l’authentification Kerberos
// true sous Windows

lockPref("network.auth.use-sspi",true);

// Envoyer le LM Hash dans la réponse NTLM

lockPref("network.ntlm.send-lm-response",false);

// Authentification par NTLM automatique avec les serveurs proxy
// Au choix de l’entité en fonction du système d’authentification utilisé par le serveur proxy d’entreprise

lockPref("network.automatic-ntlmauth.allow-proxies",false);

// Liste des URIs autorisées pour l’authentification par NTLM automatique
// Liste de valeurs séparées par des virgules (exemple : monsite.fr, https://monsite.fr.
// L’entité y fera figurer les adresses de tous les sites ayant recours à une authentification NTLM automatique

lockPref("network.automatic-ntlmauth.trusted-uris","");

// Autoriser l’authentification NTLM automatique avec des sites sans FQDN
// false à moins que la liste network.automaticntlm-auth.trusted-uris comporte des adresses sans FQDN

lockPref("network.automatic-ntlmauth.allow-non-fqdn",false);

// Autoriser l’authentification SPNEGO avec des sites sans FQDN
// En fonction de l’entité

lockPref("network.negotiate-auth.allow-nonfqdn",false);

// Autoriser SPNEGO29 si demandé par un serveur proxy
// Au choix de l’entité en fonction du système d’authentification utilisé par le serveur proxy d’entreprise

lockPref("network.negotiate-auth.allowproxies",false);

// Liste des URIs autorisées pour lesquels le navigateur peut déléguer l’autorisation de l’utilisateur
// Liste de valeurs séparées par des virgules (exemple : monsite.fr, https://monsite.fr.L’entité y fera figurer les adresses de tous les sites auxquels elle souhaite permettre la délégation SPNEGO

lockPref("network.negotiate-auth.delegationuris","");

// Liste des URIs autorisées pour engager une authentification SPNEGO
// Liste de valeurs séparées par des virgules (exemple : monsite.fr, https://monsite.fr.L’entité y fera figurer les adresses de tous les sites ayant recours à une authentification SPNEGO
lockPref("network.negotiate-auth.trusted-uris","");

// Chemin vers une librairie GSSLIB spécifique

lockPref("network.negotiate-auth.gsslib","");

// Utiliser la librairie GSSLIB native du système

lockPref("network.negotiate-auth.usingnative-gsslib",true);

// Choix du certificat d’authentification client

lockPref("security.default_personal_cert","Ask Every Time");

// PAGE 27

// SERVEUR MANDATAIRE

// URL de configuration automatique du proxy

lockPref("network.proxy.autoconfig_url","");

// Adresse du proxy FTP
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.ftp","");

// port du proxy FTP
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.ftp_port","");

// Adresse du proxy proxy HTTP
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.http","");

// port du proxy HTTP
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.http_port","");

// Liste d’exceptions à l’utilisation du serveur proxy
// A minima localhost, 127.0.0.1 et davantage en fonction de l’entité et du périmètre d’utilisation du navigateur

lockPref("network.proxy.no_proxies_on","localhost,127.0.0.1");

// Utiliser le même proxy pour tous les protocoles

lockPref("network.proxy.share_ proxy_settings",false);

// Adresse du proxy socks
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé
lockPref("network.proxy.socks","");

// port du proxy socks
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.socks_port","");

// Réaliser les requêtes DNS via le proxy socks

lockPref("network.proxy.socks_ remote_dns",false);

// Version du proxy socks
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.socks_version","");

// Adresse du proxy HTTPS
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.ssl","");

// port du proxy HTTPS
// À renseigner selon la configuration de l’entité et si un tel proxy est utilisé

lockPref("network.proxy.ssl_port","");

// Type d’utilisation du proxy
// 1 pour utiliser les valeurs indiquées par les paramètres ci-dessus (network.proxy.*)

lockPref("network.proxy.type",0);

// version de proxy
// 1.1 par défaut et en fonction du serveur proxy de l’entité

lockPref("network.http.proxy.version","1.1");

// Activer le pipelining30 par proxy
// false pour des raisons de compatibilité.L’entité peut choisir de l’activer si le pipelining est supporté par son serveur proxy d’entreprise

lockPref("network.http.proxy.pipelining",false);

// Saisie automatique du mot de passe de proxy

lockPref("signon.autologin.proxy",false);

// PAGE 28

// PERIMETRE DE NAVIGATION

// Détermine si le navigateur essaye d’ouvrir les liens cliqués dans le navigateur en priorité avant de laisser le système s’en charger en cas d’échec (si le protocole du lien en question n’est pas supporté par le navigateur)

lockPref("network.protocolhandler.expose-all",true);

// Avertir l’utilisateur avant charger un gestionnaire protocole tiers

lockPref("network.protocol-handler.warnexternal-default",true);

// Action pour l’ouverture d’un protocole non pris en charge par le navigateur
// false de manière à ne pas essayer de charger des protocoles non pris en charge nativement par le navigateur.L’entité renseignera éventuellement des gestionnaires de protocoles tiers pour des protocoles qu’elle souhaite explicitement permettre, tels que NNTP :, Mailto :, etc.Pour illustrer par l’exemple avec Mailto :, le paramètre network.protocolhandler.external.mailto aurait pour valeur true et le paramètre network.protocolhandler.app.mailto avec pour valeur le chemin d’un exécutable comme Mozilla Thunderbird ou Microsoft Outlook

lockPref("network.protocolhandler.external-default",false);

// Gestionnaire de protocole file:// sous Firefox

lockPref("network.protocolhandler.external.file",false);

// Gestionnaire de protocole ftp:// sous Firefox

lockPref("network.protocolhandler.external.ftp",false);

// Autoriser les sites Web à installer des gestionnaires de protocoles ou de contenus utilisable pour des hôtes tiers

lockPref("gecko.handlerService.allowRegisterFromDifferentHost",false);

// PAGE 29

// ADMINISTRATION SYSTEME / MAINTENANCE / OPTIONS DIVERSES

// Activation de la mise à jour automatique

lockPref("app.update.enabled",true);

// Téléchargement et installation automatiques (nécessite que le paramètre app.update.enabled ait pour valeur true)

lockPref("app.update.auto",true);

// Vérifie les attributs du certificat du serveur de mise à jour

lockPref("app.update.cert.checkAttributes",false);

// Requiert l’intégration des certificats du serveur de mise à jour et de toutes les redirections intermédiaires

lockPref("app.update.cert.requireBuiltIn",false);

// Canal de mise à jour
// esr pour la version ESR de Firefox
// lockPref("app.update.channel","esr");

// Temps de pause (en secondes) entre chaque téléchargement, en arrière plan, d’un morceau de 300 Kb de mise à jour

lockPref("app.update.download .backgroundInterval",60);

// Temps de pause (en secondes) entre chaque téléchargement, à la demande de l’utilisateur, d’un morceau de 300 Kb de mise à jour

lockPref("app.update.idletime",60);

// Intervalle de temps entre chaque vérification de disponibilité de nouvelles mises à jour

lockPref("app.update.interval",43200);

// Détermine quelles mises à jour sont téléchargées en arrière plan
// 0 pour télécharger toutes les mises à jour sans intervention de l’utilisateur

lockPref("app.update.mode",0);

// Active le service de mise à jour de Firefox

lockPref("app.update.service.enabled",true);

// Détermine si, après installation de mise à jour, une boîte de dialogue informe l’utilisateur qu’une mise à jour a été installée

lockPref("app.update.showInstalledUI",true);

// Active le mode de mise à jour silencieux
// true pour une mise à jour silencieuse en arrière plan

lockPref("app.update.silent",true);

// URL de récupération des mises à jour de Firefox
// En fonction de la stratégie de mise à jour de l’entité.Pour une mise à jour depuis les serveurs de Mozilla : https://aus3.mozilla.org/ update/3/%PRODUCT%/%VERSION% /%BUILD_ID%/%BUILD_TARGET%/% LOCALE%/%CHANNEL%/%OS_VERSION% /%DISTRIBUTION%/%DISTRIBUTION_ VERSION%/update.xml, sinon l’URL du serveur de mise à jour interne de l’entité (qu’il faudra également renseigner dans le paramètre app.update.url.override)

//lockPref("app.update.url","https://aus3.mozilla.org/ update/3/%PRODUCT%/%VERSION% /%BUILD_ID%/%BUILD_TARGET%/% LOCALE%/%CHANNEL%/%OS_VERSION% /%DISTRIBUTION%/%DISTRIBUTION_ VERSION%/update.xml");

// URL de récupération des mises à jour de Firefox
// Paramètre à renseigner uniquement dans le cas ou la mise à jour de Firefox se fait depuis l’URL d’un serveur de mise à jour interne de l’entité (à renseigner en plus du paramètre app.update.url)

//lockPref("app.update.url.override","");

// URL de consultation des informations relatives aux mises à jour disponibles
// Laisser la valeur par défautr https://www.mozilla.org/ %LOCALE%/firefox/notes

//lockPref("app.update.url.details","https://www.mozilla.org/ %LOCALE%/firefox/notes");

// PAGE 30

// CONFIGURATION DU CACHE

// Quand vérifier la mise à jour d’une page en cache disque
// 3 (vérifier quand la page est périmée)

lockPref("browser.cache.check_doc_frequency",3);

// Niveau de compression du cache disque
// Au choix de l’entité, de 0 (pas de compression) à 9 (haut taux de compression avec forte sollicitation du processeur)

lockPref("browser.cache.compression_level",7);

// Espace disque alloué au cache disque, en Kb

lockPref("browser.cache.disk.capacity",100000);

// Utiliser le cache disque

lockPref("browser.cache.disk.enable",true);

// Taille maximum (en Kb) d’une entrée en cache disque

lockPref("browser.cache.disk.max_entry_size",300);

// Allocation intelligente de l’espace disque alloué au cache en fonction de l’espace disponible

lockPref("browser.cache.disk.smart_size.enabled",true);

// Mettre en cache disque les pages visitées en HTTPS
// False de manière à ne pas mettre en cache le contenu SSL

lockPref("browser.cache.disk_cache_ssl",false);

// Utiliser le cache mémoire

lockPref("browser.cache.memory.enable",true);

// Taille maximum (en Kb) d’une entrée en cache mémoire

lockPref("browser.cache.memory.max_entry_size",300);

// Mémoire maximum utilisée pour le cache mémoire, en Kb

lockPref("browser.cache.memory_limit",100000);

// Espace disque alloué au cache des applications Web

lockPref("browser.cache.offline.capacity",300);

// Utiliser le cache des applications Web permettant une utilisation hors ligne

lockPref("browser.cache.offline.enable",true);

// Utilisation du nouveau système de cache
// 0 (ne pas utiliser pour des questions de stabilité)

lockPref("browser.cache.use_new_backend",0);

// Utiliser le cache des documents HTTP

lockPref("network.http.use-cache",true);

// Taille du cache pour les fichiers multimedia
// Au choix de l’entité, par défaut 512000
lockPref("media.cache_size",512000);

// Quota de stockage côté client pour les pages Web
// 5120, taille par défaut

lockPref("dom.storage.default_quota",5120);

// Active le stockage côté client pour les pages Web
// true à défaut de vulnérabilités connues pour cette fonctionnalité
lockPref("dom.storage.enabled",true);

// PAGE 31

// OPTIONS DE DEVELOPPEMENT

// Activation des outils de développement, module appmanager

lockPref("devtools.appmanager.enabled",false);

// Activation des outils de développement, module débogueur

lockPref("devtools.debugger.enabled",false);

// Activation des outils de développement, module console d’erreurs

lockPref("devtools.errorconsole.enabled",false);

// Activation des outils de développement, module inspecteur de polices

lockPref("devtools.fontinspector.enabled",false);

// Activation des outils de développement, module inspecteur

lockPref("devtools.inspector.enabled",false);

// Activation des outils de développement, module réseau

lockPref("devtools.netmonitor.enabled",false);

// Activation des outils de développement, module profileur

lockPref("devtools.profiler.enabled",false);

// Activation des outils de développement, module vue adaptive

lockPref("devtools.shadereditor.enabled",false);

// Activation des outils de développement, module editeur de styles

lockPref("devtools.styleeditor.enabled",false);

// Activation des outils de développement, module tilt

lockPref("devtools.tilt.enabled",false);

// Activation des outils de développement, module barre de développement

lockPref("devtools.toolbar.enabled",false);

// CONFIGURATIONS DIVERSES

// Activer seer sur SSL

lockPref("network.seer.enable-hover-on-ssl",false);

// Activer seer

lockPref("network.seer.enabled",false);

// Activer le pipelining pour le surf HTTP/1.1
// false pour des raisons de compatibilité avec les serveurs Web.Le pipelining peut éventuellement être utilisé pour un navigateur dédié à l’intranet si l’entité sait l’ensemble de ses serveurs compatibles

lockPref("network.http.pipelining",false);

// Activer le pipelining pour le surf HTTPS/1.1
// false pour des raisons de compatibilité avec les serveurs Web.Le pipelining peut éventuellement être utilisé pour un navigateur dédié à l’intranet si l’entité sait l’ensemble de ses serveurs compatibles

lockPref("network.http.pipelining.ssl",false);

// Activer SPDY31

lockPref("network.http.spdy.enabled",false);

// Activer SPDY v2

lockPref("network.http.spdy.enabled.v2",false);

// Activer SPDY v3

lockPref("network.http.spdy.enabled.v3",false);

// Activer SPDY v3.1

lockPref("network.http.spdy.enabled.v3-1",false);

// Vérifier si Firefox est configuré comme navigateur par défaut
// false dans le cadre de double navigateurs.

lockPref("browser.shell.checkDefaultBrowser",false);

// Scan antivirus d’un fichier lorsque son téléchargement est terminé

lockPref("browser.download.manager.scanWhenDone",true);

// Utiliser le répertoire de téléchargement par défaut
// false pour que l’utilisateur indique à quel emplacement il souhaite télécharger le fichier

lockPref("browser.download.useDownloadDir",false);

// Cacher la barre d’outils et d’onglets en mode plein écran

lockPref("browser.fullscreen.autohide",false);

} catch ( e ) {
	console.error(e);
	displayError("Erreur dans le fichier de configuration local (/etc/firefox-esr/firefox-esr.js)", e);
}
Répondre