Chez Ptit Gars

Accueil > Informatique > Poweredge T105 > installation vsftpd

installation vsftpd

samedi 20 juillet 2013, par Pti Gars

vsFTPd (pour Very Secure FTP Daemon) s’annonce lui-même comme étant "probablement le plus sur et le plus rapide des serveurs FTP pour systèmes Unix".

La configuration portera essentiellement sur deux usages :

utilisation du FTP avec des utilisateurs virtuels qui peuvent uploader

1 – Installer vsFTPd

# apt-get install vsftpd

2 - configuration

Le but ici est d’utiliser le serveur FTP uniquement avec des utilisateurs virtuels, et non avec les utilisateurs locaux du système Unix.

La configuration se trouve dans le fichier /etc/vsftpd.conf

2.1 Configuration de base

Les paramètre de /etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
connect_from_port_20=YES
ftpd_banner=coucou gros sac.
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
guest_enable=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
xferlog_enable=YES
dual_log_enable=YES

Ici nous avons bloquer l’utilisateur anonyme.
défini que la config des utilisateurs est dans : /etc/vsftpd/vsftpd_user_conf
activer les log de login et log de transfert

Nous devons créer le répertoire /etc/vsftpd/vsftpd_user_conf

mkdir /etc/vsftpd/vsftpd_user_conf

2.2 – Configurer des utilisateurs virtuels

2.2.1 – Créer une base de données

Les utilisateurs virtuels avec leur mot de passe associé doivent se trouver dans une base de données de type Berkeley DB.

Le but est donc de créer un fichier texte pour ensuite le convertir.

Créer donc un fichier texte :

#cd /etc/vsftpd
# vim vsftpd_logins.txt

Y mettre une suite d’utilisateurs/mot de passe séparés par un retour chariot :

user
password
user2
password2

Enregistrer le fichier et quitter.

Installer ensuite les outils de base de données Berkeley :

# apt-get install db-util

Convertir alors le fichier texte [1]

# db5.1_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

Puis modifier les droits des deux fichiers pour un peu plus de discrétion :

# chmod 600 /etc/vsftpd/login.txt
# chmod 600 /etc/vsftpd/login.db

2.2.2 – Créer un fichier de règle PAM

La prochaine étape consiste à créer un fichier PAM pour utiliser cette base de données lors de l’authentification des utilisateurs.

Supprimer le fichier PAM existant :

# rm /etc/pam.d/vsftpd

Et en ouvrir un nouveau :

# vim /etc/pam.d/vsftpd

Y ajouter ces deux lignes [2] :

auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login

Enregistrer et quitter.

2.2.3 – Créer un fichier de configuration par utilisateur

Avec la configuration actuelle, les utilisateurs virtuels peuvent lire les fichiers présents dans le répertoire de dépôt FTP.

On peut vouloir donner plus de droits à un utilisateur, pour lui permettre par exemple d’uploader lui-même des fichiers.

Pour cela, chaque utilisateur virtuel devra avoir sa propre configuration située dans le répertoire /etc/vsftpd/vsftpd_user_conf.

Cette étape n’est pas obligatoire et ne concernent que les utilisateurs ayant des droits supérieurs aux droits de base, c’est à dire qui ont besoin de faire plus que simplement lire les fichiers de répertoire de dépôt FTP.

Editer le fichier de configuration d’un utilisateur virtuel :

# vim /etc/vsftpd_user_conf/user

Et y inscrire ces options :

anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
dirlist_enable=YES
download_enable=YES
write_enable=YES
guest_username=www-dev
anon_umask=022

on autorise l’écriture, la création de répertoire, on force l’utilisateur www-dev.

3 – Problèmes et solutions

3.1 – Emplacement des modules PAM

La connexion FTP échoue et ce message apparait dans les logs d’authentification :

vsftpd: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot open shared object file: No such file or directory
vsftpd: PAM adding faulty module: /lib/security/pam_userdb.so

C’est que le module PAM userdb n’est pas au bon endroit.

Il faut alors préciser le chemin correct dans le fichier /etc/pam.d/vsftpd (par exemple, dans mon cas il est dans /lib/i386-linux-gnu/security/ au lieu d’être habituellement dans /lib/security/).

3.2 – 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()
Login failed.

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/ftpvirtual/

4 – quelques liens

https://security.appspot.com/vsftpd.html
http://blog.moncoindunet.fr/linux/installer-et-configurer-vsftpd/
http://www.croc-informatique.fr/2008/04/vsftpd-virtual-users/
http://yohanes.pradono.com/2012/11/18/installing-vsftpd-with-virtual-users-enabled-and-using-pam_pwdfile-for-authentication
http://www.prometee-creation.com/tutoriels/un-serveur-ftp-avec-vsftpd-et-utilisateurs-virtuels.html
http://www.post-hit.net/geek/vsftpd-configurer-serveur-ftp-utilisateurs-virtuels-chroot-mount-bind


[1Pour lire cette base

db5.1_dump -p login.db>fichier_dump.txt

[2Les fichiers peuvent être a d’autre endroit suivant la version du système
Ils peuvent se trouver dans le répertoire /lib/i386-linux-gnu/security/