Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
allgemeine Kategorie => Installation & Einrichtung => Thema von: Sebastian am 16. Juni 2024, 17:03:03

Titel: run0 als sudo Alternative
Beitrag von: Sebastian am 16. Juni 2024, 17:03:03

Einleitung:

Hallo Suletuxe,

in systemd v256 das momentan noch im Arch Core-Testing ist, hält ein neues CLI Tool mit dem Namen run0 Einzug das intern systemd-run (das es bereits länger gibt) verwendet. run0 soll als nicht vollwertige, dafür aber sicherere Alternative zu sudo (sudo hat immer noch mehr Funktionen, die der normale User aber nicht verwendet) verwendet werden können.

Es lehnt sich von den Optionen her an sudo an, das war es dann aber auch schon mit den Gemeinsamkeiten da run0 ganz anders Arbeit als sudo.

run0 Unterschide zu sudo

run0 ist kein Setuid Binary wie sudo. Sondern führt den Prozess als neuen isolierten Service unter PID 1 aus. Dabei werden keine Ausführungs- oder Sicherheitskontext Informationen vom Aufrufer in die aufgerufenen Befehle übernommen, da diese von einem neuen, isolierten Dienst aufgerufen werden, der vom systemd geforkt wurde.

Es brauch keine eigene Config wie die /etc/sudoers, sondern verwendet dafür polkit. Mit allen Annehmlichkeiten die polkit so mitbringt (Unterschiedliche Authentifizierungsmöglichkeiten (Biometrie, etc.)). Gut, polkit ist auch nicht grade einfacher als sudo zu konfigurieren, dafür aber mächtiger. Und Programme können ihre eigenen Regeln mitbringen.

Weitere Informationen

Hier sind ein paar Links mit weiteren Informationen:

https://www.freedesktop.org/software/systemd/man/devel/run0.html
https://www.heise.de/news/Systemd-Alternative-zu-sudo-soll-Linux-sicherer-machen-9705458.html
https://news.itsfoss.com/systemd-run0/

Fazit

Für mich hört sich das aufgrund der erhöhten Sicherheit, und der Tatsache, das ich die meisten Funktionen von sudo nicht ausschöpfe nach einer sehr guten Alternative zu sudo an. Besonders weil ich mit den anderen systemd Tools auch sehr zu Frieden bin, hätte ich so noch ein Tool mehr aus einer Hand.

Ganz auf sudo kann man leider (noch nicht) verzichten, da in Arch sudo z.b. in dem base-devel als Abhängigkeit mit drin steckt und zu viele Skripte sudo als gegeben ansehen.

Was sagt ihr zu run0 könnt ihr euch das als sudo Ersatz auch vorstellen?

LG
Sebastian

Titel: systemd 256 Update Hinweis
Beitrag von: Sebastian am 18. Juni 2024, 14:48:23

Hallo Suletuxe,

Systemd 256 ist im Core Repository heute angekommen. Für alle, die heute ein Systemupdate durchführen, achtet auf den Hinweis, den es beim Update von systemd vom Paket Maintainer gab:
Zitat:
(10/53) Aktualisiert wird systemd [#####################################################] 100%
:: This is a systemd feature update. You may want to have a look at
NEWS for what changed, or if you observe unexpected behavior:
/usr/share/doc/systemd/NEWS


LG
Sebastian

Titel: Tests mit run0
Beitrag von: Sebastian am 18. Juni 2024, 17:23:12

Ich habe jetzt mal ein wenig mit run0 herumgespielt folgendes ist mir dabei aufgefallen:

Zu test Zwecken habe ich über run0 eine neue bash shell unter meinen eigenen Benutzer gestartet und darin das Programm sleep für 60 Sekunden ausgeführt. Damit ich genug zeit habe den Prozess zu untersuchen


Code:

run0 -u sebastian bash -c 'sleep 60'


Dabei kam folgende "pstree -T" ausgabe herraus:
Zitat:
systemd─┬─NetworkManager
├─accounts-daemon
├─applet.py
├─avahi-daemon───avahi-daemon
├─colord
├─cupsd
├─dbus-broker-lau───dbus-broker
├─firewalld
├─lightdm─┬─Xorg
│ └─lightdm───i3─┬─bash───xss-lock
│ ├─dunst
│ ├─i3bar───i3blocks───bash─┬─awk
│ │ ├─bash───sleep
│ │ └─grep
│ ├─kitty───bash───pstree
│ └─kitty───bash───run0───pkttyagent
├─nm-applet
├─polkitd
├─power-profiles-
─sleep───(sd-pam)


Sleep wurde sauber von systemd geforkt und läuft nicht im Benutzerkontext (Sicherheitszugewinn)

Das gleiche nun mit "sudo -u sebastian bash -c 'sleep 60' "
Zitat:
systemd─┬─NetworkManager
├─accounts-daemon
├─applet.py
├─avahi-daemon───avahi-daemon
├─colord
├─cupsd
├─dbus-broker-lau───dbus-broker
├─firewalld
├─lightdm─┬─Xorg
│ └─lightdm───i3─┬─bash───xss-lock
│ ├─dunst
│ ├─i3bar───i3blocks───bash─┬─awk
│ │ ├─bash───sleep
│ │ └─grep
│ ├─kitty───bash───pstree
│ └─kitty───bash───sudo───sudo───sleep


Hier kann man erkennen das sudo sich aus meiner Bash shell sich selbst geforkt hat und darin sleep ausführt. Sudo läuft damit in meiner Nutzer Sassion. Und das leider, auch wenn ich mit sudo Root Rechte anfordere, dabei zeigt sich dasselbe Bild. Damit ist sudo der Safekeeper der Aufpassen muss das kein anderes Programm aus meiner Session sich dazwischen einklinkt.

Da gefällt mir der Ansatz von run0 schon besser das nicht im Nutzerkontext läuft.

Folgendes ist mir bei der nutzung von run0 noch aufgefallen:

run0 übergibt an die neue Session weniger Umgebungsvariablen, es fehlt unter anderen die DISPLAY Variable. Damit dürften keine grafischen Programme damit gestartet werden. (Dies kann man per Befehlszeile ändern oder konfigurieren)

Zudem ist folgender Hinweis aus dem Handbuch noch wichtig zu wissen falls man mit run0 ein Programm unter einen anderen User als Root ausführen möchte:
Zitat:
--chdir=, -D
Runs the invoked session with the specified working directory. If not specified defaults to the client's current working directory if
switching to the root user, or the target user's home directory otherwise.


Mit anderen Worten, das Working Directory ist nicht automatisch das, wo man sich drin befinden. Sondern ist per Standard das Heimartverzeichnis es sei, den man übergibt ein anders mit der oben erwähnten Option am einfachsten ist ein Programm aufruf dann wohl so, wenn man im aktuellen Verzeichnis bleiben möchte.


Code:

run0 -u sebastian -D . bash -c 'echo Hallo Welt'


Und per Default muss das Kennwort für jeden Befehl eingegeben werden. (Sicherheitszugewinn) die Authentifizierung wird nicht wie bei sudo für ein paar Minuten abgeschaltet.

Da run0 das Polkit und seine Autentifzierungs Agents verwendet. Wird man feststellen das man unter X oder wayland ein Grafisches Authentifizierungsfenster bekommt. Solange man so ein Agent installiert hat.

Bis jetzt bin ich von run0 schon ziemlich angetan. Jetzt gilt es zu untersuchen welche Angriffsmöglichkeiten für dieses neue Konzept sich zeigen werden. ;)


LG
Sebastian

Titel: pkexec die Polkit Alternative zu sudo
Beitrag von: Sebastian am 18. Juni 2024, 17:50:21

Da ich mich nun auch mit dem Polkit durch run0 beschäftigt habe. Habe ich noch eine sudo Alternative, die die meisten durch Polkit schon längst auf ihren system haben gefunden. pkexec dies ist leider genauso wie sudo ein SUID Binary teilt also die gleichen Sicherheitskonzeptschwachstellen.

Aber man kann das ja im Hinterkopf behalten, falls man mal sein sudo kaputt konfiguriert hat und sich selbst ausgeschlossen hat. Dann kann man sich mit run0 bzw. pkexec die sich an Polkit orientieren sich selbst aus dem Sumpf ziehen.

LG
Sebastian


Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.