web-dev-qa-db-fra.com

Comment mettre en sandbox les applications?

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?

66
michel

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

  • chrootname__. 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 zones séparées, ni la situation toujours à risque de chrootname__. Je doute que ce soit ce que vous vouliez dire, mais regardez ce lien pour obtenir des informations plus détaillées.

25
Nanne

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

Vous pouvez simplement:

Sudo apt-get install firejail
firejail app
13
penguinforsupper

Docker vous aidera à configurer des conteneurs que vous pouvez utiliser à partir de votre noyau actuel, tout en les maintenant protégés du reste de votre système. Cela semble assez tranchant, mais il existe une concentration sur Ubuntu et une bonne documentation.

12
N. Thomas Kor

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é (à l'intérieur de 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 hôte 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 des 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 qualifié de "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.

10
Warren Hill

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.

9
0x78

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
4
timthelion

DoSH - Docker Shell

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

DoSH (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 de manière parallèle.

1
ubuser

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.

1
Phlya