Seiten: [1]
|
|
|
|
Autor
|
Thema: run0 als sudo Alternative (Gelesen 1430 mal)
|
|
Sebastian
Sr. Member
Offline
Einträge: 487
|
|
run0 als sudo Alternative
« 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
|
|
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Sebastian
Sr. Member
Offline
Einträge: 487
|
|
systemd 256 Update Hinweis
« Antwort #1 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:
(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
|
|
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Sebastian
Sr. Member
Offline
Einträge: 487
|
|
Tests mit run0
« Antwort #2 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
run0 -u sebastian bash -c 'sleep 60'
|
|
Dabei kam folgende "pstree -T" ausgabe herraus:
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' "
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:
--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.
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
|
« Letzte Änderung: 18. Juni 2024, 17:35:54 von Sebastian » |
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Sebastian
Sr. Member
Offline
Einträge: 487
|
|
pkexec die Polkit Alternative zu sudo
« Antwort #3 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
|
|
Gespeichert
|
Richtig um Hilfe bitten
|
|
|
Seiten: [1]
|
|
|
|
|
|
|