PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine SHELL für einen Benutzer einschränken



Elegua
25.06.03, 13:53
Hiii! ;)

Ich möchte einigen Leuten Shell Zugang zu meinem Server ermöglichen.

Jedoch möchte ich verhindern, das einige Sachen mit dieser Shell NICHT erlaubt werden:

1. KEINE Dateien ausführen dürfen
2. Man soll sich einer Art CHROOT-Umgebung sich befinden (Verzeichnis / entspricht /home/user9/ usw)
3. sich als r00T einloggen dürfen
4. KEINE Verbindung zu anderen Rechnern aufnehmen (entfällt ja eh, da Punkt 1)

Hat jemand einen Tipp für mich,
wie ich soetwas machen kann?
Oder ob es Projekte gibt, die sich mit soetwas beschäftigen?
es gibt doch auch Anbieter im Internet,
da kann man sich für 1EURO im Monat einen Shellzugang mieten,
da darf man doch auch nur bestimmte Sachen machen.

Vielen Dank,
für JEDEN Hinweis! :)

- Paddy.

Devil-Linux
25.06.03, 14:18
Unter /bin/false kannste du Einschränkungen vornehmen die die Konsole betreffen!

Mehr kann ich dazu nit sagen!

Tomonage
25.06.03, 14:25
guck dir mail die jails von freeBSD an.

Elegua
25.06.03, 15:30
Original geschrieben von Devil-Linux
Unter /bin/false kannste du Einschränkungen vornehmen die die Konsole betreffen!

Mehr kann ich dazu nit sagen!

Nun, davon weiß ich nichts.
Und davon steht hier auch nichts oder?:

nbpeter:/home/peterpa # /bin/false --help
Aufruf: /bin/false [ignorierte Kommandozeilen-Argumente]
oder: /bin/false OPTION
Mit einem Status-Code beenden, der einen Fehler signalisiert.

Diese Optionen dürfen nicht abgekürzt werden.

--help diese Hilfe anzeigen und beenden.
--version Versionsinformation anzeigen und beenden.

Elegua
25.06.03, 16:38
Original geschrieben von Tomonage
guck dir mail die jails von freeBSD an.
Hm, ja ich habe auch schon unter GOOGLE gesucht,
aber so richtig defenitives nicht gefunden:
http://www.google.de/linux?hl=de&ie=ISO-8859-1&q=shell+%2Bjail&btnG=Google+Suche&meta=

Und wenn man von JAIL spricht, meint man wohl oft auch eine Art "V-Server"
siehe hier:
http://www.gsyc.inf.uc3m.es/~assman/index.html
http://www.easy-pinguin.de/bsd/jail.html

Ich möchte aber lediglich die Funktionen einer Shell einschränken.

dragon's might
25.06.03, 16:42
Du willst eher die Rechte für den Benutzer einschränken, das hat nix mit der Bash zu tun

Elegua
25.06.03, 16:45
Naja, und wie kann ich das nach meinen Anfordungen machen?
-> s.o.

:)

RapidMax
25.06.03, 17:19
Eine gute Sicherheits-police besteht nicht darin, zu definieren, was verboten ist, sondern zu definieren, was erlaubt ist.

In diesem Fall ist es hilfreich, wenn du uns mitteilen könntest, was der User machen darf.

Gruss, Andy

derRichard
25.06.03, 18:04
hallo!

dir wird nichts anderes übrig bleiben, als eine eigene chroot-umgebung zu bauen.

//richard

Thomas
25.06.03, 18:25
Was ist mit rsh in der bash?

Das sollte genau den Anforderungen entsprechen, folgende Dinge sind nicht erlaubt:


changing directory (see cd(1)), setting or unsetting the value or attributes of SHELL, ENV, or PATH
specifying path or command names containing /,
redirecting output (>, >|, <>, and >>).
adding or deleting built-in commands


Die bash konfigurieren und mit dem Argument "-r" starten.


Thomas

Elegua
26.06.03, 08:13
Original geschrieben von TThomas
Was ist mit rsh in der bash?

Das sollte genau den Anforderungen entsprechen, folgende Dinge sind nicht erlaubt:


changing directory (see cd(1)), setting or unsetting the value or attributes of SHELL, ENV, or PATH
specifying path or command names containing /,
redirecting output (>, >|, <>, and >>).
adding or deleting built-in commands


Die bash konfigurieren und mit dem Argument "-r" starten.


Thomas
Hi! ;)
Ja, mit
bash -r habe ich mich auch schon auseinander gesetzt.
Aber leider kann man dann noch nicht einmal ein einfaches
ls ausführen. :-/

@RapidMax:
Das sollte der User machen dürfen:
- erlaubte Kommandos:
ls, cd, cp, pwd, chmod, vi,
- kein redirecting output (>, >|, <>, and >>).
- kein setting or unsetting the value or attributes of SHELL, ENV, or PATH

Jasper
26.06.03, 10:01
Original geschrieben von paddyhm

1. KEINE Dateien ausführen dürfen
2. Man soll sich einer Art CHROOT-Umgebung sich befinden (Verzeichnis / entspricht /home/user9/ usw)
3. sich als r00T einloggen dürfen
4. KEINE Verbindung zu anderen Rechnern aufnehmen (entfällt ja eh, da Punkt 1)


baue chroots. dann dürfen sie user nur die dateien ausführen, die in der chroot vorhanden sind (1.), 2. erledigt sich von selbst, 3. ist trivial, weil 'su' wegen 1. nicht geht, 4. erledigt sich durch 1.

pass nur auf, keine suid-root binaries in die chroots zu legen.

der vorteil gegenüber rbash: der user kann jede beliebige shell verwenden.

-j

ThorstenS
26.06.03, 11:19
hier ist mal erklärt, wie so eine chroot-Umgebung aufgebaut werden kann:
http://www.tjw.org/chroot-login-HOWTO/

Wenn das für einen User klappt, kannst du ja die skeletons bearbeiten um das nicht bei jedem neuen User wieder von Hand tun zu müssen.

Thomas
26.06.03, 12:23
Ein chroot-Umgebung ist für die Anforderungen meiner Meinung nach übertrieben.

Eine restricted bash ist schon das Richtige.

Natürlich kannst du Komandos wie 'ls' ausführen, du musst die PATH-Variable richtig setzten.
Zum Beispiel PATH=/bin/restricted, dann verlinkst du die Befehle die ausfühbar sein sollen in dieses Verzeichnis.

Ganz einfach, kaum Aufwand, sehr effektiv.


Thomas.

Jasper
26.06.03, 14:15
Original geschrieben von TThomas
Ein chroot-Umgebung ist für die Anforderungen meiner Meinung nach übertrieben.

Eine restricted bash ist schon das Richtige.


was ist mit punkt 2. der liste mit den anforderungen?



Ganz einfach, kaum Aufwand, sehr effektiv.


... und nicht sonderlich sicher. man muss mit environment-variablen aufpassen,mit shell-escapes, mit redirections. wär mir zu kompliziert zu verwalten, aber YMMV.

-j

Elegua
26.06.03, 14:37
Original geschrieben von TThomas
Ein chroot-Umgebung ist für die Anforderungen meiner Meinung nach übertrieben.

Eine restricted bash ist schon das Richtige.

Natürlich kannst du Komandos wie 'ls' ausführen, du musst die PATH-Variable richtig setzten.
Zum Beispiel PATH=/bin/restricted, dann verlinkst du die Befehle die ausfühbar sein sollen in dieses Verzeichnis.

Ganz einfach, kaum Aufwand, sehr effektiv.


Thomas.
Hey,
das klappt richtig gut.
:)

Du kennst Dich wohl mit der Shell aus oder? :)

Das wirklich einzigste was mir fehlt,
ist lediglich nurnoch das cd erlauben ansonsten habe ich das so gemacht:

nbpeter:/bin # cat rbash
#!/bin/bash

PATH=/usr/local/bin
/bin/bash -r
nbpeter:/bin #
nbpeter:/usr/local/bin # ls -la
insgesamt 2098
drwxr-xr-x 2 root root 632 2003-06-26 15:04 .
drwxr-xr-x 10 root root 240 2003-05-05 18:14 ..
-rwxr-xr-x 1 root root 11856 2003-03-14 03:00 basename
-rwxr-xr-x 1 root root 15556 2003-03-14 03:00 cat
-rwxr-xr-x 1 root root 18892 2003-03-14 03:00 chmod
-rwxr-xr-x 1 root root 53464 2003-03-14 03:00 cp
-rwxr-xr-x 1 root root 12928 2003-03-14 03:00 echo
-rwxr-xr-x 1 root root 38 2003-03-17 22:08 egrep
-rwxr-xr-x 1 root root 38 2003-03-17 22:08 fgrep
-rwxr-xr-x 1 root root 104896 2003-03-17 22:08 grep
-rwxr-xr-x 1 root root 53076 2003-03-14 01:16 gunzip
-rwxr-xr-x 1 root root 53076 2003-03-14 01:16 gzip
-rwxr-xr-x 1 root root 23324 2003-03-14 03:00 ln
-rwxr-xr-x 1 root root 74384 2003-03-14 03:00 ls
-rwxr-xr-x 1 root root 19684 2003-03-14 03:00 mkdir
-rwxr-xr-x 1 root root 27616 2003-03-14 01:42 more
-rwxr-xr-x 1 root root 57332 2003-03-14 03:00 mv
-rwxr-xr-x 1 root root 11504 2003-03-14 03:00 pwd
-rwxr-xr-x 1 root root 29052 2003-03-14 03:00 rm
-rwxr-xr-x 1 root root 12772 2003-03-14 03:00 rmdir
-rwxr-xr-x 1 root root 13316 2003-03-14 03:00 sleep
-rwxr-xr-x 1 root root 44756 2003-03-14 03:00 sort
-rwxr-xr-x 1 root root 297369 2003-05-25 20:23 squidGuard
-rwxr-xr-x 1 root root 144232 2003-03-14 03:00 tar
lrwxrwxrwx 1 root root 3 2003-06-26 15:01 vi -> vim
-rwxr-xr-x 1 root root 1020164 2003-03-17 16:52 vim
nbpeter:/usr/local/bin #


@Jasper:
Ja, gut Punkt 2 wurde noch fehlen.

Jasper
26.06.03, 14:57
Original geschrieben von paddyhm

Das wirklich einzigste was mir fehlt,
ist lediglich nurnoch das cd erlauben ansonsten habe ich das so gemacht:


dann wird dir das hier gar nicht gefallen (manpage bash):

It behaves identically to bash with the exception that the following are
disallowed or not performed:

changing directories with cd

-j

Elegua
26.06.03, 15:03
Original geschrieben von Jasper
dann wird dir das hier gar nicht gefallen (manpage bash):

It behaves identically to bash with the exception that the following are
disallowed or not performed:

changing directories with cd

-j

Ich hatte das vorher schon gelesen . . .
Das steht nämlich gaaaaanz unten auf der 3000 Seiten manpage.

Thomas
26.06.03, 15:24
Mit cd, hm...
Mein Fehler, ich dachte da du ja sowieso das home-dir als oberste Ebene im Dateisystem erscheinen lassen willst, dass es kein Problem sein würde die Dateien, die du verfügbar machen willst, alle im Home-Directory zu platzieren.

Ansonsten eben doch chroot, was eben viel aufwendiger ist.

Thomas.

Elegua
26.06.03, 16:53
Original geschrieben von TThomas
Mit cd, hm...
Mein Fehler, ich dachte da du ja sowieso das home-dir als oberste Ebene im Dateisystem erscheinen lassen willst, dass es kein Problem sein würde die Dateien, die du verfügbar machen willst, alle im Home-Directory zu platzieren.

Ja schon.
und was macht man, wenn man auch nur 1 einziges directory im home-Verzeichnis hat?
Dann kann man ja noch nicht einmal ein cd verwenden um es zubetreten....

msi
26.06.03, 16:58
wenn du nicht willst, dass die user eigene programme ausführen dürfen:
grsecurity kernel patch.

Insbesonder rbash halte ich nicht für sehr sicher, da jedes sicherheitsloch in jedem programm, dass der user hat ausgenützt werden kann um alle programme zu benutzen.
Außerdem können bei rbash auch Programme wie man, vim und viele andere editoren dazu benutzt werden auszubrechen.

Elegua
26.06.03, 17:11
Original geschrieben von msi
wenn du nicht willst, dass die user eigene programme ausführen dürfen:
grsecurity kernel patch.

Außerdem können bei rbash auch Programme wie man, vim und viele andere editoren dazu benutzt werden auszubrechen.

Da frage ich doch einmal Google. :)

Aber wenn man man und vim nicht erlaubt würde es mir ja schon auch schon reichen.
Nicht möchte ja nur etwas ls, cd, chmod und pwd gewären...