1 votes

Quelles sont les règles pour les utilisateurs SFTP ?

J'ai un serveur FTP qui s'authentifie via une API et qui contient des dossiers d'utilisateurs :

/home/ftpusers/files/<username>

Certains utilisateurs ont demandé un accès SFTP à la place et comme j'ai déjà mis en place des processus pour placer les fichiers dans le répertoire de l'utilisateur, je me suis dit que je pouvais simplement créer des comptes pour les utilisateurs.

useradd -g sftpgroup -d /home/ftpusers/files/username/ -s /sbin/nologin username
mkdir -p /home/ftpusers/files/username/.ssh
chown -R username:ftpgroup /home/ftpusers/files/username
chmod -R 770 /home/ftpusers/files/username
echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys
chown username:sftpgroup /home/ftpusers/files/username/.ssh
chmod 700 /home/ftpusers/files/username/.ssh
chown username:sftpgroup /home/ftpusers/files/username/.ssh/authorized_keys
chmod 600 /home/ftpusers/files/username/.ssh/authorized_keys

le groupe ftpg permet à un compte système de placer des fichiers dans le dossier de l'utilisateur. le groupe sftpg permet de verrouiller cet utilisateur pour qu'il n'utilise que le SFTP :

Match Group sftpgroup
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

Malheureusement, cela ne fonctionne pas. Pas d'erreur utile, juste :

Permission denied (publickey)

Cela fonctionne bien si je crée un utilisateur d'une manière plus standard dans le répertoire /home/.

Une idée de la raison ? Je sais que chroot a beaucoup de restrictions de permission. Est-ce que c'est quelque chose comme ça ?

Ajout de la sortie namei : Bien sûr :

namei -l /home/ftpusers/files/jmandel/.ssh
f: /home/ftpusers/files/jmandel/.ssh
dr-xr-xr-x root    root      /
drwxr-xr-x root    root      home
drwxrwx--- ftpuser ftpgroup  ftpusers
drwxrwx--- ftpuser ftpgroup  files
drwxrwx--- jmandel ftpgroup  jmandel
drwx------ jmandel sftpgroup .ssh

La réponse marquée ci-dessous contient de bonnes informations dans le fil de commentaires.

1voto

Alex Points 6039

Ajoutez à votre sshd_config suivant la directive et redémarrer ssh :

AuthorizedKeysFile /home/ftpusers/files/%u/.ssh/authorized_keys .ssh/authorized_keys

Ceci indiquera au démon ssh où chercher les clés publiques.

Personnellement, je n'utilise pas authorized_keys depuis longtemps, mais en utilisant plutôt
AuthorizedKeysCommand où j'appelle mon programme qui cherche dans la base de données sqlite la clé de l'utilisateur et la renvoie pour authentification. De cette façon, j'empêche les utilisateurs/pirates d'utiliser leurs propres clés et cette configuration ne révèle pas l'endroit où se trouvent les clés publiques.

0voto

xenoid Points 9208

Est-ce que c'est vraiment

echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys

authorized_keys contient la clé publique des personnes autorisées à se connecter sous cet identifiant, elle est donc différente pour chaque identifiant que vous créez. En théorie, les utilisateurs génèrent leur propre paire de clés publiques/privées et vous donnent la clé publique. Vous pouvez bien sûr générer la paire vous-même et leur donner la partie privée, mais si quelque chose de mal se produit, ils peuvent prétendre que cela a été fait par quelqu'un d'autre en utilisant leur clé privée.

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