Morpheus
Sécurité / Sandbox applicative

Politique d'isolation applicative

Politique Firejail pragmatique sur Arch Linux: applications de confiance, clients Internet et outils de traitement de fichiers isolés sans casser FIDO2 ou Wayland.

Firejail FIDO2 Wayland desktop défense en profondeur
Position Firejail dans la défense en profondeur
Vue publique: application, Firejail, namespaces, seccomp, capabilities, profils et vérification des processus sandboxés.
01

Classer

Répartir les applications entre confiance N0, exposition Internet N1 et traitement de fichiers N2.

02

Isoler

Conserver les profils officiels en N1 et couper le réseau explicitement en N2.

03

Intégrer

Versionner et reconstruire les lanceurs desktop, puis contrôler aussi leurs actions secondaires et raccourcis rapides.

04

Escalader

Ouvrir les contenus réellement suspects dans une VM dédiée.

Contexte

Le problème réel.

Une sandbox uniforme casse WebAuthn, FIDO2 ou certaines applications modernes. À l'inverse, une règle trop permissive donne un faux sentiment de sécurité.

Objectifs

Ce que la solution devait garantir.

  • Réduire l'impact des contenus réseau et fichiers non fiables.
  • Préserver FIDO2, WebAuthn, polkit, USB et les outils d'administration.
  • Éviter les profils incompatibles qui empêchent les applications de démarrer.
  • Maintenir une politique lisible, vérifiable et simple à faire évoluer.
Architecture publique

Structure documentée, détails exploitables retirés.

Exemples anonymisés

Ce qui peut être montré sans exposer le système réel.

Matrice d'isolation publique

Les applications sont classées par besoin fonctionnel et exposition.

N0 trusted   secrets, FIDO2, administration -> sans Firejail
N1 Internet  clients réseau                 -> profil officiel + private-tmp
N2 fichiers  lecteurs et éditeurs           -> private-tmp + net=none, profil selon compatibilité
suspect       malware, scripts, documents    -> VM dédiée

Lanceur desktop anonymisé

Un lanceur N2 coupe explicitement le réseau; MPV conserve son profil officiel compatible.

[Desktop Entry]
Name=<APPLICATION>
Exec=firejail --noprofile --private-tmp --net=none <APPLICATION_BINARY> <ARGS>
Terminal=false
Type=Application

Vérification de sandbox

Une application lancée hors Firejail n'est pas protégée.

firejail --list
firejail --tree
ps aux | rg '<APPLICATION>'

attendu:
l'application apparaît sous le processus firejail
Runbook public

Commandes et états attendus issus de la documentation privée.

Les commandes ci-dessous sont volontairement anonymisées: chemins, noms de machines, interfaces, dépôts, périphériques et actions destructrices sont remplacés par des placeholders.

Documentation privée: Firejail

Contrôles de base

Commandes anonymisées

firejail --version
firejail --help
firejail --list
firejail --tree

État attendu

Firejail est installé
la sandbox apparaît dans la liste active
l'arbre des processus confirme le wrapper
Documentation privée: Firejail

Contrôle de politique

Commandes anonymisées

inspect <DESKTOP_FILE>
verify N1 uses --private-tmp
verify N2 uses --noprofile --private-tmp --net=none
verify N0 has no Firejail wrapper

État attendu

les applications de confiance restent fonctionnelles
les clients Internet gardent leur profil officiel
les outils de traitement de fichiers n'ont pas de réseau
les exceptions sont documentées
Documentation privée: Firejail

Intégration desktop

Commandes anonymisées

inspect <SYSTEM_DESKTOP_FILE>
copy <SYSTEM_DESKTOP_FILE> <USER_DESKTOP_FILE>
edit Exec=firejail <APPLICATION_BINARY> <ARGS>
update-desktop-database <USER_APPLICATIONS_DIR>
firejail --list

État attendu

le fichier desktop utilisateur surcharge le lanceur système
la ligne Exec utilise firejail
le cache des lanceurs est rafraîchi
l'application apparaît dans la liste firejail après lancement
Travail réalisé

Décisions techniques publiables.

N0 — Trusted

Firefox, Bitwarden, KeePassXC, VS Code, Virt-Manager, Mullvad, Kitty et Nemo restent hors Firejail.

N1 — Internet

Discord, Steam et Tor Browser utilisent leur profil officiel avec un espace temporaire privé.

N2 — Fichiers

MPV et GThumb conservent leur profil officiel; GIMP et OnlyOffice Sandbox désactivent les profils incompatibles. Tous utilisent un espace temporaire privé sans réseau.

Vérification

firejail --list et --tree confirment que le lancement passe réellement par la sandbox.

Validation

Preuves et contrôles retenus.

Preuves visuelles

Contrôles observables et portée de la preuve.

Résultats publics

Ce que le chantier démontre.

Anonymisation

Ce qui reste privé.

  • Pas de profils Firejail privés complets.
  • Pas de chemins personnels réels dans les lanceurs.
  • Pas de scripts utilisateur copiés tels quels.
  • Les applications et commandes utilisent des placeholders quand nécessaire.
Sources privées

Documentation d'origine.

  • Guide Firejail.
  • Documentation AppArmor.
  • Notes desktop Hyprland et lanceurs.
  • Journal d'intégration des applications sandboxées.

Supplément de documentation privée anonymisé

Firejail - Sandbox applicative sur Arch Linux

Guide public pour isoler les applications avec Firejail. Les chemins utilisateur, profils privés, scripts locaux et lanceurs réels sont remplacés par des placeholders.

Qu'est-ce que Firejail ?

Firejail est un outil de sandboxing user-space qui restreint l'environnement d'exécution des applications avec namespaces, seccomp, capabilities et isolation du système de fichiers.

SolutionTypeUsage
FirejailSandbox user-spaceApplications desktop
AppArmorMAC kernelServices et profils système
bubblewrapSandbox minimalisteConteneurs légers
VMVirtualisationIsolation forte

Objectif

  • Limiter l'accès au système de fichiers.
  • Réduire l'impact d'une compromission applicative.
  • Conserver ergonomie et performances.
  • Compléter AppArmor sans casser FIDO2, WebAuthn ou Wayland.

État valide sur Morpheus

NiveauApplicationsPolitique
N0 — TrustedFirefox, Bitwarden, KeePassXC, VS Code, Virt-Manager, Mullvad, Kitty, NemoSans Firejail
N1 — InternetDiscord, Steam, Tor BrowserProfil officiel + espace temporaire privé
N2 — FichiersMPV, GThumb, GIMP, OnlyOffice SandboxRéseau coupé et espace temporaire privé; profil selon compatibilité

VLC a été supprimé au profit de MPV. Les contenus réellement suspects sont ouverts dans une VM dédiée.

Contexte

Poste Arch Linux avec environnement Wayland. Firejail est utilisé pour les applications utilisateur; AppArmor reste la couche MAC principale pour services et profils système.

Installation

pacman -S firejail
firejail --version
firejail --help
ls <GLOBAL_FIREJAIL_PROFILE_DIR>

Utilisation de base

firejail <APPLICATION>
firejail --profile=<PROFILE_PATH> <APPLICATION>
firejail --debug <APPLICATION>
firejail --list
firejail --tree
firejail --top
firejail --shutdown=<SANDBOX_PID>

Profils Firejail

ls <GLOBAL_FIREJAIL_PROFILE_DIR>/*.profile
firejail --profile=<PROFILE_PATH> <APPLICATION>
firejail --noprofile <APPLICATION>
cp <GLOBAL_PROFILE> <USER_PROFILE>
edit <USER_PROFILE>
firejail --debug --profile=<USER_PROFILE> <APPLICATION>

N1 conserve les profils officiels. N2 conserve également un profil officiel lorsqu'il est compatible; --noprofile reste limité aux applications dont le profil empêche réellement le démarrage.

Intégration desktop

Les lanceurs N1/N2 doivent appeler Firejail, tandis que les lanceurs N0 doivent rester natifs. La règle s'applique à chaque action secondaire du fichier desktop et aux raccourcis Waybar ou du compositeur.

inspect <SYSTEM_DESKTOP_FILE>
copy <SYSTEM_DESKTOP_FILE> <USER_DESKTOP_FILE>
edit Exec=firejail <APPLICATION_BINARY> <ARGS>
verify every Exec= entry follows the assigned level
update-desktop-database <USER_APPLICATIONS_DIR>
firejail --list

Les sources sont versionnées et installées par un reconstructeur avec validation, dry-run et sauvegarde. Cela évite qu'une action de menu ou un raccourci rapide contourne silencieusement la politique principale.

Politique N0/N1/N2

N0 préserve les applications qui manipulent des secrets, FIDO2, WebAuthn, polkit ou des fonctions d'administration. N1 cible les clients réseau avec leur profil officiel. N2 cible les lecteurs et éditeurs de fichiers avec un réseau coupé.

N0  <TRUSTED_APPLICATION>
N1  firejail --private-tmp <INTERNET_APPLICATION>
N2  firejail --private-tmp --net=none <MPV_BINARY>
N2  firejail --noprofile --private-tmp --net=none <INCOMPATIBLE_FILE_HANDLER>
VM  <SUSPICIOUS_CONTENT>

Le double lanceur OnlyOffice sépare les documents de confiance des documents inconnus. Un document suspect reste traité dans une VM.

Sécurité apportée

  • Isolation partielle du système de fichiers.
  • Réduction des capabilities.
  • Filtrage seccomp des appels système.
  • Séparation des processus et montages via namespaces.

Options avancées

firejail --net=none <APPLICATION>
firejail --private <APPLICATION>
firejail --private=<PRIVATE_HOME> <APPLICATION>
firejail --private-tmp <APPLICATION>
firejail --dns=<DNS_SERVER> <APPLICATION>
firejail --caps.drop=all --seccomp --nonewprivs <APPLICATION>

Monitoring et audit

firejail --debug <APPLICATION>
firejail --debug <APPLICATION> | rg 'Seccomp|Capabilities|Namespace'
dmesg | rg -i firejail
ausearch -m SECCOMP -ts recent

Commandes par niveau

firejail --private-tmp <DISCORD_BINARY>
firejail --private-tmp <STEAM_BINARY> <URI_ARGS>
firejail --private-tmp <TOR_BROWSER_LAUNCHER> <URI_ARGS>
firejail --private-tmp --net=none <MPV_BINARY> <FILE_ARGS>
firejail --private-tmp --net=none <COMPATIBLE_IMAGE_VIEWER> <FILE_ARGS>
firejail --noprofile --private-tmp --net=none <IMAGE_EDITOR> <FILE_ARGS>
firejail --noprofile --private-tmp --net=none <OFFICE_SUITE> <FILE_ARGS>

Bonnes pratiques

  • Ne pas sandboxer mécaniquement les applications N0.
  • Toujours lancer les applications N1 et N2 via le lanceur prévu.
  • Contrôler toutes les lignes Exec=, y compris les actions secondaires.
  • Vérifier que Waybar et les raccourcis du compositeur suivent la même politique.
  • Vérifier régulièrement firejail --list.
  • Tester les profils avant intégration desktop.
  • Réserver les contenus suspects à une VM dédiée.

Dépannage

firejail --debug <APPLICATION>
firejail --noseccomp <APPLICATION>
firejail --noprofile <APPLICATION>
firejail --debug <APPLICATION> | rg -i 'denied|error|not permitted'
edit <USER_PROFILE>

Si AppArmor et Firejail se recouvrent, passer le profil AppArmor concerné en complain peut aider à isoler la cause sans supprimer la couche globale.

Limitations

  • Firejail ne protège que si l'application est lancée via Firejail.
  • --noprofile retire les restrictions du profil par défaut; N2 ne constitue pas une isolation complète du système de fichiers.
  • Certaines fonctionnalités demandent des whitelists: impression, webcam, GPU, Bluetooth.
  • Les restrictions X11 ne se transposent pas toujours sous Wayland.
  • L'impact performance est généralement faible, mais dépend des options.

Commandes de référence rapide

firejail --private-tmp <N1_APPLICATION>
firejail --noprofile --private-tmp --net=none <N2_APPLICATION>
firejail --debug <APPLICATION>
firejail --list
firejail --tree
firejail --top
firejail --shutdown=<SANDBOX_PID>
ls <GLOBAL_FIREJAIL_PROFILE_DIR>/*.profile