| accueil | articles | projets | contact | plan |

Durcissez votre Firefox

"Non ca n'est pas sale".
dernière mise à jour 21/08/2014

Cette page est un aide mémoire et une proposition de durcissement de l'utilisation de Firefox sous Linux. Les commandes et configurations ont été testées sur Ubuntu 14.04 et Fedora 20.

L'objectif du projet est de limiter les fuites d'informations et corrélations entres usages personnel et professionnel du web, mais aussi de limiter les risques de compromission du poste de travail au travers de l'exploitation de failles du navigateur.

Le niveau de sécurité atteint n'est pas extrême. En particulier, toute exploitation de X11 peut mener à des compromissions catastrophiques (X11 sans suid et execution en root est un premier pas). Une meilleure compartimentation peut être atteinte en utilisant des LXC voire en utilisant un système créé pour comme Qubes-OS (https://qubes-os.org/), mais l'objectif de ce projet est de proposer une méthode relativement simple, utilisable directement sur des distributions ordinaires.

Tous commentaires sont les bienvenus par email: crenard@goupilland.net.

Disclaimer: Configurer votre navigateur comme suit n'améliore pas la confidentialité de vos navigations et ne contribue à l'anonymat que marginalement. Pour ce genre de chose, vous avez besoin de :

Bref, un bon anonymat est obtenu en se pourrissant la vie, good luck (si vraiment vous voulez creuser la question allez demander au Grugq http://grugq.tumblr.com/ )

1 - Séparez vos profils Firefox

1.a Créez des profils distincts

Je crée 3 profils: pro, perso, anonymous


$ firefox --CreateProfile pro
$ firefox --CreateProfile perso
$ firefox --CreateProfile anonymous
$

Vous pouvez éditer les profils, les renommer, voir changer les defauts en éditant le fichier .mozilla/firefox/profiles.ini.

En particulier, je positionne Default=1 sur le profil perso, pour l'utiliser par défaut quand Firefox est ouvert depuis un appel externe.

1.b créer des scripts de lancement par profil

Le profil perso est utilisé comme profil Firefox par défaut. L'option no-remote me permet d'avoir plusieurs instances tournant de concert avec des profils différents.


$ echo "/usr/bin/firefox -p perso  --no-remote"             > ~/bin/persofox
$ echo "/usr/bin/firefox -p pro    --no-remote"             > ~/bin/profox
$ echo "/usr/bin/firefox -p anonymous -private --no-remote" > ~/bin/anonfox
$ chmod +x persofox profox anonfox
$

Exécuter l'un ou l'autre des scripts permet de lancer une instance de profil avec le bon profil. Dans le cas du profil anonyme, il démarre par défaut en mode de navigation privée. Ces scripts remplacent avantageusement le lancement direct pour la plupart des Windows Manager.

2 - Limiter l'impact des 0days dans Firefox (enfin certains)

2.a installer Firejail

Installer FireJail: http://l3net.wordpress.com/projects/firejail/.
Chez moi FireJail est installé dans /opt/firejail.

2.b changer les scripts de lancement Firefox pour utiliser firejail

3 - Plus loin dans la parano: exécution dans un chroot

Cette partie n'a été testée que sous Ubuntu faute d'un debootstrap sous Fedora.

L'idée est de faire tourner une instance de Firefox (enfin Iceweasel) dans un chroot dédié. La manipulation est encore plus efficace si votre noyau utilise les patchs GrSecurity https://grsecurity.net/ pour durcir l'isolation des chroot.

Nota: le chroot sans recherche d'optimisation particulière consomme 630Mo sur mon disque.

3.a Créer la racine


$ sudo mkdir /var/chroot/darkfox
$ sudo debootstrap jessie darkfox
$

3.b Installer Iceweasel dans le chroot


$ sudo chroot /var/chroot/darkfox
chroot $ su -
chroot # apt-get install iceweasel
chroot # exit
chroot $ exit
$

3.c Créer le script de lancement


$ echo "/opt/firejail/bin/firejail \
   --debug --chroot=/var/chroot/darkfox --seccomp \
   --profile=/etc/firejail/iceweasel.profile \
    iceweasel -private" > bin/darkfox
$ chmod +x bin/darkfox
$

Et voilà !!
Lancer bin/darkfox vous donne un navigateur avec un "pretty good level of isolation".
Si vous voulez distinguer visuellement les différentes instances, vous pouvez leur faire utiliser des thêmes distincts; Enjoy.

TODO

Liens

Références

Sources des options et commandes utilisés dans le présent document.

Ligne de commande des outils Mozilla https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options
Ligne de commande Firefox http://kb.mozillazine.org/Command_line_arguments
Firejail http://l3net.wordpress.com/projects/firejail/
Debootstrap et Chroot https://wiki.ubuntu.com/DebootstrapChroot

Alternatives

Quelques outils et méthodes alternatives pour la séparation de processus sous Linux.

MBox http://pdos.csail.mit.edu/mbox/
PFlask https://github.com/ghedo/pflask
Dive https://github.com/vi/dive
Containers https://github.com/arachsys/containers
Sandboxer avec SELinux http://danwalsh.livejournal.com/28545.html