nur irssi und screen

gemini

Well-Known Member
hi, würde für nen freund auf meiner kiste gerne einen account anlegen.

er soll sich per ssh connecten können, darf aber nur screen und irssi aufrufen und er sollte auch kein verzeichnis wechseln dürfen, also nur home.

kann mir jemand sagen, wie ich das ambesten lösen kann ?
 
Andere Idee, nen jail einrichten, alles löschen was unötig ist und du hast noch per ipfw kontrolle über den Trafik.

Gruß paefchen
 
also wie du siehst habe ich schon probs einen eingeschränkten user an zu legen, jetzt das ganze per jail zu machen ohoh :)

hmm, schade, dachte da gäbe es eine einfach möglichkeit irgendwo in einer config zu sagen, der user darf nur home und die zwei programme.
 
...man kann in openssh einem Benutzer nur ausgesuchte Kommandos erlauben. In deinem Fall screen und irssi.
 
Hmmmm, ich wuerde damit anfangen, ihm eine Shell zu verpassen, welche erstmal nur 'screen -RD' aufruft. Desweiteren muss screen so eingestellt sein, dass es als "shell" dann nicht wieder sich selbst, sondern irssi startet. Das hindert ihn dann aber erstmal nicht daran, bel. oft irssi zu starten. Ob man da screen passend einschraenken kann weiss ich gerade nicht.
 
wenn ich jetzt openssh installiere, peilt das bsd das da schon ein sshd läuft ? net das ich dann zwei habe und garnet mehr auf das system komme, das wäre ganz schön doof :)
 
Zuletzt bearbeitet:
also openssh läuft jetzt, aber wo oder wie kann ich jetzt einen benutzer anlegen der nur irssi und screen ausführen darf ?
 
Ssh Server, Limit what commands will work...

In the ".ssh/authorized_keys" file you can define a key as

command="/path/to/some/command args..." 1024 37 105798033.....

This will force ssh to only execute the command that was given, and NOT the
command (like a loging shell) requested by the client.

Example commands...
/usr/bin/cvs server only allow cvs upload/download
/usr/bin/ssh user@host always forward user to another host

When using a ssh authorized_keys "command", sshd puts the original command
including all parameters into the environment variable SSH_ORIGINAL_COMMAND.
You can make the "forced_command" be a shell script that parses it before
doing anything which could be `illegal'.

This is in an obscure place in the ssh version 1 documentation, in the
"ENVIRONMENT" section of the ssh.1 man page.

Examples:
* Limit remote commands to specific ones
* Parse rsync requests for `funny business and/or source
* Record what commands are being requested for remote execution.
 
Habe jetzt im /home/user123/ einen Ordner .ssh erstellt, darin eine Datei namens
Code:
authorized_keys
angelegt. In die Datei habe ich nun folgendes hinengeschrieben:
Code:
command="/usr/local/bin/irssi"
command="/usr/local/bin/screen"

Wenn ich mich jetzt als user123 anmelde, kann ich trotzdem querbeet alle Befehle ausführen.
 
command="/path/to/some/command args..." 1024 37 105798033..... < da muß der öffentliche schlüssel des users rein!

Beispiel:

command="/bin/sh" ssh-rsa AAAB4NzKC1y...7YJ4u8W/s2sEFDDKLPdehND6wslMphk= uwerler@bla.com
 
muss ich den schlüssel ersteinmal anlegen oder wird er beim anlegen des users irgendwo hinterlegt ?
 
...falls du mehrere befehle zulassen willst, dann schreibe am besten einen kleinen wrapper wie den hier:

Code:
8.2.4.3 Ausgabe eines Befehls-Menüs
Stellen Sie sich vor, Sie möchten jemandem einen eingeschränkten Zugang zu Ihrem
Account gewähren, bei dem ein eingehender SSH-Client einige wenige Programme verwenden
darf. Erzwungene Befehle machen das möglich. Zum Beispiel könnten Sie ein
Shellskript schreiben, das die Ausführung einer festgelegten Gruppe von Programmen
ermöglicht, und dieses Skript dann als erzwungenen Befehl ausführen. Ein Beispiel-
Skript wie in Beispiel 8-1 erlaubt nur die Ausführung von drei Programmen, die aus
einem Menü gewählt werden können.
Beispiel 8-1: Menü-Skript
#!/bin/sh
/bin/echo "Willkommen!
Zur Auswahl stehen:
1 Aktuelles Datum setzen
2 Liste eingeloggter Benutzer
3 Liste aktueller Prozesse
q Beenden"
/bin/echo "Ihre Wahl: \c"
read ans
while [ "$ans" != "q" ]
do
case "$ans" in
1)
/bin/date
;;
2)
/bin/who
;;
3)
/usr/ucb/w
;;
q)
/bin/echo "Auf Wiedersehen"
exit 0
;;
*)
/bin/echo "Ungültige Wahl ’$ans’: versuchen Sie es erneut"
;;
esac
/bin/echo "Ihre Wahl: \c"
read ans
done
exit 0
Kapitel 8: Account-orientierte Serverkonfiguration
322
Sobald jemand über einen öffentlichen Schlüssel auf Ihren Account zugreift und den
erzwungenen Befehl aufruft, gibt das Skript folgendes aus:
Willkommen!
Zur Wahl stehen:
1 Aktuelles Datum setzen
2 Liste eingeloggter Benutzer
3 Liste aktueller Prozesse
q Beenden
Ihre Wahl:
Der Benutzer kann nun 1, 2, 3 oder q eingeben und die entsprechenden Programme
ausführen. Alle anderen Eingaben werden ignoriert, so daß keine anderen Programme
ausgeführt werden können.
Solche Skripten müssen sorgfältig entwickelt werden, um Sicherheitslöcher zu vermeiden.
Insbesondere sollte keines der gewünschten Programme eine Möglichkeit bieten,
die Shell aufzurufen, weil sonst jeder Befehl in Ihrem Account ausgeführt werden kann.

das beispiel stammt aus dem buch "ssh - secure shell" von barrett, daniel und silverman, richard
 
wenn du unter windoof putty nimmst, dann kannst du mit puttygen einen schlüssel generieren. arbeitest du unter unix/cygwin, dann kannst du ssh-keygen nehmen. schau' dir mal die manpage an.
 
gemini schrieb:
Wenn ich mich jetzt als user123 anmelde, kann ich trotzdem querbeet alle Befehle ausführen.
Das koenntest du auch, wenn du es richtig gemacht haettest. Mit irssi kann man immernoch beliebige Befehle per /exec ausfuehren.
Ich an deiner Stelle wuerde ne Jail bauen und mir dann keine Sorgen mehr machen. ;)
 
Zurück
Oben