Du bist nicht angemeldet.

#1 28.05.2019 03:05:31

TeachMeArch
Mitglied

Programm soll nur von bestimmtem User ausführbar sein.

Hallo Leute,
als langjähriger Windows-Simple komm ich mit der Rechteverwaltung unter arch noch nicht so wirklich zurecht. Sagen wir mal ich habe eine Textdatei mit Namen geheim und an der möchte ich exclusive Rechte haben. Dann würde ich dies mit "chmod -v 700 geheim.txt" erreichen, richtig? Nun möchte ich aber das ein bestimmtes Programm sich nur von mit benutzen lässt (z.B. neofetch oder midnight commander) wenn ich jetzt "chmod -v 700 neofetch" oder "chmod -v 700 mc" benutze kommt es jeweils zu einem Fehler, da er keine Datei mit Namen neofetch oder mc findet. Wie würde ich es richtig machen? Wie schränke ich unter Arch den Zugriff auf ein Programm ein?
Gruß
Achim

Offline

#2 28.05.2019 06:38:10

schard
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

Gar nicht. Systembinaries heißen so, weil alle Benutzer auf dem System sie nutzen können sollen. Wenn du einen Benutzer mit einem eingeschränkten System betreiben möchtest, ist chroot das Stichwort.

Offline

#3 28.05.2019 08:35:19

brikler
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

TeachMeArch schrieb:

Hallo Leute,
als langjähriger Windows-Simple komm ich mit der Rechteverwaltung unter arch noch nicht so wirklich zurecht. Sagen wir mal ich habe eine Textdatei mit Namen geheim und an der möchte ich exclusive Rechte haben. Dann würde ich dies mit "chmod -v 700 geheim.txt" erreichen, richtig? Nun möchte ich aber das ein bestimmtes Programm sich nur von mit benutzen lässt (z.B. neofetch oder midnight commander) wenn ich jetzt "chmod -v 700 neofetch" oder "chmod -v 700 mc" benutze kommt es jeweils zu einem Fehler, da er keine Datei mit Namen neofetch oder mc findet. Wie würde ich es richtig machen? Wie schränke ich unter Arch den Zugriff auf ein Programm ein?
Gruß
Achim

eine interessante frage, ich würde chmod den pfad zum binary mit geben

sudo chmod ugo <optionen> /usr/bin/<binary>

https://linux.die.net/man/1/chmod

Offline

#4 28.05.2019 10:46:20

schard
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

@brikler
Eine dumme Idee, die nur bis zum nächsten Update hält.
Außerdem kann sich der Benutzer ggf. den Quelltext herunter laden und selbst kompilieren.

Offline

#5 28.05.2019 10:55:14

Dirk
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

schard schrieb:

Außerdem kann sich der Benutzer ggf. den Quelltext herunter laden und selbst kompilieren.

Oder einfach die Binary ins eigene Home kopieren, und die Berechtigungen dort ändern und dann aus dem eigenen Home starten.

Online

#6 28.05.2019 11:26:54

TeachMeArch
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

schard schrieb:

Gar nicht. Systembinaries heißen so, weil alle Benutzer auf dem System sie nutzen können sollen. Wenn du einen Benutzer mit einem eingeschränkten System betreiben möchtest, ist chroot das Stichwort.

Danke für den Hinweis; ich werde mir das mit chroot mal genauer ansehen.

Offline

#7 28.05.2019 13:24:51

brikler
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

schard schrieb:

@brikler
Eine dumme Idee, die nur bis zum nächsten Update hält.
Außerdem kann sich der Benutzer ggf. den Quelltext herunter laden und selbst kompilieren.

ich dachte eher, an die leben kleinen, die vielleicht nicht alle papas programme ausführen können sollten, du verstehst?^^

Offline

#8 28.05.2019 13:54:42

Dirk
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

brikler schrieb:
schard schrieb:

@brikler
Eine dumme Idee, die nur bis zum nächsten Update hält.
Außerdem kann sich der Benutzer ggf. den Quelltext herunter laden und selbst kompilieren.

ich dachte eher, an die leben kleinen, die vielleicht nicht alle papas programme ausführen können sollten, du verstehst?^^

Darum die entsprechenden User in ein chroot sperren.

Online

#9 28.05.2019 20:08:12

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Dirk schrieb:

Oder einfach die Binary ins eigene Home kopieren

--x------

Offline

#10 28.05.2019 20:08:52

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

brikler schrieb:

ich dachte eher, an die leben kleinen, die vielleicht nicht alle papas programme ausführen können sollten, du verstehst?^^

Du meinst einen Browser?

Offline

#11 28.05.2019 20:21:16

brikler
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

TBone schrieb:
brikler schrieb:

ich dachte eher, an die leben kleinen, die vielleicht nicht alle papas programme ausführen können sollten, du verstehst?^^

Du meinst einen Browser?

es war ganz allgemein gedacht, aber der browser ist ein gutes beispiel

Offline

#12 28.05.2019 21:54:29

Galde75
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Ich hab mich mit dem Thema noch nicht so befasst, daher nur Theorie.

Meine Idee ist ein Alias/Function zu schreiben das vor dem Ausführen den User prüft?

Offline

#13 28.05.2019 22:09:34

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Deine Funktion ruft was genau auf? Überleg mal selbst, wie man diese Funktion einfach umgehen könnte.

Offline

#14 28.05.2019 22:17:14

wirr
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Man erstellt eine Gruppe, fügt die gewünschten Benutzer hinzu und nimmt den andern die Rechte weg:

# groupadd firefox
# usermod -aG firefox user
# chown root:firefox /usr/bin/firefox
# chmod 750 /usr/bin/firefox

Mit einem pacman hook kann man die Rechte bei einem Update automatisch anwenden:

# mkdir -p /etc/pacman.d/hooks
# cat /etc/pacman.d/hooks/firefoxpermissions.hook 
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = firefox

[Action]
Description = Beschränke Zugriff auf firefox
When = PostTransaction
Exec = /bin/sh -c '/usr/bin/chown root:firefox /usr/bin/firefox ; chmod 750 /usr/bin/firefox'

Offline

#15 28.05.2019 22:26:58

schard
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

@wirr: Und dann zieht sich der unberechtigte Benutzer via curl oder wget das firefox Paket von einem Mirror und entpackt die Binary nach ~/.local/bin und keiner hat was gewonnen.

Offline

#16 28.05.2019 22:38:49

wirr
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Will man das verhindern, kann man z.B. $HOME mit der noexec Option mounten oder curl und wget entfernen.

Das ist aber eine andere Frage?

Offline

#17 29.05.2019 02:04:46

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

wirr schrieb:

Will man das verhindern, kann man z.B. $HOME mit der noexec Option mounten oder curl und wget entfernen.

Das ist aber eine andere Frage?

Ja, weil schon hast du /tmp und noch ein paar schöne Verzeichnisse vergessen und vor allem ein paar schöne Tricks, die da noch existieren.
Ihr veranstaltet hier ein Theater für Pseudosicherheit und das sage ich, dem das bisher nicht nur von Arch-Paket-Maintainern vorgeworfen wurde.

Beitrag geändert von TBone (29.05.2019 02:07:27)

Offline

#18 29.05.2019 05:18:50

Galde75
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Sind eigentlich nicht selinux und apparmor dafür da Zugriffsrechte zu regeln?

Offline

#19 29.05.2019 17:00:08

wirr
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

TBone schrieb:

Ja, weil schon hast du /tmp und noch ein paar schöne Verzeichnisse vergessen und vor allem ein paar schöne Tricks, die da noch existieren.

Warum nennt ihr die Tricks nicht?
Weil nicht die Frage 'wie verhindere ich, dass Benutzer beliebige Software aus dem Internet starten' gestellt wurde?
Wie hilft chroot dagegen?

TBone schrieb:

Ihr veranstaltet hier ein Theater für Pseudosicherheit

Es ist ein kleiner Schritt, der alleine euch nicht aufhalten würde irgendeinen firefox zu starten, aber /usr/bin/firefox.

Ob das dem OP oder brikler genügt, ist ihre Entscheidung.

Offline

#20 29.05.2019 17:13:17

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

wirr schrieb:

Warum nennt ihr die Tricks nicht?

Weil ich gar nicht alle kenne. Es gibt mit Python da ein paar schöne Tricks. Kurz gesagt, verbiete auch alle Interpreter. (PHP, Python, Perl, usw).
Dann schließe ich nicht aus, dass die Bash ein paar schöne versteckte Funktionen hat (Ist ja schön bloated), die man eventuell dafür nutzen kann. Dann verbietest du am besten auch noch alle Shells, die auf deinem System so installiert sind.
Hast du auf deinem System irgendein Programm installiert, welches nachladbare Module hat? Dann verbiete auch diese.

Ich sagte nie, dass ein chroot die Lösung ist. Es ist ein Tool, um weniger Binaries einem Nutzer zur Verfügung zu stellen, deren Funktionen du nicht abschätzen kannst.

Offline

#21 29.05.2019 17:46:10

wirr
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

Ich glaube gegen deine Bedenken hilft zu einem grossen Teil 'rbash' (Kapitel RESTRICTED SHELL in der bash man page).
Es kann aber sein, dass rbash völlig über das Ziel hinaus schiesst: Die Angreifer wissen einfach zu wenig und ein erfolgreicher Angriff wäre nicht schlimm.

Mit chroot kann man relativ einfach eine Whitelist von erlaubten Programmen umsetzen. Die Frage war aber, wie man gewisse Programme sperren kann.

Offline

#22 29.05.2019 18:32:32

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

wirr schrieb:

Die Angreifer wissen einfach zu wenig und ein erfolgreicher Angriff wäre nicht schlimm.

Oh nein, das schockt mich jetzt von der ganzen Beschreibung aus dem Text her aber total!

Offline

#23 29.05.2019 21:02:51

schard
Moderator

Re: Programm soll nur von bestimmtem User ausführbar sein.

Bitte bleibt beim Thema und nach Möglichkeit hilfreich, danke.

Offline

#24 10.06.2019 21:16:56

akarvi
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

schard schrieb:

@wirr: Und dann zieht sich der unberechtigte Benutzer via curl oder wget das firefox Paket von einem Mirror und entpackt die Binary nach ~/.local/bin und keiner hat was gewonnen.

Wenn der unberechtigte Benutzer DAS durchzieht, kennt er sich womöglich schon so gut aus, dass es sowieso schwieriger wird. Dann kennt er womöglich auch andere Tricks, an gewisse Rechte zu gelangen.
Also: Kenntnisse des Users (z.B. Kinder?) einschätzen und entsprechend konfigurieren oder Rechte so restriktiv einrichten, dass auch ein kompetenter User (zumindest unter seinem Login) nichts ausrichten kann. Z.B. mittels default umask oder ACLs. Dann können keine Programme ohne Eingriff des Admins mehr ausgeführt werden, egal wo sie liegen. chmod und chown sollte man natürlich entsprechend sperren.

Um z.B. Linux-kompetenten Kindern die Nutzung eines Browsers zu gestatten, aber nur bestimmte Seiten zuzulassen, würde ich z.B. eher mit nem eigenen DNS/Routen arbeiten. Am besten dann natürlich auf nem eigenen Kinder-Rechner, wo auch die Rechte der Nutzer entsprechend restriktiv sind. Wenns auf dem Eltern-PC sein soll, dann geht auch das per Script, das bei Nutzeranmeldung die /etc/network/interfaces ändert.


Ansonsten apparmor.

Offline

#25 10.06.2019 21:26:21

TBone
Mitglied

Re: Programm soll nur von bestimmtem User ausführbar sein.

akarvi schrieb:

das bei Nutzeranmeldung die /etc/network/interfaces ändert.

Du bist raus!

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums