2010-11-25 13 views
3

J'ai donc travaillé dessus pendant un certain temps. Je voudrais savoir s'il y a un meilleur moyen ou si je suis sur la bonne voie.Limite SSH - bash sans commandes

J'aimerais fondamentalement permettre à certains utilisateurs de se connecter à mon serveur via SSH, puis avoir un tunnel de squid via cette connexion SSH.

La partie délicate est cependant que je ne veux pas que ces utilisateurs puissent exécuter de commande. Je ne veux rien du tout.

Donc, à ce stade, j'ai installé une prison via - jailkit. L'utilisateur spécifique est alors placé dans la prison et reçoit le shell bash en tant que shell. L'étape suivante consisterait à supprimer toutes les commandes des répertoires/jail/bin/etc afin qu'elles ne puissent exécuter aucune commande.

Suis-je sur la bonne voie ici? Que suggérerais-tu?

aussi ... Je vois que cela leur donnera beaucoup commande erreurs ne se trouvent pas ... Comment puis-je supprimer.

est-il un autre shell que je pouvais regarder leur donner qui ne les laissera pas faire quoi que ce soit?

Répondre

2

Vous pouvez définir leur shell sur quelque chose comme/bin/true, ou peut-être un simple script qui affichera un message d'information, puis les connecter en utilisant ssh -N (voir la page de manuel ssh). Je crois que cela leur permet d'utiliser portforwarding sans avoir un shell d'actuall sur le système.

EDIT:

L'équivalent de N ssh dans PuTTY est cochant la case "Ne pas lancer un shell ou la commande du tout" case à cocher dans l'onglet de configuration SSH (connection-> SSH).

EDIT2:

Comme alternative à cela, vous pouvez utiliser un script qui entre dans une boucle infinie de sommeil. Jusqu'à ce qu'il soit interrompu en utilisant Ctrl-C, la connexion restera active. Je viens d'essayer ceci:

#!/bin/sh 

echo "DNSH: Do-Nothing Shell" 

while sleep 3600; do :; done 

Si vous utilisez cela comme une coquille (avec un message de préférence plus utile) vos utilisateurs seront en mesure d'utiliser le port-forwarding sans coquille réelle et sans avoir à connaître ssh -N et amis.

+0

Ils pourraient toujours utiliser 'ssh -t $ host/bin/sh' pour obtenir un shell quel qu'il soit. – ephemient

+0

Comment pourrais-je utiliser un script qui entre dans une boucle de sommeil infinie ?? – David

+0

@ephemient: ssh -t ne semble pas fonctionner de cette façon sur mon système. – thkala