SSH Login in einen "Käfig"

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

SSH Login in einen "Käfig"

Beitrag von McAldo » 09.08.2005 11:22:33

Hallo

Ich habe nun schon verschiedenes darüber gefunden, aber nichts was mir im Moment wirklich hilft. Vielleicht fehlt auch noch das richtige Verständnis. Zu meinem Anliegen:
Ich möchte auf einem System einen User anlegen, welcher als einziger per SSH sich einloggen kann. Dieser User soll dann in einem "Käfig" landen, also einen Verzeichnis aus welchem er nicht mehr heraus kann ( kein ls -l / ) und er soll auch möglichst wenig bis kein Befehle ausführen können.
Einzigst per su soll er dann zu root werden können, oder per ssh auf einen anderen Rechner im Netzwerk.
Ich habe was von restricted shell gelesen, aber die scheint dafür nicht weit genug zu gehen. Gibts noch andere Möglichkeiten?

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
bluestar
Beiträge: 2419
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Beitrag von bluestar » 09.08.2005 11:53:56

Das müsste über eine restricted bash (bash -r | rbash) gehen.

man rbash

Meine Idee wäre:
1. Setz die shell von dem User auf /bin/rbash
2. Leg im Home eine .bashrc an: PATH=~/bin:
3. Entzieh dem user schreibrechte auf seine .bashrc (chown root.root .bashrc)
4. Mkdir /home/username/bin
5. ln -s /usr/bin/ssh /home/username/bin/ssh
6. ln -s /bin/su /home/username/bin/su

Gruß
Jens
Zuletzt geändert von bluestar am 09.08.2005 12:15:29, insgesamt 1-mal geändert.

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 09.08.2005 12:14:43

main rbash
:?: du meintest wohl

Code: Alles auswählen

man rbash
das erinnert mich an eine deutsche Übersetzung einer schlechten Dokumentation, die ich mal gelesen habe *G*

ich habe mal von einer chroot shell gelesen.

Benutzeravatar
bluestar
Beiträge: 2419
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Beitrag von bluestar » 09.08.2005 12:17:44

HELLinG3R hat geschrieben:
main rbash
:?: du meintest wohl

Code: Alles auswählen

man rbash
100% ack! Das war kein Bug, sondern ein Feature!
HELLinG3R hat geschrieben: das erinnert mich an eine deutsche Übersetzung einer schlechten Dokumentation, die ich mal gelesen habe *G*
Hey!
HELLinG3R hat geschrieben: ich habe mal von einer chroot shell gelesen.
Das geht auch, aber rbash ist einfacher und geht schneller.

Gruß
Jens

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 09.08.2005 13:30:03

Danke erstmal für die Antworten. Werde das mal testen. Das mit der chroot shell habe ich auch gelesen, aber kommt man das mit su wieder raus?

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 09.08.2005 14:01:47

Ok, habe nun getestet.

Der ist auch auf der Kommandozeile schön in dem Verzeichnis gefangen. :)
Aber wenn ich den mc benutze, kann ich trotzdem nach / wechseln.
Kann man da irgendwie festlegen, welche Programme ausgeführt werden dürfen?

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
bluestar
Beiträge: 2419
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Beitrag von bluestar » 09.08.2005 23:03:04

McAldo hat geschrieben:Ok, habe nun getestet.
Kann man da irgendwie festlegen, welche Programme ausgeführt werden dürfen?
Hatte ich dir doch genau beschrieben, das du für den User ein eigens bin Verzeichnis anlegst, wo halt kein mc drin ist.

Gruß
Jens

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 10.08.2005 08:11:35

ist das nicht bisschen - blöd - wenn der user ein eigenes bin hat?
kann er doch ausführen was er will - ein nettes rootkit zb.

das ist nicht so einfach möglich, wenn der user nur auf die /bin binarys zugreifen kann.
Oder habe ich da jetzt irgendwo nen Denkfehler?

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 10.08.2005 08:26:38

Ich hab das mal von Netzwerk verschoben.

Bert

Zum Thema:
Hab mich zwar selbst noch nicht damit beschäftigt, aber Du brauchst ihm ja keine Schreibrechte auf sein /bin geben. Wenn Du dann noch verhinderst, ds er hochgeladenene Dateien ausführbar machen kann, ist die Meßlatte schon mal ein Stück höher gelegt ;-)


Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 10.08.2005 08:38:14

naja, auif seinem homedir sollte er schreibrechte haben, damit sollte er auch die inodes unter kontrolle haben.
Damit sollte er das /bin löschen und mit seinem Inhalt neu anlegen können...

hm, ausser natürlich, er hat kein chmod und kein rm in seinem privaten bin.
was aber blöd ist, weil er dann keine Kontrolle über seine Daten hat.

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 10.08.2005 10:33:42

Also in dem Homeverzeichnis ist ein bin-Verzeichnis. Die Daten gehören auch alle root. Recht sind nur so gesetzt, dass er lesend Zugreifen kann.
Die .bachrc habe ich auch nur mit PATH=~/bin gefüllt.

Der Nutzer brauch keinen Schreibzugriff, da es sich nur um einen Dummy-User handelt, mit dem der SSH-Zugriff aus dem Internet gemacht werden soll. Falls da doch mal jemand rein kommt, soll es weitere Schwierigkeiten auf dem Weg ins interne Netz geben. :)
Hm..., ich habe das nur lokal auf meinem Arbeitsrechner getestet, da standen noch alle Pfade in PATH. Aber das liegt an der angepassten /etc/bashrc.
Ich werde das also mal auf dem betreffenden Server testen und dann weiter berichten.

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 17.08.2005 22:33:56

So, habe das nun so eingereichtet.

/home/user <--- root:root Rechte: 0555
/home/user/bin <--- root:root Rechte: 0555
/home/.bashrc <--- root:root Rechte: 0444 Inhalt: PATH=bin
ln -s /bin/su /home/user/bin/su

Mit einem cd .. kommt der User nicht aus dem Verzeichnis raus. Aber so bleibt die von /etc/bashrc mitgegebenen PATH-Einträge erhalten. Damit konnte der user ein installiertes mc aufrufen und darüber sein Home-Verzeichnis verlassen.
Abhilfe bringt dafür folgendes:

ln -s ~/.profile ~/.bashrc
ln -s ~/.bash_login ~/.bashrc

Damit wird die PATH-Variable sicher überschrieben.

Drückt man nun 2x TAB, so werden einem die möglichen Befehle angezeigt.
Aber:

Code: Alles auswählen

# date
-rbash: date: command not found
Es ist also ein Ausführen so nicht gestattet. Der user kann auch mit ls nicht in sein Verzeichnis schauen.
Allerings kann er mit

Code: Alles auswählen

echo $PATH
den Inhalt dieser Variable anschauen.

Ist es möglich, dieses echo zu sperren und zu verhindern, dass mit TAB die möglichen Befehle angezeigt werden?

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 18.08.2005 09:28:03

echo: weis ich nicht, ist aberr ein bashfeature, soweit ich weis.
versuche, einen alias für Echo in der bashrc zu setzen, sodass anstelle von echo etwas anderes (zb /bin/true) ausgeführt wird.

Tab kannst du nicht sperren, afaik, aber du könntest die bash-completion abstellen.

[edit] das ist allerdings "security by obscurity" und daher kein gewinn an Sicherheit. wenn du die Ausführung bestimmter Befehle verhindern möchtest, solltest du das anderswo anpacken.

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Beitrag von dominator » 18.08.2005 20:13:23

Ich weiss nicht, ob es ein bisschen OT ist, aber einen ähnlichen Ansatz verfolgt das Tool "scponly" :idea:

Vielleicht lässt sich ja da, dass ein oder andere nutzen/abschauen 8)
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Beitrag von dominator » 18.08.2005 20:25:56

Nochmal ich :p

Hab mich an einen Artikel aus dem Linux Magazin erinnert, guckstu hier :
http://www.linux-magazin.de/Artikel/aus ... h/ssh.html

8)
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 10.09.2006 10:50:00

Hab nun eine solche Umgebung eingerichtet und das gleich mal im Wiki festgehalten. Ist noch nicht fertig ausgebaut, aber es läuft. :-)

http://wiki.debianforum.de/SshLoginInKaefig

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Beitrag von McAldo » 21.09.2006 21:56:48

Mal noch ein Nachtrag, da mir von einem Forummitglied eine Frage gestellt wurde:
Hi,

ich bin grade über Deinen Artikel im DF-Wiki gestoßen.
Gibt es einen Thread dazu?

Ich habe es zwar nicht ausprobiert, aber wenn ich mich auf dem Server
dann einlogge, kann ich doch dennoch beliebe Kommandos wie
/bin/ls /
ausführen, oder?


Zudem finde ich, ein Hinweis auf die Dokumentation von sshd_config
hätte gereicht, alle Optionen aufzulisten stört irgendwie nur den
gewöhnlichen Lesefluss.
- Just my two cents ;-).
Ich habe das nun gestete:

Code: Alles auswählen

dummy@debian> /bin/ls /
-rbash: /bin/ls: restricted: cannot specify `/' in command names
Wie man sieht, klappt das auch nicht. :-)

Die Optionen von SSH habe ich, neben dem Link, mit in den Beitrag genommen, weil es passieren kann, dass diese Seite offline geht und dann die super Übersicht nicht mehr erreichbar ist.

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Antworten