Ceci est une ancienne révision du document !
Toutes versions
Rédigé par Ju
VsFTP, Very secure FTP
VsFTPd est un serveur FTP conçu avec la problématique d'une sécurité maximale. Contrairement aux autres serveurs FTP (ProFTPd, PureFTPd, etc.), aucune faille de sécurité n'a jamais été décelée dans VsFTPd. Ce serveur est notamment utilisé à grande échelle par des entreprises telles que Red Hat.
La configuration par défaut de VsFTPd est très restrictive :
- Seul le compte anonyme est autorisé à se connecter au serveur
- En lecture seule
- Les utilisateurs ne peuvent accéder à leur compte
Remarques
Aussi sécurisé que soit un serveur ftp, le protocole ftp en lui même n'est pas sûr ! En effet l'échange du nom d'utilisateur et du mot de passe transite en clair sur le réseau. Si vous utilisez ce serveur sur votre LAN pas de soucis, mais attention si vous comptez utiliser le serveur ftp depuis internet, de fait n'utilisez pas un compte qui a les droits sudo via ftp (en fait n'utilisez de l'extérieur ce compte QUE via ssh ou tout autre protocole sécurisé, POPs, etc.)
Installation
vsftpd est dans le dépôt Main, le nom du paquet est vsftpd pour une installation vue Synaptic. Pour installer VsFTPd en console, entrez la commande suivante dans un terminal :
sudo apt-get install vsftpd
Configuration de vsftpd
La configuration de VsFTPd est centralisée dans un seul et même fichier /etc/vsftpd.conf
. Choisissez votre éditeur de texte favori (en mode super utilisateur) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd.
- Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'écrire.
local_enable=YES
write_enable=YES
- Pour permettre la configuration du chmod par défaut que prendront les fichiers et les dossiers.
local_umask=077
- Valeur 002 : permet d'avoir un chmod des dossiers en 775 et fichiers en 664
- Valeur 022 : permet d'avoir un chmod des dossiers en 755 et fichiers en 644
- Valeur 077 : permet d'avoir un chmod des dossiers en 777 et fichiers en 666
- Vous pouvez personnaliser le texte de connexion au serveur
ftpd_banner=Bienvenue sur le serveur ftp de René
- Vous pouvez pour quelques utilisateurs privilégiés ne pas les 'emprisonner' dans leur dossier personnel gràce à la configuration suivante :
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
Les login dans /etc/vsftpd.chroot_list auront le droit de naviguer en dehors de leur dossier personnel.
- Pour avoir un monitoring basic (voir les utilisateurs connectés) :
setproctitle_enable=YES
Ensuite, pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal :
ps -aef | grep vsftpd
Attention, tous les utilisateurs du système ayant accès à la commande "ps" pourront également visualiser la liste des utilisateurs connectés.
* Monitoring d'après le fichier de log
Aucun changement à effectuer dans vsftp.conf. Pas de problème de sécurité car la commande est accessible en mode super-utilisateur seulement. Tapez dans un terminal :
sudo tail -f /var/log/vsftpd.log
Après chaque changement sur la configuration, pensez à relancer le serveur pour les prendre en compte :
sudo /etc/init.d/vsftpd restart
Plus d'infos sur la configuration de vsftpd: Documentation vsFTPd
Note : Il est tout à fait possible d'utiliser vsftpd avec xinetd (xinetd se chargeant de lancer le serveur ftp uniquement quand une connexion est demandée) si vous voulez savoir comment configurer xinetd dans ce cas : Debuntu
Voici un lien avec une méthode très bien décrite sur la mise en place de vsftpd ainsi que de la création de compte avec des droits distincts : http://www.andesi.org/index.php?node=121
Partage de dossier et chroot
Les utilisateurs étant chrootés dans leur home (ce n'est pas obligatoire mais conseillé) il faut trouver un moyen de leur permettre de naviguer dans un dossier a l'exterieur de leur home.
ls pour faire un lien symbolique ne fonctionne pas : problème de droit.
La commande à utiliser est mount avec l'option –bind
sudo mount --bind dossier_source dossier_ftp
Pour l'avoir au boot éditer /etc/fstab et ajouter :
/dossier_ftp_cible /dossier_ftp_source none bind,defaults,auto 0 0
vsftpd et SSL
Principale source d'informations
Un des défauts principal du protocole ftp est que les couples nom d'utilisateur / mot de passe transitent en clair sur le réseau…
Mais il est possible de mettre une couche supplementaire, ssl pour chiffrer les echanges d'authentificationet et/ou de données
Je vous invite à lire le fichier /usr/share/doc/vsftpd/README.ssl qui vient avec vsftpd. Pour les mises en garde de sécurité.
Création du certificat
Il vous faut le paquet openssl
mkdir ~/SSL-cert-vsftpd && cd ~/SSL-cert-vsftpd openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
Openssl va vous poser quelques questions, la plus critique est celle ci :
Common Name (eg, YOUR name) []:
Il faut écrire le nom ou l'ip que les clients utiliseront. Il est possible de faire un certificat signé par sa propre authorité de certification et donc générer des certificats valides, une fois que vos clients ont reconnu votre authorite de certification : Creating and Using a self signed SSL Certificates in debian
Un certificat, vsftpd.pem, a été généré dans le dossier SSL-cert-vsftpd de votre dossier personnel.
Copions le dans /etc/ssl/certs/ :
sudo cp ~/SSL-cert-vsftpd/vsftpd.pem /etc/ssl/certs/
Sécurisons le :
sudo chown root:root /etc/ssl/certs/vsftpd.pem sudo chmod 600 /etc/ssl/certs/vsftpd.pem
Note : vsftp s'execute avec les droits de l'utilisateur nobody mais il se lance en tant que root et donc lit le certificat en tant que root.
Configuration de vsftpd.conf / Partie SSL
A la fin de votre fichier /etc/vsftpd.conf
# Options for SSL # encrypted connections. ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO <--- vous pouvez mettre à "YES" si vous utilisez kasablanca force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES rsa_cert_file=/etc/ssl/certs/vsftpd.pem
A priori un :
sudo /etc/init.d/vsftpd restart
devrait bien se passer.
Les clients qui supportent ssl
Sous Windows
FileZilla ou smartFtP option : "FTP over TLS Explicit"
Sous MacOS X
CyberDuck option "FTP-SSL (FTP over SSL/TLS)"
Sous Linux
ftp-ssl - Le client ftp avec cryptage par SSL ou TLS
kasablanca - Kasablanca est un client graphique FTP. Parmi ses fonctions, on peut citer le support du cryptage (par autentification TLS, et non SFTP),FXP (accès direct entre deux serveurs FTP,un gestionnaire de signets et un système de mise en queue. - Tourne sous Kde (mais aussi sous gnome avec les lib Kde) home page
gftp sous Debian/Ubuntu ne supporte pas ssl bug report et… voila si vous en connaissez un autre…