- Firejail crée des environnements sandbox légers utilisant les espaces de noms, seccomp-bpf et le contrôle des capacités du noyau. Linux.
- Il dispose de profils prédéfinis, de listes blanches/noires et de modes privés pour limiter l'accès au système de fichiers et au réseau.
- Il vous permet d'isoler les navigateurs, les AppImages, les serveurs et les jeux grâce à un contrôle indépendant de la bande passante, du DNS et de l'adresse IP.
- Il s'intègre à AppArmor et SELinux, peut être activé par défaut avec firecfg et ajoute une surcharge minimale au système.
Si vous utilisez GNU/Linux quotidiennement et que cela vous préoccupe sécurité, confidentialité et programmes non fiablesTôt ou tard, vous entendrez parler de Firejail. Ce petit utilitaire est depuis des années l'un des moyens les plus simples d'isoler des applications dans un environnement dédié, sans avoir à configurer une machine virtuelle ni à se perdre dans des réglages interminables.
L'idée est simple : Vous exécutez votre programme « inséré » à l'intérieur de Firejail Et à partir de là, ce processus perçoit un système de fichiers, un réseau, des utilisateurs et des périphériques bien plus limités que les réels. De cette manière, un PDF Un navigateur suspect, surchargé d'extensions ou un jeu étrange d'itch.io ont beaucoup moins de chances de perturber le système.
Qu'est-ce que Firejail et comment fonctionne-t-il à l'intérieur ?
Firejail est un Programme C, de type SUID et sous licence GPLv2Il sert de bac à sable pour les processus sous GNU/Linux. Son rôle est de minimiser l'impact d'une application compromise en créant un environnement d'exécution à privilèges restreints où chaque processus dispose de sa propre vue isolée du système.
Sur le plan technique, il repose sur plusieurs fonctionnalités de sécurité du noyau LinuxEspaces de noms, filtrage des appels système avec seccomp-bpf, contrôle de la capacité et isolation du système de fichiers : grâce à cela, le processus exécuté dans le sandbox dispose de sa propre table des processus, de sa pile réseau, de sa table de montage et, de manière générale, d’un ensemble de ressources virtualisées.
L’un de ses grands atouts est que Il ne présente pratiquement aucune dépendance et ses frais généraux sont minimes.Il ne lance aucun processus en arrière-plan, n'ouvre aucun socket pour la gestion et ne nécessite aucun service supplémentaire. Il démarre simplement lorsqu'il est invoqué et consomme des ressources tout en maintenant l'environnement isolé actif.
De plus, Firejail est livré avec Des profils de sécurité prédéfinis pour des centaines de programmes Ordinateur et services : navigateurs comme Firefox et Chromium, lecteurs multimédias comme VLC, clients BitTorrent comme Transmission, clients de messagerie, jeux (y compris Steam), outils de chat, serveurs comme Apache ou Nginx, clients SSH, Vinetc. S'il n'existe pas de profil spécifique pour un programme, un profil générique est appliqué.
Principaux mécanismes de sécurité utilisés par Firejail
Pour bien comprendre le fonctionnement de Firejail, il est utile de consulter le mécanismes du noyau dont il tire partiVous n'avez pas besoin d'être un expert en piratage du noyau, mais vous avez besoin d'un minimum de contexte pour savoir ce que vous renforcez lorsque vous jouez avec ses options.
Espaces de noms Linux Ils permettent à un groupe de processus de partager leur propre « espace de noms » : identifiants de processus (PID), noms d’hôtes, utilisateurs, points de montage, réseau, etc. Firejail crée ces espaces de noms afin que le programme isolé ne voie que les ressources qui lui correspondent au sein de cet environnement encapsulé.
À partir de la branche 2.6 du noyau, et plus particulièrement de la version 3.x, différents types d'espaces de noms (PID, UTS, point de montage, utilisateur, réseau, IPC, etc.) ont été ajoutés. Firejail s'appuie sur ces espaces de noms pour… Le processus possède son propre réseau, son propre arbre de processus et son propre système de fichiers., le tout séparément du reste du système.
En plus des espaces de noms, Firejail implémente Politiques de contrôle d'accès au niveau du système de fichiers Ce système repose sur des listes blanches et des listes noires. Il permet de définir les répertoires auxquels l'application peut accéder, ceux auxquels elle peut seulement lire, et ceux qui sont totalement bloqués, aussi bien à la racine que dans le répertoire personnel de l'utilisateur.
Parallèlement, les éléments suivants entrent en jeu. seccomp-bpfUn filtre d'appels système est associé au processus et à ses descendants. Utilisant un langage de filtrage basé sur Berkeley Packet Filter (BPF), Firejail restreint les appels système que l'application peut exécuter. Si elle tente d'effectuer une action non autorisée par la politique de filtrage, l'appel est bloqué ou le processus est arrêté, réduisant ainsi considérablement la surface d'attaque.
Firejail s'intègre également bien avec AppArmor et SELinuxCes solutions MAC (Contrôle d'accès obligatoire) définit les ressources qu'une application peut utiliser, tandis que Firejail ajoute une couche d'isolation supplémentaire : même si deux applications ont l'autorisation d'accéder à la même ressource selon AppArmor, avec Firejail, vous pouvez les empêcher d'interagir entre elles car chacune vit dans son propre environnement isolé.
Avantages pratiques de l'utilisation de Firejail
Pour l'utilisateur moyen, ce qui compte, ce n'est pas tant la théorie que ce que l'on obtient au quotidien : Plus de sécurité sans changer votre façon de travailler Radicalement. Firejail se concentre précisément sur cela.
D'une part, il y a le isolation des applications potentiellement dangereusesUn PDF qui vous paraît suspect, un document bureautique reçu par e-mail, un site web douteux ou une AppImage téléchargée on ne sait où, tous ces éléments s'exécutent dans un environnement qui limite leur capacité d'accès au système.
D'autre part, il offre contrainte de ressources très granulaireVous pouvez limiter le réseau (couper complètement Internet, lui attribuer sa propre adresse IP, restreindre la bande passante), réduire l'accès au système de fichiers (liste blanche et liste noire), supprimer les périphériques de /dev, contrôler le serveur audio, ou même modifier les serveurs DNS avec lesquels l'application communique.
Un point très intéressant est que l'utilisation de base est d'une simplicité ridicule : firejail nom_du_programmePour commencer, il n'est pas nécessaire de modifier les fichiers de configuration ; les profils prédéfinis couvrent la plupart des cas d'utilisation courants. Ce n'est que pour des configurations plus complexes que vous devriez ajuster les profils personnalisés.
Bien que Firejail soit principalement conçu pour GNU/Linux, il a également été porté ou adapté à d'autres systèmes d'exploitation. autres types de systèmes Unix comme certaines variantes de BSD ou même macOS, mais c'est dans les environnements Linux avec un noyau 3.xo ou supérieur qu'il excelle vraiment.
Installation de Firejail et Firetools sur différentes distributions

Installer Firejail est aussi simple que de tirer sur le gestionnaire de paquets de votre distributionIl n'est généralement pas préinstallé, mais il figure dans les dépôts officiels de presque toutes les distributions modernes.
Sur les systèmes basés sur Debian et Ubuntu, utilisez simplement APT : sudo apt install firejailDans les distributions dérivées comme Linux Mint, Elementary ou similaires, la commande est exactement la même et téléchargera le paquet depuis les dépôts de la distribution.
Dans Debian « pure », vous pouvez recourir à sudo apt-get install firejailAlors que sous Arch Linux et ses dérivés comme Manjaro, le paquet se trouve dans les dépôts officiels et s'installe avec sudo pacman -S prison de feuSous Gentoo, il se trouve dans l'arborescence principale sous le nom sys-apps/firejail et s'installe via emerge –demander sys-apps/firejail ou sa variante LTS.
Sous Fedora, vous pouvez choisir de télécharger le RPM de SourceForge et lancez-le avec `sudo rpm -i`, ou activez un dépôt Copr spécifique (par exemple, `ssabchew/firejail`) puis installez-le avec `dnf`. Sur openSUSE, il est disponible via le système classique de installation en un clic à partir des dépôts recommandés pour Tumbleweed ou Leap.
Si votre distribution ne le propose pas sous forme de paquet, vous pouvez toujours le compiler à partir du code source : git clone https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-stripC'est un projet léger avec peu de dépendances, donc il se compile généralement sans problème.
Pour disposer d'une interface graphique, vous avez Firetools, qui est généralement installé avec le même gestionnaire de paquets, par exemple. sudo apt installer firetoolsCe paquet ajoute un petit lanceur à la barre d'état système et des utilitaires pour la gestion graphique des environnements sandbox.
Comment utiliser Firejail depuis le terminal
Le moyen le plus direct de profiter de Firejail est de passer par la ligne de commandesLeur philosophie est très claire : ajoutez le mot firejail à la commande que vous souhaitez. Rien de plus.
Par exemple, pour exécuter Firefox en mode sandbox, vous utiliseriez firefox firefoxpour VLC Firejail VLC, pour la transmission Transmission Firejail-gtk ou pour gedit firejail geditFirejail détecte le programme, vérifie s'il existe un profil correspondant dans /etc/firejail et applique les restrictions définies.
Il peut également être utilisé avec services ou démons serveur, lancé en tant que racineUn exemple typique serait de démarrer Nginx avec `sudo firejail /etc/init.d/nginx start`, ou tout autre service que vous souhaitez exécuter dans un environnement isolé avec son propre réseau et un système de fichiers limité.
Si vous souhaitez savoir à tout moment quels environnements de test sont actifs, vous pouvez exécuter la commande suivante : liste des prisons de feuLe programme affichera une liste contenant le PID, l'utilisateur et la commande associés à chaque environnement isolé, très similaire à un ps filtré.
Pour inspecter les ressources consommées par les applications sous Firejail, vous disposez de la sous-commande prison de feu – haut, qui affiche un tableau avec le PID, l'utilisateur, la mémoire résidente, la mémoire partagée, le processeur utilisé, les processus enfants et le temps d'exécution, tous centrés sur les instances lancées via le sandbox.
Pour afficher la hiérarchie complète des processus au sein de chaque sandbox, vous pouvez exécuter prison de feu –arbrequi présente une arborescence de processus avec l'instance « parente » firejail et tous les processus qui y sont rattachés. Si une instance cesse de répondre, firejail –shutdown=PID Cela vous permet de désactiver ce bac à sable spécifique.
Profils Firejail : où les trouver et comment les modifier
Le véritable potentiel de Firejail réside dans son profils de configurationCe sont des fichiers de texture qui décrivent comment chaque application doit être isolée : les répertoires auxquels elle peut accéder, les capacités du noyau qu’elle peut utiliser, ce qui se passe sur le réseau, si des serveurs graphiques alternatifs sont activés, etc.
Les profils système sont généralement stockés dans /etc/firejail/Si vous exécutez la commande ls dans ce répertoire, vous verrez une collection de fichiers avec l'extension .profile, chacun étant associé à un programme spécifique : firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile, etc.
Pour personnaliser le comportement d'un profil standard, ouvrez-le simplement avec votre éditeur préféré, par exemple avec sudo nano /etc/firejail/firefox.profileVous pouvez y activer ou désactiver des politiques telles que la liste noire, la liste blanche, les restrictions /dev, les options réseau, le contrôle du son ou désactiver l'accélération 3D.
Si vous souhaitez connaître la syntaxe prise en charge par le langage de profilage, Firejail inclut une page de manuel dédiée : homme 5 profil de prisonIl détaille la signification de chaque commande (include, blacklist, whitelist, caps.keep, net, x11, etc.) et comment les combiner pour obtenir la politique d'isolation souhaitée.
Lorsque vous souhaitez personnaliser un programme sans modifier le profil global dans /etc, vous pouvez créer un profil utilisateur localIls sont stockés dans ~/.config/firejail/ et portent le même nom que le profil officiel. Par exemple, si vous souhaitez que VLC n'ait jamais accès à Internet, vous pouvez créer un fichier ~/.config/firejail/vlc.profile avec un contenu similaire à :
inclure /etc/firejail/vlc.profile
net aucun
La prochaine fois que vous courrez Firejail VLCLe profil système sera appliqué en premier, puis vos paramètres supplémentaires, ce qui renforcera l'isolation du réseau sans qu'il soit nécessaire de modifier le fichier dans /etc.
Listes blanches, listes noires et contrôle du système de fichiers
L'un des atouts les plus puissants de Firejail réside dans sa capacité à limiter certains répertoires qu'une application peut accéder. Vous y parvenez grâce aux règles de liste blanche et de liste noire, à la fois dans les profils globaux et personnalisés.
Si vous souhaitez, par exemple, empêcher une application d'accéder au dossier Documents de l'utilisateur, vous pouvez ajouter une ligne liste noire ${HOME}/Documents au profil. Sinon, vous pouvez utiliser le chemin complet, comme blacklist /home/user/Documents, si vous préférez ne pas utiliser de variables.
À l'inverse, si vous souhaitez qu'un programme n'ait accès qu'à un sous-ensemble très spécifique du répertoire personnel, vous pouvez utiliser whitelistUne combinaison très courante consiste à bloquer généralement l'accès à /boot, /root ou à certains répertoires sensibles, et en parallèle à autoriser l'accès à un seul répertoire de téléchargements ou un dossier temporaire où vous enregistrerez ce dont vous avez réellement besoin.
Les règles de liste sont combinées avec des options telles que --lecture seule=/etc de sorte qu'un répertoire donné soit accessible, mais uniquement en mode lecture, ou avec –maison-privée, –privé-etc, –poubelle-privée pour configurer des versions éphémères de ces itinéraires au sein de l'environnement de test.
Dans les profils avancés, vous pouvez même utiliser des directives de liaison telles que lier origine, destination, ce qui est typique des environnements serveur, de sorte qu'un véritable répertoire système (par exemple /server/web1) est vu dans le bac à sable comme /var/www/html, le tout sous un contrôle d'accès beaucoup plus strict.
Systèmes de fichiers en mode privé et temporaires
Pour une isolation maximale, Firejail propose un mode particulièrement performant : -privéUne fois activée, l'application détecte un répertoire HOME temporaire monté sur tmpfs, avec une structure de répertoires minimale, et tout ce qu'elle écrit disparaîtra lorsque le bac à sable sera fermé.
Ce mode est idéal pour consulter les services bancaires en ligne ou exécuter des applications particulièrement sensibles sans conserver les paramètres habituels, extensions, caches, historique, etc. Si vous lancez un navigateur avec firejail --private, il utilisera sa configuration par défaut, sans modules complémentaires ni personnalisations, ce qui réduit la surface d'attaque.
Vous pouvez également affiner ce comportement avec –privé=répertoireindiquant un domicile alternatif persistant, ou le mélangeant avec –private-tmp y –cache privé afin que les répertoires comme /tmp ou ~/.cache soient temporaires, tandis que vous conservez d'autres éléments de profil « réels ».
Un autre mécanisme puissant est –superposition-tmpfsCela crée un système de fichiers éphémère superposé au système principal, de sorte que toutes les modifications d'écriture restent dans la couche temporaire. Cela permet, par exemple, Installez le paquet dans l'environnement de test et testez-le. sans laisser de trace sur le système hôte lorsque vous fermez la session Firejail.
Dans ces situations, il est important d'être très prudent avec la combinaison des options, car si vous utilisez –noprofile Si vous ne bloquez pas correctement le répertoire /tmp, des écritures pourraient être autorisées dans des parties du système que vous ne souhaitez pas modifier. Il est courant d'ajouter des directives comme `--blacklist=/tmp` ou d'utiliser des listes blanches très spécifiques pour limiter la zone d'écriture.
Contrôle du réseau : coupure de l’accès à Internet, attribution d’adresses IP séparées et limitation de la bande passante
Un autre aspect essentiel de Firejail est la gestion du réseau. Un simple paramètre permet d'autoriser une application à… complètement hors ligne ou configurer sa propre pile réseau avec une adresse IP, un pare-feu et une table ARP individuels, distincts de ceux du système.
Pour désactiver la connectivité, il suffit d'utiliser –net=aucunPar exemple, dans des commandes comme `firejail --net=none vlc`, `firejail --net=none clementine`, ou tout autre programme dont vous souhaitez bloquer l'accès à Internet. C'est idéal pour les lecteurs multimédias, les visionneuses d'images, les éditeurs de texte et autres programmes similaires qui n'ont pas besoin d'accéder au réseau.
Si vous souhaitez configurer un réseau spécifique, vous pouvez utiliser –net=interfaceoù l'interface est généralement quelque chose comme eth0 sur les réseaux câblés. Vous pouvez même ajouter –ip=192.168.1.80 afin que le bac à sable possède une adresse IP interne différente de celle de l'ordinateur, ce qui est très utile dans les contextes de serveur ou pour les tests de réseau.
Avec l'option –dns=IP Vous pouvez modifier les serveurs DNS pour cet environnement isolé. Par exemple, une combinaison courante pour les services bancaires en ligne serait : `firejail --private --dns=8.8.8.8 --dns=8.8.4.4 google-chrome`, garantissant ainsi que les requêtes soient résolues à l'aide des serveurs DNS spécifiés.
Firejail vous permet également de limiter la bande passante par sandboxTout d'abord, vous créez une instance nommée, par exemple firejail --name=browser --net=eth0 firefox, puis, à partir d'une autre terminalPour limiter la bande passante de l'interface eth0 à 80 Ko/s en téléchargement et 20 Ko/s en envoi, utilisez la commande `firejail --bandwidth=browser set eth0 80 20`. Pour supprimer cette limite, utilisez `firejail --bandwidth=browser clear eth0`.
N'oubliez pas que certaines options réseau (comme macvlan) ne fonctionnent que sur interfaces câbléesPas en Wi-Fi. portátiles Avec les réseaux sans fil, vous devrez adapter la conception de votre environnement de test en conséquence.
Serveurs graphiques alternatifs et protection contre les enregistreurs de frappe
Outre l'isolation du réseau et du système de fichiers, Firejail inclut des mécanismes pour renforcer la sécurité. Couche graphique X11Au lieu d'utiliser la session X « normale » de l'utilisateur, vous pouvez lancer un programme au sein de serveurs graphiques alternatifs tels que Xpra ou Xephyr.
Pour ce faire, vous devez d'abord installer les paquets correspondants, généralement à l'aide d'une commande comme sudo apt-get install xpra xserver-xephyr sur les systèmes basés sur Debian/Ubuntu. Une fois installé, Firejail permet de lancer des applications via –x11=nom_serveur, ce qui crée un environnement graphique isolé supplémentaire.
Par exemple, vous pourriez exécuter firejail –x11=xephyr –net=none vlc ouvrir VLC sur un serveur Xephyr avec le réseau coupé, ou firejail –x11=xpra –net=none vlc pour le faire sous Xpra. Cela permet de Protégez-vous contre les enregistreurs de frappe et les dispositifs de capture d'écran. qui peut être en cours d'exécution dans la session X principale.
Lorsque vous ne spécifiez pas explicitement le serveur graphique, l'option –x11 Essayez d'abord Xpra, puis Xephyr, et enfin l'extension de sécurité X11 si les options précédentes ne sont pas disponibles. Selon votre distribution et votre environnement de bureau, certaines combinaisons peuvent ne pas fonctionner correctement et vous devrez peut-être ajuster les paramètres manuellement.
Utilisez Firejail « par défaut » dans vos applications
Si vous le souhaitez, vous pouvez activer certaines applications, voire toutes celles disposant d'un profil. toujours Sous Firejail, pas besoin de taper « firejail » à chaque fois. Il existe un outil auxiliaire pour cela. firecfg.
En courant sudo firecfgLe programme analyse les fichiers binaires installés et crée des liens symboliques dans /usr/local/bin pour toutes les applications disposant d'un profil dans /etc/firejail. Ces liens pointent vers /usr/bin/firejail, de sorte que lorsque l'utilisateur exécute « firefox », Firejail est bien lancé avec le profil correspondant.
Si vous changez d'avis et souhaitez redémarrer les programmes sans sandbox, vous pouvez effacer cette configuration avec firecfg –nettoyerou supprimez manuellement les liens symboliques de /usr/local/bin. Une autre solution consiste à configurer uniquement une application spécifique de cette manière, en créant manuellement un lien symbolique avec sudo ln -s /usr/bin/firejail /usr/local/bin/nom_du_programme.
Dans les environnements graphiques, vous pouvez également modifier le fichiers .desktop Dans vos lanceurs d'applications, ajoutez `firejail` à la ligne de commande. Par exemple, dans un fichier `firefox.desktop` personnalisé, définissez la ligne `Exec` sur `Exec=firejail firefox`. Ainsi, chaque clic sur l'icône lancera le programme déjà encapsulé.
Si vous installez Firetools, vous disposerez également d'un petit gestionnaire graphique de sandbox affichant les applications avec des profils disponibles. Vous pourrez ainsi les lancer, voir ce qui est en cours d'exécution, vérifier la consommation de ressources ou modifier certains paramètres sans utiliser le terminal.
Gestion avancée : accès à un environnement isolé, débogage et AppArmor/SELinux
Cela peut s'avérer très utile pour des tâches administratives avancées. entrer « à l’intérieur » d’un bac à sableFirejail le permet grâce à l'option –join, qui connecte un nouveau shell à l'espace de noms d'un processus existant.
La procédure typique consisterait à exécuter liste des prisons de feu Pour afficher les PID des instances, repérez le numéro du processus principal du sandbox (par exemple, 5394) puis procédez comme suit : sudo firejail –join=5394Firejail exécutera le premier processus enfant au sein du bac à sable et vous laissera dans un shell en tant que root dans cet environnement isolé.
Une fois sur place, vous pouvez utiliser des commandes comme df -h, adresse IP, ps aux Vous pouvez également utiliser un outil de diagnostic pour observer précisément ce que l'application voit depuis l'environnement isolé. Une fois terminé, exécutez simplement `exit` pour quitter et revenir à l'environnement normal.
Pour détecter les problèmes de configuration ou comprendre ce qui bloque une application, vous disposez des options suivantes -déboguer y -tracerCes informations affichent les données de débogage et les appels système pendant l'exécution de la commande. Elles sont particulièrement utiles lorsqu'un profil trop restrictif empêche le programme de fonctionner. Botte ou fonctionner normalement.
Firejail se marie bien avec AppArmor et SELinuxDans les distributions qui activent AppArmor par défaut, de nombreux profils Firejail sont conçus pour coexister avec les profils AppArmor, ajoutant ainsi une couche d'isolation supplémentaire sans enfreindre les politiques existantes. Des exemples de règles spécifiques permettant de renforcer la protection de services tels que les serveurs web, SSH ou les applications de bureau critiques sont disponibles sur GitHub et dans la documentation officielle.
Si vous prévoyez d'utiliser Firejail sur des serveurs multi-utilisateurs, il est conseillé de vérifier la configuration dans /etc/firejail/firejail.config, activez des options telles que force-nonewprivs et limitez les utilisateurs qui peuvent exécuter /usr/bin/firejail en ajustant leur groupe et leurs permissions (par exemple, en créant un groupe « firejail » et en limitant SUID à ses membres).
Firejail propose un Un équilibre très intéressant entre sécurité et confort.Il ne remplace pas la virtualisation complète, mais pour de nombreuses tâches quotidiennes, des tests logiciels rapides ou l'isolation des navigateurs, des AppImages, de Wine et des jeux, il offre une protection remarquable avec une grande simplicité d'utilisation. Une bonne compréhension de ses profils, options réseau, modes privés et intégrations avec AppArmor/SELinux vous permet de le personnaliser à votre guise et de renforcer efficacement la sécurité de votre bureau Linux sans compromettre la facilité d'utilisation.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.