Sous Linux, plusieurs serveurs FTP existent, et nous verrons ici comment configurer le serveur ProFTPd pour qu'il utilise une table d'authentification différente de celle du SE (plus particulièrement, un fichier texte). Personnellement, j'aime aussi beaucoup vsftpd puisqu'il n'a presque aucune dépendance, et il se peut fort bien que cela fasse l'objet d'un autre message sur mon blogue.
De plus, nous créérons un compte FTP "webmaster" qui n'aura le droit que de modifier le contenu d'un site web.
Alors voici la marche à suivre :
- Installer ProFTPd, que ce soit avec votre packager (apt-get, yum, zipper, etc.) ou manuellement en téléchargeant la dernière version du site officiel.
- Vérifier sous quel groupe ID votre serveur HTTP roule (apache2 créé et utilise souvent le groupe www-data); dans mon cas, le GID de www-data est 33
- Modifier le fichier de configuration /etc/proftpd/proftpd.conf en s'assurant d'avoir les lignes suivantes :
DefaultRoot ~ AuthOrder mod_auth_file.c AuthUserFile /etc/proftpd/ftpd.passwd Umask 006 007
- L'option DefaultRoot et le paramètre ~ restreignent les utilisateurs à leurs répertoires racines personnels.
- L'option AuthOrder et le paramètre mod_auth_file.c obligent ProFTPd à authentifier les utilisateurs à partir d'un fichier texte.
- L'option AuthUserFile et le paramètre /etc/proftpd/ftpd.passwd indiquent l'emplacement du fichier d'authentification utilisé par ProFTPd.
- L'option Umask et les paramètres 006 et 007 spécifient les autorisations permises sur les fichiers et les répertoires créés par le serveur FTP, soit -rw-rw---- (660) et drwxrwx--- (770) respectivement.
- Il reste à créer le compte FTP virtuel webmaster :
sudo ftpasswd --passwd --name=webmaster --uid=33 --gid=33 --home=/var/www --shell=/bin/sh
- Il est important d'utiliser le GID trouvé plus haut (celui qu'utilise votre serveur HTTP) afin de donner les droits au nouvel utilisateur virtuel d'écrire dans le répertoire du site web. J'ai choisi d'utiliser le UID de www-data également (facultatif), pour que tout fichier transféré via FTP sous le compte webmaster soit créé en tant que l'utilisateur www-data et le groupe www-data. Nous utilisons ce groupe afin de permettre aux scripts PHP (roulés par le serveur HTTP) de lire et d'écrire les fichiers créés par le serveur FTP, et vice-versa.
- Il ne vous reste plus qu'à définir les autorisations du répertoire de votre site web (souvent /var/www). Par exemple, pour permettre à tout utilisateur du système d'exploitation (SE) appartenant au groupe www-data de lire et d'écrire dans ce répertoire, il suffit d'effectuer les commandes suivantes :
sudo chgrp -R www-data /var/www sudo chmod -R g+w /var/www
- Si vous voulez qu'un utilisateur du SE puisse modifier, ajouter, effacer, etc. des fichiers du répertoire du site web, il suffit donc de l'ajouter au groupe www-data de votre SE (dans /etc/group).
- Pour ne pas divulguer l'identité des réels propriétaires du contenu du répertoire de votre site web (par exemple, les fichiers qui auraient été créés par un utilisateur de votre SE appartenant au groupe www-data, vous pouvez utiliser les directives suivantes dans proftpd.conf qui auront pour effet de lister tous les répertoires et fichiers comme appartenant à www-data :
DirFakeUser on www-data DirFakeGroup on www-data
- Finalement, afin de ne pas divulguer la version de votre serveur FTP, vous pouvez changer la bannière de bienvenue en utilisant la directive suivante :
ServerIdent on "FTP server."Voici le contenu du fichier proftpd.conf, au complet, avec la configuration de base tel que décrite ci-dessus :
Include /etc/proftpd/modules.conf UseIPv6 off IdentLookups off UseReverseDNS off ServerIdent on "FTP server." DeferWelcome on ServerType standalone MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" DenyFilter \*.*/ DefaultRoot ~ RequireValidShell on Port 21 MaxInstances 30 User proftpd Group nogroup DirFakeUser on www-data DirFakeGroup on www-data Umask 006 007 AllowOverwrite on AuthOrder mod_auth_file.c AuthUserFile /etc/proftpd/ftpd.passwd TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.logQuotaEngine off Ratios off DelayEngine on
Aucun commentaire:
Publier un commentaire