Comment sandbox applications?

66

Je souhaite exécuter de petits programmes non fiables, mais leur interdire l'accès aux fichiers en dehors de leur dossier, à leur accès réseau et à tout ce dont ils n'ont pas vraiment besoin. Quel est le moyen le plus simple d'y parvenir?

Michel
la source
Je ne l'ai jamais utilisé, je ne peux donc pas donner de réponse complète, mais d'après ce que je sais, AppArmor ( wiki.ubuntu.com/AppArmor ) devrait pouvoir le faire.
Javier Rivera
Découvrez Vagrant, un wrapper pour VirtualBox. vagrantup.com et [sur Wikipedia] ( en.wikipedia.org/wiki/Vagrant_(software%29) et sur github
Janus Troelsen
@ JavierRivera FWIW, SELinux également. On ne sait pas à quel point il serait facile de s’exécuter sur Ubuntu.
TC1
Apparmor est déjà installé par défaut dans Ubuntu, ce devrait donc être plus facile.
Javier Rivera
1
Il semble y avoir plusieurs possibilités: la virtualisation utilisant quelque chose comme Virtualbox (comme Vagrant), chroot, LXC, App Armor et SE Linux.
Flimm

Réponses:

26

S'ils ne sont vraiment pas fiables, et que vous voulez en être sûr, vous devriez créer une boîte séparée. Vraiment ou virtuellement.

De plus, vous ne voulez pas que cette boîte soit sur le même réseau que votre matériel important, si vous êtes assez paranoïaque. Dans toutes les solutions, vous auriez configuré un utilisateur distinct sans droits, afin de ne pas ouvrir trop d'outils au comprometteur potentiel.

  • L'option la plus sûre serait donc une boîte séparée physiquement retirée de votre réseau.
  • Vous pourriez céder un peu en l'ajoutant au réseau physique, mais sur un sous-réseau différent: pas de "vraie" connexion à l'intérieur
  • Une machine virtuelle serait une option, mais pourrait devoir renoncer à certaines performances

Si vous êtes obligé de l’exécuter sur la même boîte, vous avez par exemple, cette option

  • chroot. Il s’agit là d’une option par défaut pour beaucoup de personnes. Cela peut même fonctionner pour des menaces non spécifiques. Mais ce n’est PAS une option de sécurité et peut être facilement dissocié. Je suggérerais d'utiliser ceci comme prévu, c'est-à-dire pas pour la sécurité.

En fin de compte, vous devrez peut-être configurer un modèle de sandboxing spécifique sans les tracas de la virtualisation ou des boîtes séparées, ni la situation toujours à risque de chroot. Je doute que ce soit ce que vous vouliez dire, mais regardez ce lien pour des informations plus détaillées.

Nanne
la source
Dans quelle mesure serait-il prudent d'utiliser une application non fiable sur une machine virtuelle? J'ai entendu parler d'exploits théoriques qui peuvent accéder au système d'exploitation hôte via l'hyperviseur et l'infecter.
Zuallauz
Cela pourrait être le cas, bien que je ne sois pas au courant de telles menaces, mais certainement pas non ciblées. Vous devriez considérer que l'attaquant qui écrit des malwares dans un jeu ne va pas trop loin. Maintenant, une attaque de lance sur vous seul pourrait bien sûr, si ils connaissent votre mise en page, mais je ne pense toujours pas que ce soit votre première préoccupation. Si vous êtes certain qu'ils sont mallicious, vous devriez quand même configurer une boîte isolée, du point de vue du réseau.
Nanne
14

Firejail est relativement nouveau et en développement constant. Facile à utiliser.

Vous pouvez simplement:

sudo apt-get install firejail
firejail app
pingouin poursupper
la source
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Mark Kirby
12

Docker vous aidera à configurer les conteneurs que vous pouvez utiliser à partir de votre noyau actuel, tout en les maintenant éloignés du reste de votre système. Cela semble plutôt à la fine pointe, mais il existe une concentration sur Ubuntu et une bonne documentation.

N. Thomas Kor
la source
4
Je pense que c'est une bonne option dans la plupart des cas. Cependant, la partie "non approuvée" de la question initiale me concernerait un peu. Il existe des exemples de piratages disponibles qui peuvent permettre à une application de "sortir" de son conteneur. Et étant donné que les conteneurs Docker fonctionnent à la racine, cela pourrait être dangereux si votre objectif était de mettre en sandbox les applications les unes des autres.
Cris Holdorph
@CrisHoldorph est correct même si Docker est en train de s'améliorer et je pense même qu'il est aujourd'hui possible de lancer un docker sans privilège (pas en tant que root). Ceci est certainement vrai maintenant pour LXC et LXD (le parfois appelé démon LXC) peut grandement simplifier la création de tels conteneurs. Les conteneurs modernes non privilégiés peuvent donc être considérés comme une amélioration en termes de sécurité par rapport au noyau. Mais ils ne sont pas une barrière impénétrable!
Huygens
Docker n'est pas un outil de sécurité!
Federico
10

Virtualisation / émulation complète (VirtualBox)

Une solution possible est un logiciel de virtualisation tel que VirtualBox que vous pouvez trouver dans le centre logiciel.

  • Installer une boîte virtuelle
  • Créer une machine virtuelle avec la mise en réseau activée
  • Installez Ubuntu ou peut-être un bureau plus léger tel que Lubuntu
  • Mettre à jour complètement le système d'exploitation installé (dans la boîte virtuelle)
  • Désactiver la mise en réseau sur la machine virtuelle
  • Prendre un instantané

Vous pouvez maintenant installer le logiciel en lequel vous n'avez pas confiance pour voir ce qu'il fait. Il ne peut pas déranger le monde extérieur ou votre système d'exploitation car il n'a pas accès.

Cependant, votre machine virtuelle peut être mise au rebut, mais dans ce cas, vous pouvez simplement restaurer à partir de votre instantané.

Il existe peut-être d'autres méthodes pour limiter le pouvoir destructeur de logiciels non fiables, mais c'est la méthode la plus robuste à laquelle je puisse penser.

Virtualisation par conteneur (Docker / LXC)

Une autre option peut être LXC plus d'informations ici

LXC est le package de contrôle de l'espace utilisateur pour les conteneurs Linux, un mécanisme de système virtuel léger parfois décrit comme «chroot sur des stéroïdes».

LXC construit à partir de chroot pour mettre en œuvre des systèmes virtuels complets, en ajoutant des mécanismes de gestion des ressources et d’isolation à l’infrastructure existante de gestion des processus de Linux.

Il est disponible dans le centre de logiciel. Je n'ai aucune expérience avec cependant.

Warren Hill
la source
1
C'est juste gênant. Créez une machine virtuelle complète pour exécuter des jeux !!? ce n'est pas une très bonne solution. Ne pensez - vous pas Réglage de DRG et UID du processus serait FAÇON plus facile que cela?
Jack Mayerz
En fait, je pense que mettre en place une boîte virtuelle est suffisamment facile pour que je ne me soucie probablement pas de prendre un instantané. Si ma machine virtuelle est supprimée, je peux la supprimer.
emory
Vote négatif: raisonnement factuel incorrect, même si la solution est correcte. Les programmes n'ont pas besoin des mêmes privilèges que l'utilisateur qui les exécute. Linux et Ubuntu ont supporté MAC depuis des années. Ubuntu utilise AppArmos pour cela, et vous pouvez facilement contenir un programme dans un répertoire.
Javier Rivera
@JavierRivera "facilement" n'est pas le mot correct; sinon, un profil AppArmor et une stratégie SELinux pour Firefox seraient fournis par défaut avec chaque distribution et ce n'est pas le cas. Ubuntu fournit un tel profil, mais il n’est pas actif par défaut, car il rompt quelques fonctionnalités "populaires" de Firefox. Il n'y a pas beaucoup de stratégies SELinux non plus pour la plupart des applications à interface graphique, de telles applications nécessitent trop d'autorisations pour être encore appelées en bac à sable. Si vous n'êtes pas d'accord, veuillez poster ici des liens vers sandbox Firefox en toute sécurité, en utilisant soit AppArmor, soit SELinux! Si vous le pouviez, je serais vraiment heureux :-)
Huygens
Vous devriez probablement définir "sûr" pour une réponse significative, mais la politique par défaut de Firefox dans Ubuntu est tout à fait raisonnable pour moi. Bien sûr, cela casse la tâche car elle n’est pas aussi conviviale que de n’utiliser rien, mais c’est quand même beaucoup plus conviviale qu’une machine virtuelle complète pour moi (qui rompt également les fonctionnalités populaires de Firefox).
Javier Rivera
9

mbox

Mbox est un mécanisme de sandboxing léger que tout utilisateur peut utiliser sans privilèges spéciaux dans les systèmes d'exploitation courants.

Je l'ai utilisé pour plusieurs choses de manière fiable.

0x78
la source
4

sous-utilisateur

Vous pouvez utiliser le sous-utilisateur pour sandboxer vos applications avec Docker. Cela vous permet de faire des choses comme les applications d'interface graphique sandbox, ce qui n'est pas facile à faire directement avec Docker.

sudo apt install subuser
timthelion
la source
1

Je pense qu'une solution possible est de créer un utilisateur distinct à des fins de test et de limiter ses privilèges. De cette façon, vous ne perdrez pas en performances ce qui se produirait certainement dans une machine virtuelle, mais je pense que cela est moins sûr, si ce n’est pas très bien configuré, ce que je ne saurais vous conseiller.

Phlya
la source
2
Cela ne protège pas le système contre les logiciels malveillants qui peuvent toujours être installés ou exécutés - ce n'est pas non plus un sandboxing au sens de cette question
Thomas Ward
1

DoSH - Docker SHell

Au cas où vous voudriez simplement mettre en sandbox l'activité des utilisateurs, vous pouvez utiliser "DoSH"

DoSH (qui signifie Docker SHell) est un développement permettant de créer des conteneurs Docker lorsque les utilisateurs se connectent au système Linux et y exécutent un shell, au lieu de créer le shell en même temps.

Ubuser
la source