vsFTPd est un serveur FTP qui mise beaucoup sur la sécurité et est l’un des premiers logiciels serveurs à mettre en œuvre la séparation des privilèges, minimisant ainsi les risques de piratage.
Installation de vsftpd
Installation du paquet en ligne de commande :
# apt-get install vsftpd |
Configuration de vsftpd
Le fichier de configuration de VsFTPd se situe dans /etc/vsftpd.conf
Connexion des utilisateurs locaux
Pour permettre aux utilisateurs déjà présent sur le serveur (possédant déjà un compte) de se connecter au FTP et d’avoir les droits d’écriture, il faut modifier le fichier /etc/vsftpd.conf
:
# Uncomment this to allow local users to log in. |
Modifier le umask
Quand un utilisateur crée ou upload un nouveau fichier sur le FTP le u-mask appliqué par défaut est à 077, ce qui fait que les droits sur les répertoires et les fichiers sont respectivement à 700 et 600. Si on applique un u-mask de 022 les répertoires auront par défaut les droits 755 et les fichiers 644.
# Default umask for local users is 077. You may wish to change this to 022, |
Donc lorsqu’un dossier ou fichier sera déplacé ou créé sur le FTP :777-022=755
soit rwx-r-xr-x
pour les dossiers (alors qu’avec un u-mask de 077 on aurait eu 700)666-022=644
soit rx-r--r--
pour les fichiers
Message d’accueil / de bienvenue
C’est toujours amusant de personnaliser un texte d’accueil. Deux méthodes : Soit un texte simple sur une seule ligne :
# You may fully customise the login banner string: |
Soit un fichier texte contenant une mise en forme (ASCII par exemple)
# When you create a longer banner you may want to just create a file and then |
Petit aperçu :
Ne pas autoriser de connexions anonymes
Ne pas autoriser de connexion anonyme sur le FTP.
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). |
Limiter l’accès aux utilisateurs à leur dossier personnel
Il nous est précisé : “You may specify an explicit list of local users to chroot() to their home directory. If chroot_local_user is YES, then this list becomes a list of users to NOT chroot().
# You may specify an explicit list of local users to chroot() to their home |
SI chroot_local_user=YES
ALORS :
- tous les utilisateurs seront chrootés dans leur home directory SAUF ceux de la liste
vsftpd.chroot_list
SI chroot_local_user=NO
ALORS :
- aucun utilisateur ne sera chrooté dans leur home directory SAUF ceux de la liste
vsftpd.chroot_list
Selon le cas, il faut spécifier les identifiants des utilisateurs dans /etc/vsftpd.chroot_list
.
Relancer le serveur
Il est necessaire de relancer, du moins il vaut mieux, le serveur FTP.
# /etc/init.d/vsftpd reload |
Ou en utilisant service
# service vsftpd reload |
3. Création d’un utilisateur
Lorsque l’on ajoute un utilisateur, le système créé automatiquement un répertoire dans /home
portant son nom. Exemple : si on ajoute l’utilisateur user1 alors le répertoire /home/user1
sera créé. Ce répertoire appartient à user1 et au groupe user1.
Cas 1 : L’utilisateur n’existe pas
Dans ce cas on ajoute un nouvel utilisateur et son dossier personnel sera accessible via le ftp :
# adduser bender-rodriguez |
Erreur possible :
Please enter a username matching the regular expression configured via the NAME_REGEX[_SYSTEM} |
Si vous avez cette erreur, c’est que le nom utilisé comporte des caractères qui ne conviennent pas. Dans ce cas il faut utiliser l’option --force-badname
# adduser bender-rodriguez --force-badname |
Il nous sera demandé un mot de passe (obligatoire) et des informations que l’on peut laisser vides
Cas 2 : Un dossier porte déjà le nom d’un utilisateur
Imaginons que le répertoire /home/bender-rodriguez
existe déjà et de plus contienne des fichiers.
Si ce répertoire existe, c’est que quelqu’un d’autre (en général root) l’a précédemment créer et de ce fait le propriétaire et le groupe propriétaire ne sont pas ceux attendus pour ce répertoire.
Changement du propriétaire :
# chown -R bender-rodriguez /home/bender-rodriguez/ |
De façon récursive tous les fichiers présent dans le répertoire [ainsi que le répertoire] auront comme propriétaire bender-rodriguez
Changement du groupe propriétaire propriétaire :
# chgrp -R bender-rodriguez /home/bender-rodriguez/ |
De façon récursive tout les fichiers présent dans le répertoire [ainsi que le répertoire] auront comme groupe propriétaire bender-rodriguez
Iptables
Ne pas oublier d’ouvrir les ports FTP, par défaut 20 et 21
# --- FTP ----------------------------------: |
Droits en écriture sur le répertoire de dépôt
La connexion FTP se déroule bien mais se termine sur ce message :
500 OOPS: vsftpd: refusing to run with writable root inside chroot() |
Il faut enlever les droits en écriture sur le répertoire racine de l’utilisateur réel (restriction imposée par les versions récentes de vsFTPd) :
# chmod a-w /home/bender-rodriguez/ |
Pour quand même forcer vsftp : http://lindev.fr/index.php?post/2013/04/05/wheezy-vsftpd-et-chroot
Documentation
https://security.appspot.com/vsftpd.html
http://vsftpd.beasts.org/vsftpd_conf.html
http://lindev.fr/index.php?post/2013/04/05/wheezy-vsftpd-et-chroot