SSH Login in einen "Käfig"
- 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"
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
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)
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)
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
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.
du meintest wohlmain rbash
Code: Alles auswählen
man rbash
ich habe mal von einer chroot shell gelesen.
100% ack! Das war kein Bug, sondern ein Feature!HELLinG3R hat geschrieben:du meintest wohlmain rbashCode: Alles auswählen
man rbash
Hey!HELLinG3R hat geschrieben: das erinnert mich an eine deutsche Übersetzung einer schlechten Dokumentation, die ich mal gelesen habe *G*
Das geht auch, aber rbash ist einfacher und geht schneller.HELLinG3R hat geschrieben: ich habe mal von einer chroot shell gelesen.
Gruß
Jens
- 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
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
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)
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)
- 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
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
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)
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)
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
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
xmpp:bert@debianforum.de
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.
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.
- 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
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
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)
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)
- 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
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:
Es ist also ein Ausführen so nicht gestattet. Der user kann auch mit ls nicht in sein Verzeichnis schauen.
Allerings kann er mit 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
/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
Allerings kann er mit
Code: Alles auswählen
echo $PATH
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)
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)
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.
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.
- dominator
- Beiträge: 790
- Registriert: 26.08.2003 10:05:37
- Wohnort: Neuerdings meistens im Bierparadies Oberfranken
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
Hab mich an einen Artikel aus dem Linux Magazin erinnert, guckstu hier :
http://www.linux-magazin.de/Artikel/aus ... h/ssh.html
gruss + viel erfolg
Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit
Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit
- 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
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
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)
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)
- 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
Mal noch ein Nachtrag, da mir von einem Forummitglied eine Frage gestellt wurde:
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
Ich habe das nun gestete: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 .
Code: Alles auswählen
dummy@debian> /bin/ls /
-rbash: /bin/ls: restricted: cannot specify `/' in command names
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)
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)