Sandbox-Anwendungen


66

Ich möchte kleine nicht vertrauenswürdige Programme ausführen, sie jedoch daran hindern, auf Dateien außerhalb ihres Ordners, des Netzwerkzugriffs und auf alles andere zuzugreifen, was sie nicht wirklich benötigen. Was ist der einfachste Weg, dies zu erreichen?


Ich habe es nie benutzt, daher kann ich keine vollständige Antwort geben, aber AFAIK, AppArmor ( wiki.ubuntu.com/AppArmor ) sollte in der Lage sein, dies zu tun.
Javier Rivera

Schauen Sie sich Vagrant an, einen Wrapper für VirtualBox. vagrantup.com und [auf Wikipedia] ( en.wikipedia.org/wiki/Vagrant_(software%29) und auf github
Janus Troelsen

@JavierRivera FWIW, auch SELinux. Keine Ahnung, wie einfach es wäre, Ubuntu zum Laufen zu bringen.
TC1

Apparmor ist in Ubuntu bereits standardmäßig installiert, daher sollte es einfacher sein.
Javier Rivera

1
Es scheint, dass es mehrere Möglichkeiten gibt: Virtualisierung mit Virtualbox (wie Vagrant), Chroot, LXC, App Armor und SE Linux.
Flimm

Antworten:


26

Wenn sie wirklich nicht vertrauenswürdig sind und Sie sicher sein möchten, würden Sie eine separate Box einrichten. Entweder wirklich oder virtuell.

Außerdem möchten Sie nicht, dass sich diese Box im selben Netzwerk wie Ihre wichtigen Sachen befindet, wenn Sie paranoid genug sind. In allen Lösungen würden Sie einen separaten Benutzer ohne Rechte einrichten, um dem potenziellen Kompromissgeber nicht zu viele Tools zu öffnen.

  • Die sicherste Option wäre also eine separate Box, die physisch aus Ihrem Netzwerk entfernt wird.
  • Sie könnten ein bisschen nachgeben, indem Sie es zum physischen Netzwerk hinzufügen, aber in einem anderen Subnetz: keine "echte" Verbindung im Inneren
  • Eine virtuelle Maschine ist eine Option, muss jedoch möglicherweise Leistungseinbußen hinnehmen

Wenn Sie verpflichtet sind, es auf derselben Box auszuführen, haben Sie beispielsweise diese Option

  • chroot. Dies ist eine Standardoption für viele Benutzer. Bei unspezifischen Bedrohungen kann dies sogar funktionieren. Aber es ist KEINE Sicherheitsoption und kann ziemlich leicht herausgebrochen werden. Ich würde vorschlagen, dies wie vorgesehen zu verwenden, dh nicht aus Sicherheitsgründen.

Am Ende müssen Sie möglicherweise ein bestimmtes Sandbox-Modell einrichten, ohne den Aufwand der Virtualisierung oder separater Boxen oder die noch gefährdete Situation von chroot. Ich bezweifle, dass dies das ist, was Sie meinten, aber schauen Sie sich diesen Link an, um weitere Informationen zu erhalten.


Wie sicher wäre es aus Sicherheitsgründen, eine nicht vertrauenswürdige Anwendung auf einer virtuellen Maschine auszuführen? Ich habe von theoretischen Exploits gehört, die über den Hypervisor auf das Host-Betriebssystem zugreifen und es infizieren können.
zuallauz

Es könnte sein, auch wenn mir derzeit solche realen Bedrohungen nicht bewusst sind, sicherlich keine nicht zielgerichteten. Sie sollten berücksichtigen, dass der Angreifer, der Malware in ein Spiel schreibt, diese Anforderungen nicht erfüllt. Nun, ein Speerangriff auf dich allein könnte natürlich sein, wenn sie dein Layout kennen, aber ich denke immer noch nicht, dass das deine erste Sorge ist. Wenn Sie sich sicher sind, dass sie gut zusammenpassen, sollten Sie auf jeden Fall eine isolierte Box einrichten, was das Netzwerk betrifft.
Nanne

14

Feuergefängnis ist ziemlich neu und in ständiger Entwicklung. Einfach zu verwenden.

Sie können einfach:

sudo apt-get install firejail
firejail app

Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Mark Kirby

12

Docker hilft Ihnen beim Einrichten von Containern, die Sie von Ihrem aktuellen Kernel ausführen und die dennoch vom Rest Ihres Systems fernhalten können. Es scheint ziemlich topaktuell, aber es gibt einen Ubuntu-Fokus und eine gute Dokumentation.


4
Ich denke, dies ist in den meisten Fällen eine gute Option. Der "nicht vertrauenswürdige" Teil der ursprünglichen Frage würde mich jedoch ein wenig beschäftigen. Es sind demonstrierte Hacks verfügbar, mit denen eine Anwendung aus ihrem Container "ausbrechen" kann. Angesichts der Tatsache, dass Docker-Container mit Root-Zugriff ausgeführt werden, kann dies gefährlich sein, wenn Sie darauf abzielen, die Anwendungen voneinander zu trennen.
Cris Holdorph

@CrisHoldorph richtig, obwohl Docker besser wird und ich denke sogar, dass es heutzutage möglich ist, einen Docker ohne Privilegien (nicht als root) zu betreiben. Dies gilt jetzt mit Sicherheit für LXC, und LXD (der manchmal so genannte LXC-Daemon) kann die Erstellung solcher Container erheblich vereinfachen. So können moderne nichtprivilegierte Container als eine Verbesserung der Sicherheit gegenüber Chroot angesehen werden. Aber sie sind keine undurchdringliche Barriere!
Huygens

Docker ist kein Sicherheitstool!
Federico

10

Volle Virtualisierung / Emulation (VirtualBox)

Eine mögliche Lösung ist eine Virtualisierungssoftware wie VirtualBox, die Sie im Software-Center finden.

  • Installieren Sie die virtuelle Box
  • Erstellen Sie eine virtuelle Maschine mit aktiviertem Netzwerk
  • Installiere Ubuntu oder vielleicht einen leichteren Desktop wie Lubuntu
  • Vollständige Aktualisierung des installierten Betriebssystems (in der virtuellen Box)
  • Deaktivieren Sie das Netzwerk auf der virtuellen Maschine
  • Mach einen Schnappschuss

Sie können jetzt die Software installieren, der Sie nicht vertrauen, um zu sehen, was sie tut. Es kann die Außenwelt nicht stören, oder Sie hosten das Betriebssystem, da es keinen Zugriff hat.

Möglicherweise wird Ihre virtuelle Maschine jedoch in den Papierkorb verschoben, in diesem Fall können Sie sie jedoch einfach von Ihrem Snapshot wiederherstellen.

Es mag andere Methoden geben, um die zerstörerische Kraft von nicht vertrauenswürdiger Software zu begrenzen, aber dies ist die robusteste Methode, die ich mir vorstellen kann.

Container-basierte Virtualisierung (Docker / LXC)

Eine weitere Option kann LXC sein. Weitere Informationen finden Sie hier

LXC ist das Userspace-Steuerungspaket für Linux-Container, ein leichter Mechanismus für virtuelle Systeme, der manchmal als „Chroot on Steroids“ bezeichnet wird.

LXC baut auf chroot auf, um vollständige virtuelle Systeme zu implementieren, und erweitert die bestehende Infrastruktur für das Prozessmanagement von Linux um Ressourcenmanagement- und Isolationsmechanismen.

Es ist im Software-Center verfügbar. Ich habe jedoch keine Erfahrung damit.


1
Das ist einfach unpraktisch. Erstellen Sie eine vollständige virtuelle Maschine, um Spiele auszuführen !!? Das ist keine sehr gute Lösung. Glauben Sie nicht , den Prozess des GID und UID Einstellung wäre WAY einfacher als das?
Jack Mayerz

Eigentlich denke ich, dass das Einrichten einer virtuellen Box so einfach ist, dass ich mich wahrscheinlich nicht darum kümmern würde, einen Schnappschuss zu machen. Wenn es meine virtuelle Maschine zerstört, kann ich es verwerfen.
Emory

Downvote: Falsche sachliche Argumentation, auch wenn die Lösung richtig ist. Programme müssen nicht die gleichen Berechtigungen haben wie der Benutzer, der sie ausführt. Linux und Ubuntu unterstützen MAC seit Jahren. Ubuntu verwendet dazu AppArmos, und Sie können ein Programm leicht in ein Verzeichnis aufnehmen.
Javier Rivera

@JavierRivera "leicht" ist nicht das richtige Wort, oder ein AppArmor-Profil und eine SELinux-Richtlinie für Firefox werden standardmäßig mit jeder Distribution ausgeliefert, was nicht der Fall ist. Ubuntu liefert ein solches Profil aus, ist jedoch standardmäßig nicht aktiv, da es einige "beliebte" Firefox-Funktionen beeinträchtigt. Auch für die meisten GUI-Apps gibt es nicht viele SELinux-Richtlinien. Für diese Apps sind zu viele Berechtigungen erforderlich, um weiterhin als Sandbox bezeichnet zu werden. Wenn Sie nicht einverstanden sind, posten Sie bitte hier Links zu Sandbox Firefox, die entweder AppArmor oder SELinux verwenden! Wenn Sie können, würde ich mich sehr freuen :-)
Huygens

Sie sollten wahrscheinlich "sicher" für eine aussagekräftige Antwort definieren, aber die Standard-Firefox-Richtlinie in Ubuntu ist für mich durchaus vernünftig. Natürlich bricht es, was nicht so benutzerfreundlich ist wie das Verwenden von nichts, aber es ist für mich immer noch viel benutzerfreundlicher als eine vollständige virtuelle Maschine (die auch die beliebten Firefox-Funktionen bricht).
Javier Rivera

9

mbox

Mbox ist ein leichter Sandbox-Mechanismus, den jeder Benutzer ohne besondere Berechtigungen in Standardbetriebssystemen verwenden kann.

Ich habe es für ein paar Dinge zuverlässig verwendet.



1

Ich denke, eine mögliche Lösung besteht darin, einen separaten Benutzer zu Testzwecken zu erstellen und seine Berechtigungen einzuschränken. Auf diese Weise verlieren Sie nicht an Leistung, was auf jeden Fall in einer virtuellen Maschine passieren würde, aber ich denke, dies ist weniger sicher, wenn es nicht richtig eingerichtet ist, und ich kann Ihnen keine Ratschläge dazu geben.


2
Dies schützt das System nicht vor bösartiger Software, die möglicherweise noch installiert oder ausgeführt wird - es ist auch kein Sandboxing in der Art und Weise, wie diese Frage es bedeutet
Thomas Ward

1

DoSH - Docker SHell

Für den Fall, dass Sie lediglich die Aktivität der Benutzer in einer Sandbox speichern möchten, können Sie "DoSH" verwenden.

DoSH (was für Docker SHell steht) ist eine Entwicklung zum Erstellen von Docker-Containern, wenn Benutzer sich am Linux-System anmelden und eine Shell ausführen, anstatt die Shell einfach zu erstellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.