Ci-dessous, les différences entre deux révisions de la page.
sftp [2012/11/29 23:34] nicolas créée |
sftp [2019/04/02 11:14] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== 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'' : | ||
- | <code> | ||
- | # Chroot for sftpusers members | ||
- | Match Group sftpusers | ||
- | ChrootDirectory %h | ||
- | ForceCommand internal-sftp | ||
- | AllowTcpForwarding no | ||
- | GatewayPorts no | ||
- | X11Forwarding no | ||
- | </code> | ||
- | |||
- | 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''. | ||
- | |||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | 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'' : | ||
- | <code> | ||
- | AuthorizedKeysFile /etc/ssh/%u/authorized_keys | ||
- | </code> | ||
- | |||
- | 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 : | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | On rempliera le fichier ''authorized_keys'' dans la partie configuration client. |