Outils pour utilisateurs

Outils du site


sftp

Ceci est une ancienne révision du document !


Serveur de fichier sécurisé avec SSH, SFTP et SSHFS

Cette page explique comment configurer un serveur de fichier simple, léger et sécurisé en utilisant SSH, SFTP et SSHFS. Le serveur ainsi configuré :

  • sera accessible via SFTP (SSH)
  • utilisera des connexions chiffrées
  • sera capable d'authentifier un utilisateur avec clé publique
  • chrootera cet utilisateur dans son home
  • interdira l'accès au shell à cet utilisateur
  • sera montable dans arborescence sous Linux et comme disque réseau sous Windows

L'installation se décompose en deux parties principales : l'installation du serveur et l'installation du client

Serveur

Installation

Sur le serveur le seul programme utilisé est OpenSSH qui est installé sur beaucoup de distributions en standard.

Ajout du groupe sftpusers

Tous les utilisateurs qui seront membres du groupe sftpusers seront automatiquement restreints à l'utilisation de sftp lors de leur connexion. groupadd sftpusers

Configuration du daemon SSH

Ajoutez au fichier /etc/ssh/sshd_config :

# Chroot for sftpusers members
Match Group sftpusers
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no

Note : AllowUser et DenyUser sont toujours effectifs, n'oublier pas d'autoriser vos futurs utilisateurs si besoin est.

Création d'un utilisateur

Il faut maintenant créer un utilisateur qui ne pourra qu'accéder à son répertoire en SFTP. Pour cela il faut qu'il soit membre de sftpusers, qu'il ait un homedir et qu'il n'ait pas de shell. Cet utilisateur s'appellera toto.

mkdir /home/toto
chown root:root: /home/toto
chmot 755 /home/toto
useradd -U -G toto,sftpusers -s /bin/false -d /home/toto
mkdir /home/toto/data
chown toto:toto /home/toto/data
chmod 750 /home/toto/data
passwd toto # Pas obligatoire si vous voulez une authentification par clé publique

L'astuce ici consiste à donner le homedir à root mais à laisser tout le monde y accéder, puis donner un répertoire data accessible uniquement à toto. Sans cette manipulation le chroot n'est pas possible.

Authentification par clé publique

Si vous voulez pouvoir monter automatiquement ce point de montage dans l’arborescence du client au démarrage il faut mettre en place un système de clé publique. En temps normal les clés sont situées dans le homedir de l'utilisateur ~/.ssh/authorized_keys, cependant ici puisque c'est root qui a les droits sur le homedir, OpenSSH détecte une erreur de permission et ne permet pas le login. Il faut changer l'endroit où OpenSSH cherche les clés.

Attention : Si vous avez déjà des comptes qui se connectent avec clé dans ~/.ssh ayez conscience que changer cette directive peut rendre l'accès à votre serveur inaccessible.

Dans /etc/ssh/sshd_config :

AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

Cela va dire à OpenSSH de chercher dans un autre répertoire cette clé (%u correspond au nom d'utilisateur qui se connecte). Il faut donc créer ce répertoire avec les bonnes permissions :

mkdir /etc/ssh/toto/
chown toto:toto /etc/ssh/toto
chmod 755 /etc/ssh/toto
touch /etc/ssh/toto/authorized_keys
chown toto:toto /etc/ssh/toto/authorized_keys
chmod 644 /etc/ssh/toto/authorized_keys

On rempliera le fichier authorized_keys dans la partie configuration client.

sftp.1354228444.txt.gz · Dernière modification: 2019/04/02 11:14 (modification externe)