Après avoir présenté pureftpd, je vous présente aujourd’hui vsFTPd. vsFTPd signifie « Very Secure FTP daemon », c’est un serveur FTP réputé pour sa sécurité disponible sous Unix et Linux : aucune faille de sécurité n’a jamais été décelé dans le code du serveur. VsFTPd supporte ipv6 et SSL. Il propose aussi les fonctionnalités usuelles des autres serveurs FTP : limitation de bande passante, chroot …
Installer VsFTPd
Installons le package Debian avec notre gestionnaire de paquets préféré APT …
apt-get install vsftpd
Configurer VsFTPd
Par défaut avec vsFTPd, seul l’utilisateur anonyme à le droit d’accéder au serveur FTP en lecture seule.
Il vous faudra donc probablement modifier les directives de configuration qui se trouvent dans /etc/vsftpd.conf.
Attention par défaut, VsFTPd donne accès au serveur FTP en mode anonyme.
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO
En général, on préfère donner le droit en écriture aux utilisateurs locaux …
local_enable=YES write_enable=YES
On peut chrooter les utilisateurs dans leur répertoire d’origine. C’est à dire que l’utilisateur ne peut pas naviguer en dehors du répertoire qui lui est affecté, et de ses sous-répertoires.
chroot_local_user=YES
On pourra aussi chrooter tous les utilisateurs sauf certains …
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Le fichier /etc/vsftpd.chroot_list contiendra alors les noms des utilisateurs NON chrootés
Par mesure de sécurité, on peut changer le port d’écoute, qui par défaut est le port 21
listen_port=222
Chaque changement dans la configuration de vsFTPd necessite de recharger le serveur
/etc/init.d/vsftpd reload
Les utilisateurs qui sont chrootés dans leur home ne peuvent pas à priori naviguer dans un dossier a l’extérieur de leur home.
On aurait pu penser à la commande ln pour faire un lien symbolique …mais ça ne fonctionne pas à cause d’un problème de droit.
La solution est d’utiliser la commande mount avec l’option –bind
mount --bind dossier_source dossier_ftp
On pensera à activer le montage au démarrage en éditant le fichier /etc/fstab
dossier_source dossier_ftp none bind,defaults,auto 0 0
Utilisateurs virtuels
Par défaut les utilisateurs sont les utilisateurs locaux du système. Pour plus de souplesse, on aimera utiliser des utilisateurs virtuels.
On crée un répertoire pour la configuration des utilisateurs virtuels
mkdir -p /etc/vsftpd/vsftpd_user_conf
On sauvegarde les fichiers de configuration
cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak
On installe le paquet permettant d’utiliser un fichier texte comme base de donnée des utilisateurs
apt-get install db4.2-util
Ensuite on efface le contenu du fichier /etc/pam.d/vsftpd et on remplace par :
auth required pam_userdb.so db=/etc/vsftpd/virtual-users account required pam_userdb.so db=/etc/vsftpd/virtual-users session required pam_loginuid.so
On crée ensuite le fichier texte des utilisateurs avec alternativement 1 login / 1 mot de passe.
nano /etc/vsftpd/virtual-users.txt
login1 pass1 login2 pass2
Il faut maintenant créer la base de données à partir de notre fichier texte
cd /etc/vsftpd/ db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db
On sécurise les fichiers virtual-users.txt et virtual-users.db
chmod 600 /etc/vsftpd/virtual-users.*
On relance le serveur vsFTPd
/etc/init.d/vsftpd restartvsFTPd un serveur FTP hautement sécurisé,





août 10th, 2012 at 13 h 41 min
Bonjour,
J’ai une autre méthode à proposer pour ce tutoriel. Il manque ici les fichiers de conf de chaque utilisateur dans le dossier /etc/vsftpd/vsftpd_user_conf. De plus, je n’ai pas configuré mon fichier vsftpd.conf tout à fait comme vous. les objectifs ne sont pas les même. Puis je vous le soumettre ?
juillet 31st, 2012 at 18 h 05 min
Ln ne fonctionne pas car ce serait une grosse faille de sécurité, imaginez un user qui fait un « ln -s » à l’exterieur de son repertoire. Ça rendrait le chroot inutile.
Pour Mount, l’utilisateur doit bénéficier des droits root ou du bit suid, c’est donc plus sécurisé.
Aujourd’hui db4.8-util pour squeeze stable. Et donc db4.8_load plutôt que db_load
Toujours pour plus de sécurité, supprimer le fichier texte est utile.