PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSHd in chroot



tobip
15.01.04, 09:59
Hi,

ich habe ein Buchhaltungsprogramm, das auf Linux läuft... meine User loggen sich über ssh auf dem server ein und arbeiten direkt über ssh.
gibt es eine Möglichkeit diese user im Programmpfad zu fangen (z.B. mit chroot), daß sie nicht mehr im system "rumschnüffeln" können?

lg

dilindam
15.01.04, 10:09
Hallo

ich hab mal nur auf schnelle geschaut.
Mich interessieren auch noch weitere Möglichkeiten

eine wäre in der bash_profile, da steht was drin:

if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
fi

Und da legst Du dem Nutzer die Programme rein die er ausführen darf.

Die andern sperrst Du dann.

Ist wie geasgt eine Möglichkeit. Ob es die beste ist weiß ich jetzt nicht.

MfG Torsten

tobip
15.01.04, 11:19
erweitere damit nicht nur dem user die Path variable ?

mit cd .. bzw. cd / kommt er aber nach wie vor in die Root!
ich möchte bewirken, daß der User mit cd / eingentlich nur ins /home/user kommt und nicht weiter ...

lg

dilindam
15.01.04, 11:31
Nun ja wie gesagt,

ist ne Möglichkeit von vielen und wahrscheinlich nicht die eleganteste.
Denn Du müßtest dem User alle Rechte aus /usr/bin nehmen.

cd ist auch bloß ein Programm. Hab ich gedacht.
Habe gerade mal danach gesucht. Ist nicht zu finden.

Ja wäre nett wenn uns mal einer weiter helfen kann.

MfG Torsten

mbo
15.01.04, 12:13
Diesbezüglich benutze ich die rssh (siehe sourceforge.net). in der dokumentation steht alles fast sehr gut beschrieben.

Noch schöner ist, wenn man den 443 frei hat und da einen 2. sshd laufen läßt, dann geht es auch über proxy.
Obwohl die rssh die Optionen hat den Leuten ssh und / oder scp und / oder sftp zur Verfügung zu stellen, mag er die Einteilung scp und sftp ohne ssh nicht wirklich.
Die Chroot mußt Du natürlich nachbasteln, nur das Du die Systemchroot nicht brauchst, und den Leuten die rssh als LoginShell gibst.

unsagbar kostbarer Tip: die rssh gehört natürlich auch in die chhrootverzeichnisse ;)

cu/2 iae

tobip
15.01.04, 14:09
würde da nicht was einfacheres funktionieren, indem ich z.B. /bin/bash ins userverzeichniss kopiere und automatisch beim einloggen ein script starten lasse das mir die Bash chrooted vom userverzeichniss startet oder so änlich ?

tobip
15.01.04, 14:13
habs jetzt auch probiert (die bash ins User-Verzeichniss zu kopieren!)

wenn ich direkt /~/bin/bash starte funktionierts (nur eben ohne Jail)
aber wenn ich chroot /~ /~/bin/bash starte bekomme ich immer folgenden Fehler:
chroot: /bin/bash: No such file or directory

mbo
15.01.04, 14:27
Original geschrieben von tobip

/~/bin/bash starte funktionierts


Das ist auch kein chroot ;)



wenn ich chroot /~ /~/bin/bash starte bekomme ich immer folgenden Fehler:
chroot: /bin/bash: No such file or directory



Das wäre ohl auch zu einfach, oder?
Versuche es mal mit einem strace zu verfolgen, was Du da tust. Das was da fehlschlägt, wird sich sehr auffällig bemerkbar machen. Aber ganz doof gefragt: Was machen User die nur die bash haben? Dürfte langweilig werden. ;)

Eine chroot besteht nicht nur aus chroot und binary und vor allem ist ein exit sehr mächtig ...

cu/2 iae

Doh!
15.01.04, 14:44
aus man sshd:



$HOME/.ssh/rc
If this file exists, it is run with /bin/sh after reading the
environment files but before starting the user's shell or com_
mand. It must not produce any output on stdout; stderr must be
used instead. If X11 forwarding is in use, it will receive the
"proto cookie" pair in its standard input (and DISPLAY in its
environment). The script must call xauth(1) because sshd will
not run xauth automatically to add X11 cookies.

The primary purpose of this file is to run any initialization
routines which may be needed before the user's home directory
becomes accessible; AFS is a particular example of such an envi_
ronment.

This file will probably contain some initialization code followed
by something similar to:

if read proto cookie && [ -n "$DISPLAY" ]; then
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
# X11UseLocalhost=yes
echo add unix:`echo $DISPLAY |
cut -c11-` $proto $cookie
else
# X11UseLocalhost=no
echo add $DISPLAY $proto $cookie
fi | xauth -q -
fi

If this file does not exist, /etc/ssh/sshrc is run, and if that
does not exist either, xauth is used to add the cookie.

This file should be writable only by the user, and need not be
readable by anyone else.

/etc/ssh/sshrc
Like $HOME/.ssh/rc. This can be used to specify machine-specific
login-time initializations globally. This file should be
writable only by root, and should be world-readable.


Du kannst also userspezifische files anlegen, die dann ausgeführt werden (und da kannst Du dann Dein chroot eintragen - die Dateie musst Du natürlich vor dem user Schützen, wenn diese Datei in der chroot-Umgebung des users liegt), oder Maschinenspezifisch, wenn für alle user dasselbe gelten soll. Teste es aber mal aus, nicht das der user die chroot dann mit einem "exit" verlassen darf.

Doh!
15.01.04, 14:46
Original geschrieben von tobip
habs jetzt auch probiert (die bash ins User-Verzeichniss zu kopieren!)

wenn ich direkt /~/bin/bash starte funktionierts (nur eben ohne Jail)
aber wenn ich chroot /~ /~/bin/bash starte bekomme ich immer folgenden Fehler:
chroot: /bin/bash: No such file or directory

mach doch mal man chroot, dann siehste Deinen Fehler