J'utilise Debian stable et je cherche à établir l'environnement suivant pour les utilisateurs de mon groupe 'sftponly':
- emprisonné
- peut transférer avec SFTP
- peut transférer avec SCP
- ne peut pas se connecter de manière interactive avec SSH
D'après mes expérimentations et mes recherches, il semble que la strophe suivante dans sshd_config m'atteigne à 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Cela me donne SFTP emprisonné et pas de SSH, ce qui est bien. Mais cela désactive également SCP, ce qui est loin d'être idéal car bon nombre de clients sont des processus scriptés hérités qui utilisent SCP plutôt que SFTP (le serveur que nous remplaçons pris en charge les deux protocoles), et puisque ces clients ne sont pas sous notre contrôle et facilement modifié, il n'est probablement pas pratique de désactiver complètement SCP.
Il est logique que cette configuration désactive SCP, car les connexions SCP entrantes font que sshd génère un processus `scp 'via le shell de connexion de l'utilisateur, en tant que cet utilisateur. Il semble que la même chose serait normalement vraie pour SFTP, sans le gestionnaire spécial «internal-sftp».
Donc, je suppose que ma question est: existe-t-il un moyen d'obtenir le même effet que 'internal-sftp' mais pour SCP, sans recourir à l'utilisation d'outils tiers comme scponly et rssh? Ce qui est vraiment bien avec 'internal-sftp', c'est qu'il ne nécessite pas de mettre en place une prison avec des fichiers de support, ni de traiter des binaires setuid tiers potentiellement exploitables (rssh, en particulier, a un historique d'exploits).
Réponses:
Jetez un œil à rssh qui est un shell alternatif qui permet un accès limité à un système.
Vous pouvez configurer les commandes pouvant être utilisées par utilisateur ou à l'échelle du système à l'aide du fichier rssh.conf
Alternativement, vous pouvez utiliser scponly pour faire ce que vous voulez. Il agit comme un wrapper pour la suite ssh et permet le transfert de fichiers mais pas l'accès au shell.
la source
Avez-vous besoin de le faire via ssh?
SI vous pouvez donc essayer de définir leur shell sur:
Et assurez-vous d'ajouter ce qui précède dans / etc / shells
Si vous souhaitez dissocier l'utilisation des comptes intégrés, vous pouvez configurer proftpd
J'ai installé un SFTP sécurisé en utilisant proftpd. proftpd compilé comme suit:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Vous pouvez utiliser cet article ci-dessous, et plus sur Google pour savoir comment le configurer:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
la source
Je crains qu'il n'y ait rien de similaire ni de facile ni de fiable avec OpenSSH, car comme vous l'avez observé, il y a un serveur SFTP intégré, mais pas de serveur SCP intégré.
Un avertissement: la suggestion de Vince Berk est mauvaise pour plusieurs raisons:
... etc. Ce type d'approche est tout simplement trop fragile.
la source
Il s'agit d'un outil tiers, qui n'entre pas dans le cadre de la question, mais j'ai pensé qu'il méritait quand même une mention.
Jailkit: https://olivier.sessink.nl/jailkit/
Il dispose d'une collection d'outils pour faciliter la configuration des prisons utilisateur: copie des fichiers binaires et des bibliothèques dans la prison et configuration de la journalisation de l'intérieur de la prison vers le système d'exploitation. Je l'ai utilisé pour construire des chroots sftp / scp / rsync uniquement.
Il est également livré avec
jk_lsh
(shell limité jailkit) qui peut être utilisé en dehors de la prison pour limiter les commandes qu'un utilisateur peut exécuter, si par exemple vous voulez autoriser scp / sftp / rsync uniquement sans chroot.la source
Voici une astuce sur la façon d'effectuer ce côté serveur. Définissez le shell des utilisateurs, disons, bash:
Créez maintenant dans leur homedir un '.bash_profile' avec la ligne suivante:
Cela entraîne la poursuite des sessions non interactives (comme «scp»). Cependant, s'ils tentent une connexion «ssh», la «sortie» est appelée et la connexion est fermée.
Assurez-vous qu'ils ne peuvent pas «sftp» un nouveau «.bash_profile» dans leurs répertoires personnels!
J'espère que cela pourra aider!
la source