Prochaine révision | Révision précédente |
tuto:configurer_serveur_sftp [2009/12/14 05:20] – créée Thomas | tuto:configurer_serveur_sftp [2010/01/23 11:35] (Version actuelle) – smolski |
---|
* nous avons accès à toute l'arborescence du serveur (pas de chroot), suivant les droits des dossiers et fichiers bien entendu, | * nous avons accès à toute l'arborescence du serveur (pas de chroot), suivant les droits des dossiers et fichiers bien entendu, |
* nous avons accès à un shell. | * nous avons accès à un shell. |
| \\ |
| |
=== Configuration d'OpenSSH === | ==== Configuration d'OpenSSH ==== |
| |
Nous pouvons sécuriser ces paramètres en ajoutant au fichier ''/etc/ssh/sshd_config'' : | Nous pouvons sécuriser ces paramètres en éditant le fichier ''/etc/ssh/sshd_config''. |
| |
| Ecrire : |
| |
<code>PermitRootLogin no</code> | <code>PermitRootLogin no</code> |
| |
Simple question de bon sens mais pas obligatoire. | //Simple question de bon sens mais pas obligatoire.// |
| |
| Ajouter : |
| |
<code>Subsystem sftp internal-sftp</code> | <code>Subsystem sftp internal-sftp</code> |
| |
Cette commande autorise le faux shell "internal-sftp". J'y reviendrai un peu plus tard. | //Cette commande autorise le faux shell "internal-sftp". J'y reviendrai un peu plus tard.// |
| |
| Ajouter encore : |
| |
<code> | <code> |
</code> | </code> |
| |
Ici nous autorisons le groupe "geeks" à accéder au shell "internal-sftp" uniquement, et il ne pourra pas sortir de son home car il est chrooté. | Ainsi nous autorisons le groupe "geeks" à accéder uniquement au shell "internal-sftp". Et il ne pourra pas sortir de son home car il est chrooté. \\ |
Le %u est la variable désignant l'identifiant de l'utilisateur : si bob se connecte au serveur, il sera chrooté dans "/sftp/geeks/bob". | Le %u est la variable désignant l'identifiant de l'utilisateur. Si bob se connecte au serveur, il sera chrooté dans "/sftp/geeks/bob". |
| |
Maintenant que la configuration d'OpenSSH est faite, nous pouvons ajouter/configurer les comptes de nos clients. | Maintenant que la configuration d'OpenSSH est faite, nous pouvons ajouter/configurer les comptes de nos clients. |
| \\ |
| |
=== Configuration des comptes utilisateurs === | ==== Configuration des comptes utilisateurs ==== |
| |
Tout d'abord, si le groupe "geeks" n'existe pas, il faut le créer : | Tout d'abord, si le groupe "geeks" n'existe pas, il faut le créer : |
<code>useradd -g geeks -d /bob -s /usr/libexec/sftp-server bob</code> | <code>useradd -g geeks -d /bob -s /usr/libexec/sftp-server bob</code> |
| |
Bob : | bob : |
| |
* fait partie du groupe "geeks", | * fait partie du groupe "geeks", |
* son home est "/bob" donc "/sftp/geeks/bob" d'après ''/etc/sshd_config'' puisqu'il ne s'y connectera qu'en SSH, | * son home est "/bob" donc "/sftp/geeks/bob" d'après ''/etc/sshd_config'' puisqu'il ne s'y connectera qu'en SSH, |
* et son shell est "/usr/libexec/sftp-server" (le chemin de ce shell peut être différent suivant les distributions). Ce faux shell permet de donner accès **uniquement** au protocole SFTP donc bob ne pourra pas avoir accès à la ligne de commande. Le faux shell /bin/false ne fonctionne pas dans ce cas. | * et son shell est "/usr/libexec/sftp-server" (le chemin de ce shell peut être différent suivant les distributions). \\ |
| Ce faux shell permet de donner accès **uniquement** au protocole SFTP, donc bob ne pourra pas avoir accès à la ligne de commande, car le faux shell /bin/false ne fonctionne pas dans ce cas. |
| |
Nous lui donnons un mot de passe : | Nous lui donnons un mot de passe : |
Bob peut maintenant se connecter à "<nowiki>sftp://bob@<serveur></nowiki>" | Bob peut maintenant se connecter à "<nowiki>sftp://bob@<serveur></nowiki>" |
| |
Cependant un petit inconvénient peut ennuyer : le chemin chrooté doit obligatoirement appartenir à "root:root" avec les droits "rwxr-xr-x" soit ''chmod 755''. Dans ce cas, l'administrateur sera obligé de faire un répertoire dans chaque "home" avec des droits en lecture/écriture pour que chaque client puissent envoyer des fichiers. | Un petit inconvénient peut ennuyer : \\ |
Une autre solution est possible, mais peut ennuyer aussi : remplacer la ligne suivante de ''/etc/ssh/sshd_config'' : | Le chemin chrooté doit obligatoirement appartenir à "root:root" avec les droits "rwxr-xr-x" soit ''chmod 755''. \\ |
| Dans ce cas, l'administrateur sera obligé de faire un répertoire dans chaque "home" avec des droits en lecture/écriture pour que chaque client puissent envoyer des fichiers. |
| |
| Une autre solution est possible, mais peut ennuyer également : \\ |
| Il s'agit de remplacer dans ''/etc/ssh/sshd_config'' la ligne suivante : |
| |
<code>ChrootDirectory /sftp/geeks/%u</code> | <code>ChrootDirectory /sftp/geeks/%u</code> |
| |
par | par : |
| |
<code>ChrootDirectory /sftp/geeks</code> | <code>ChrootDirectory /sftp/geeks</code> |
| |
Dans ce cas, les clients seront chrooté dans le répertoire "/sftp/geeks" uniquement mais pourront faire tout ce qu'ils veulent dans leur home qui leur appartiendront. | Dans ce cas, les clients seront chrootés dans le répertoire "/sftp/geeks" uniquement mais pourront faire tout ce qu'ils veulent dans le /home qui leur appartient. |
| |
| ==== Conclusion ==== |
| |
Même si la configuration d'un serveur SFTP est moins flexible qu'un serveur FTP classique, nous avons pu voir qu'elle est très facile à mettre en œuvre et convient pour un petit serveur perso. | Même si la configuration d'un serveur SFTP est moins flexible qu'un serveur FTP classique, nous avons pu voir qu'elle est très facile à mettre en œuvre et convient pour un petit serveur perso. |