Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/07/2009, à 02:56

Lapogne71

Exemple de configuration du serveur ftp vsftpd

Je poste ma procédure d'installation et de configuration du serveur ftp vsftpd.
(A améliorer et corriger si besoin ... )

Ses principales caractéristiques :
    Pas de SSL (pas de données top-secret-défense :-) )
    Pas de connexions anonymes
    Aucun utilisateur réel de mon PC, mais une liste d'utilisateurs virtuels rattaché au user "ftpvirtuel"
    Un répertoire racine unique pour tout le monde
    A la racine du serveur : un répertoire DOWNLOAD et un UPLOAD

   
La première chose à faire est d'installer vsftpd (et dans un premier temps valider la config par défaut lors de l'installation) :

sudo apt-get install vsftpd

On crée un dossier pour les fichiers de configuration et on sauvegarde la config originale

sudo mkdir /etc/vsftpd
sudo mkdir /etc/vsftpd/vsftpd_user_conf
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak
sudo cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak

Pour créer des utilisateurs virtuels, on a besoin d'une base de données au format "Berkeley db" :

sudo apt-get install libdb4.4 db4.4-util db4.4-doc
sudo gedit /etc/pam.d/vsftpd

et tout remplacer par (pour les ditrib 32 bits) :   

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

sinon pour les distrib 64 bits :

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login

Creer un fichier texte /etc/vsftpd/login.txt et écrire les login et password des utilisateurs virtuels dedans:

user1
password1
user2
password2

en terminant bien par un saut de ligne !!

On convertit notre fichier texte au format db et on le sécurise :

sudo db4.4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.txt

On crée notre fameux utilisateur local auquel seront rattachés tous les utilisateurs virtuels :

sudo groupadd ftp
sudo useradd -g ftp -d /media/DOCUMENTS/SERVEUR_FTP/ ftpvirtuel

On crée les répertoires qui vont contenir les fichiers du serveur et on leur attribue les droits adéquats :

sudo mkdir -p /media/DOCUMENTS/SERVEUR_FTP/		--> c'est la racine du serveur, vous vous en doutez
sudo mkdir -p /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD /media/DOCUMENTS/SERVEUR_FTP/2-UPLOAD
sudo chown -R $LOGNAME.ftp /media/DOCUMENTS/SERVEUR_FTP
sudo chmod 2750 /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD
sudo chmod 2770 /media/DOCUMENTS/SERVEUR_FTP/2-UPLOAD

A ce stade le serveur devrait être fonctionnel mais pour l'instant tout les utilisateurs auront les mêmes droits,
ceux défini dans /etc/vsftpd.conf

Pour affiner les droits selon l'utilisateur, on creer des fichiers texte comme /etc/vsftpd/vsftpd_user_conf/user1

par exemple pour l'utilisateur user1 :

write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

user1 pourra ainsi créer des dossiers et uploader des fichiers

et pour user2 :

write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

il aura les mêmes droits que user1 avec en plus le droit de renommer et supprimer.

Si on souhaite faire apparaitre dans le serveur ftp tout un repertoire ou meme un disque, on peut utiliser un "bind".
Par exemple pour faire apparaitre les repertoires /media/MUSIQUE et /media/DV dans le serveur :

mkdir -p /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD/Musique
mkdir -p /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD/Video

ensuite dans /etc/fstab on rajoute :

/media/MUSIQUE /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD/Musique auto defaults,bind 0 0
/media/DV /media/DOCUMENTS/SERVEUR_FTP/1-DOWNLOAD/Video auto defaults,bind 0 0

on active ces nouveaux points de montage :

sudo mount -a

Pour tester chaque modification de la configuration, il faut recharger le serveur :

sudo /etc/init.d/vsftpd restart

Pour finir, mon fichier /etc/vsftpd.conf (sans les lignes de commentaires) :

listen=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=ftpvirtuel
chroot_local_user=YES
max_clients=30
max_per_ip=6

secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

listen_port=2121
anon_umask=002
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf
setproctitle_enable=YES
session_support=YES
ftpd_banner=Salut mon gars ! ca booste ?.
pasv_enable=YES
pasv_min_port=52000
pasv_max_port=52050
pasv_address=82.243.XXX.XXX
dual_log_enable=YES
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/etc/vsftpd/vsftpd_xfer.log
vsftpd_log_file=/var/log/vsftpd.log
connect_from_port_20=YES

Les fichiers uploadés auront certainement des droits qui ne vous intéressent pas. Il suffira de leur appliquer :

sudo chown -R $LOGNAME:$LOGNAME /media/DOCUMENTS/SERVEUR_FTP/2-UPLOAD/*
sudo chmod -R 0755 /media/DOCUMENTS/SERVEUR_FTP/2-UPLOAD/*

Pour mettre à jour la liste des utilisateurs virtuels après une modification de /etc/vsftpd/login.txt :

sudo rm /etc/vsftpd/login.db
sudo db4.4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.txt
sudo /etc/init.d/vsftpd reload

Dernière modification par Lapogne71 (Le 05/11/2009, à 00:47)

Hors ligne

#2 Le 05/11/2009, à 01:26

Lapogne71

Re : Exemple de configuration du serveur ftp vsftpd

Juste un mot pour dire que la version actuelle de vsftpd dans Karmic (2.2.0-1ubuntu1) est buggée et la 2.2.1 n'est pas encore disponible dans les dépots :

https://bugs.launchpad.net/ubuntu/+sour … bug/462749
http://vsftpd.beasts.org/
http://groups.google.com/group/muc.list … 339c513ce4

En attendant la version 2.2.1 dans Ubuntu 10.04 (Lucid Lynx), les solutions que j'ai testées pour que la config décrite fonctionne toujours :
- soit réinstaller (en forçant) la version qui était dans Jaunty : la 2.0.7
- soit d'installer la version du PPA Launchpad : la 2.2.0-1ubuntu2 ici : https://launchpad.net/~zulcss/+archive/ppa/+packages

PS : lors de la réinstallation, bien penser à ne pas écraser les fichiers de config !

Dernière modification par Lapogne71 (Le 05/11/2009, à 01:27)

Hors ligne