113 votes

Autoriser SFTP mais interdire SSH ?

Je lance une toute petite société d'hébergement pour quelques amis et petits clients, rien d'important.

Je veux donner à mes "clients" le droit de gérer leurs fichiers sur le serveur. Je déteste le FTP car il n'est pas sécurisé et il est à mon avis obsolète.

J'aimerais donc permettre à mes utilisateurs de se connecter via SFTP mais ne pas leur permettre de se connecter via SSH. (Je sais, je sais, SFTP utilise SSH). Mais je me demandais juste si c'était possible ?

Ainsi, je n'aurais pas à installer un service FTP sur le serveur et tout serait génial !

151voto

Rob Wouters Points 1879

À partir de la version 4.9, OpenSSH (non disponible dans centos 5.x mais la fonctionnalité ChrootDirectory a été rétroportée) possède une fonction internal-sftp sous-système :

Subsystem sftp internal-sftp

Et ensuite bloquer les autres utilisations :

Match group sftponly
     ChrootDirectory /upload/%u
     X11Forwarding no
     AllowTcpForwarding no
     AllowAgentForwarding no
     ForceCommand internal-sftp

Ajoutez vos utilisateurs à la liste sftponly groupe. Le répertoire chroot doit être possédé par root, et ne peut pas être écrit par le groupe, donc créez un sous-répertoire pour chaque utilisateur, e.g. uploads ou home/$username qui appartient à l'utilisateur approprié (si vous faites correspondre son répertoire personnel, il sera le répertoire de travail par défaut lors de la connexion). Je définirais également /bin/false comme le Shell de l'utilisateur.

Par exemple, les utilisateurs peuvent alors télécharger des fichiers uniques avec :

sftp username@hostname <<< 'put filename.ext uploads/'

(avec un peu de chance, scp sera bientôt modifié pour utiliser sftp, ce qui rendra les choses plus faciles).

22voto

Stone Points 6841

Il existe un Shell. scponly ce qui fait cela. Il peut chroot aussi.

4voto

Chris Points 597

Vérifiez rssh qui est un faux Shell qui autorise sftp mais refuse ssh.

En savoir plus sur RSSH

http://www.pizzashack.org/rssh/

RPMs

http://pkgs.repoforge.org/rssh/

Vous pouvez configurer rssh pour autoriser ou refuser différents comportements comme sft, scp, etc.

0voto

denpick Points 11

J'utilise la méthode consistant à spécifier l'utilisateur Shell comme /bin/false comme mentionné. Cependant, vous devez vous assurer que /bin/Shell est dans /etc/shells. Ensuite, cela fonctionne ssh=no ftp=ok.

J'utilise aussi vsftpd et j'ajoute ceci
chroot_local_user=YES à /etc/vsftpd/vsftpd.conf afin que les ftp-ers ne puissent pas voir de date autre que la leur.

L'avantage de ces simples changements est qu'il n'y a pas de configuration ennuyeuse pour configurer ssh pour chaque utilisateur.

0voto

Joshmaker Points 964

Configurer ssh pour activer uniquement sftp pour certains utilisateurs sélectionnés est une bonne idée et cela fonctionne correctement, à condition que vous installiez l'une des deux options suivantes scponly ou rssh .

rssh fonctionne bien, sauf si vous avez besoin de configurer la prison, dans ce cas, essayer de suivre les instructions fournies par les manuels de CHROOT est fou, conduisant à "copier" de grandes parties des exécutables du système et de la bibliothèque juste en dessous de "chaque prison d'utilisateur", y compris rssh Shell lui-même. C'est une méthode qui fait perdre de l'espace.

scponly nécessite une connaissance approfondie de la configuration, ce qui entraîne un problème permanent de refus de connexion en cas de configuration de la prison.

La façon la plus simple d'autoriser les fonctionnalités "ftp" avec un support SSL/TLS fonctionnant correctement pour des transactions et une connexion sécurisées est d'utiliser un VSFTPD "vieux mais qui fonctionne", qui s'installe rapidement et proprement et offre toutes les possibilités de configuration nécessaires et, last but not least : il fonctionne !

Maurizio.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X