et si on sécurisait (un peu plus) Firefox ?
Publié : mer. 21 févr. 2018, 21:46
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 :
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 :
Mais il peut aussi "forcer" (verrouiller) le réglage, dans ce cas, il utilisera une ligne du type :
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
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é :
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)
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);
Code : Tout sélectionner
lockPref(clé,valeur);
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 { ... }
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);
}