Discussion:
systemd-run --user als Sandbox benutzen
(zu alt für eine Antwort)
Christian Garbs
2024-10-15 17:59:26 UTC
Permalink
Mahlzeit!

Ich bin dabei, ein paar Spiele von itch.io auszuprobieren und habe
überlegt, ob ich die irgendwie einfach sandboxen kann.

systemd kann das ja grundsätzlich.


systemd-run --user kann man mit "-p" einen Stapel Properties mitgeben,
z.B. LockPersonality=yes, PrivateTmp=yes, ProtectHome=tmpfs oder
PrivateNetwork=yes (vmtl. wäre localhost besser, aber egal, siehe unten).

Um den X-Server und pulseaudio zu erreichen, muss ich mit "-E"
einzelne Umgebungsvariablen durchreichen. Das wird ein wenig
ausprobieren, das ist mir klar.

Ich bin allerdings schon beim ersten Test über das Problem gestolpert,
dass ich als User gar keine Rechte habe, Rechtebeschränkungen zu
setzen, da kommt dann sowas:

- PrivateNetwork=yes is configured, but network namespace setup
failed, ignoring: Operation not permitted
- ProtectHostname=yes is configured, but UTS namespace setup is
prohibited (container manager?), ignoring namespace setup.
- Failed to drop capabilities: Operation not permitted


Den Weg, mir ein sudo-Skript zu schreiben, um darüber dann
'systemd-run' mit '-p User=ich' aufzurufen (also im System-Kontext,
statt als --user), will ich nicht gehen - ich will ja
Angriffsoberfläche verkleinern und nicht vergrößern :)


Ist es vielleicht gar nicht möglich, die Rechtebeschränkungen im
User-Kontext zu setzen?
Oder falls doch: Wie macht man das?


Grüße
Christian

PS: Kann man "systemd-run" im Vordergrund loggen lassen?
Mit "--pty --wait" bekomme ich ein paar Infos auf der Konsole zu
sehen, aber die richtigen Logausgaben sind weiterhin nur im
Journal zu finden. Was nervig auszulesen ist, weil der Unit-Name
ja bei jedem Lauf ein anderer ist. Etwas sed(1) hilft da, aber
geht das schöner?
--
....Christian.Garbs....................................https://www.cgarbs.de
Backward conditioning:
Putting saliva in a dog's mouth in an attempt to make a bell ring.
Thomas Dorner
2024-10-16 16:21:24 UTC
Permalink
Post by Christian Garbs
Ich bin dabei, ein paar Spiele von itch.io auszuprobieren und habe
überlegt, ob ich die irgendwie einfach sandboxen kann.
Zum "systemd-run --user" kann ich Dir zwar nicht wirklich weiterhelfen,
aber ich verwende für sowas seit einigen Jahren direkt LXC Applikations-
Container, da kann ich noch ein paar weitere Einschränkungen vornehmen.
(Die Anwendung sieht nur die Teile des Dateisystem, die sie benötigt,
und das meiste ist read-only.)

Aber auch da muß ich den Container selbst erst mal als root starten, und
im Container wird dann die Anwendung selbst mit dem gewünschten Benutzer
gestartet.

(X11 und pulseaudio werden wenn benötigt durchgeschleift, Netzwerk je
nach Bedarf voll, nur zum Host oder gar nicht. Konfigurieren tue ich
das alles mit drei Perl-Skripten und einem zugehörigen Modul, die
allerdings bisher nur Debian richtig unterstützen, Ubuntu vermutlich mit
minimalen Anpassungen.)
Post by Christian Garbs
Den Weg, mir ein sudo-Skript zu schreiben, um darüber dann
'systemd-run' mit '-p User=ich' aufzurufen (also im System-Kontext,
statt als --user), will ich nicht gehen - ich will ja
Angriffsoberfläche verkleinern und nicht vergrößern :)
Das fände ich erstmal nicht so schlimm, wichtig ist, was am Ende
übrigbleibt. Tipp: Starte doch so mal eine BaSH als einfacher User und
teste, worauf Du damit dann noch Zugriff hast.
Post by Christian Garbs
Ist es vielleicht gar nicht möglich, die Rechtebeschränkungen im
User-Kontext zu setzen?
Meines Wissens brauchst Du dafür tatsächlich selbst erweiterte Rechte,
insbesondere natürlich dann, wenn das auch noch für einen anderen User
geschehen soll.
Post by Christian Garbs
Oder falls doch: Wie macht man das?
Falls Dich meine Alternative interessiert, findest Du sie auf CPAN:
https://metacpan.org/dist/App-LXC-Container
(Und falls Du etwas anderes als Debian benutzt, wäre ich interessiert
das dort zum Laufen zu bekommen. ;-)

Viele Grüße, Thomas
--
Adresse gilt nur kurzzeitig!
Christian Garbs
2024-10-22 19:16:21 UTC
Permalink
Mahlzeit!
Post by Thomas Dorner
Post by Christian Garbs
Oder falls doch: Wie macht man das?
https://metacpan.org/dist/App-LXC-Container
(Und falls Du etwas anderes als Debian benutzt, wäre ich interessiert
das dort zum Laufen zu bekommen. ;-)
Ich habe primär Debian am Start, aber wenn ich dazu komme, das
auszupriberen, gibt's trotzdem eine Rückmeldung ;-)

Vielen Dank schon mal!
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Always remember that you are unique. Just like everyone else.
Lesen Sie weiter auf narkive:
Loading...