VSFTPD
De TeteveWiki.
Sommaire |
Installation
Installation du paquet :
# apt-get install vsftpd
Si le répertoire /etc/vsftpd n'existe pas, le créer :
# mkdir /etc/vsftpd
Renommer les fichiers de configuration d'origine pour sauvegarde :
# cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak # cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak
Installation du paquet pour gérer la base de données login/mot de passe : libdb3-util
# apt-get install libdb4.6 # apt-get install db4.6-util
voir dans la partie "commandes" s'il y a un souci d'installation
Remplir le fichiers des utilisateurs :
# vim /etc/vsftpd/login.txt
Important : respecter la syntaxe !
(retour à la ligne entre les deux et sans commentaires)
utilisateur1 mot de passe1 utilisateur2 mot de passe2
Créer la base de données proprement dite :
# db4.6_load -T -t hash -f login.txt /etc/vsftpd/login.db # chmod 600 /etc/vsftpd/login.db
# vim /etc/pam.d/vsftpd.pam auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
# cp /etc/pam.d/vsftpd.pam /etc/pam.d/vsftpd
Le serveur FTP, géré par vsftpd, n'utilise pas les comptes système pour s'authentifier (d'où l'utilité de la base de données des utilisateurs => utilisateurs virtuels)
Il faut donc créer l'utilisateur système utilisé par le démon :
# mkdir -p /home/ftp/virtual # groupadd ftp # useradd -g ftp -d /home/ftp/virtual/ virtual
Vérifier dans les fichiers /etc/passwd et /etc/group
# chown root.ftp ~virtual/ # chmod 2750 ~virtual/
Préparation pour le SSL
Installer le paquet openssl
# apt-get install openssl
Créer le fichier certificat
# openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
Plusieurs questions seront posées afin de créer le certificat. La plus critique est celle-ci :
Common Name (eg, YOUR name) []: <renseigner le nom ou l'ip que les clients utiliseront>
Une fois ce fichier certificat généré, il faut le copier dans le dossier /etc/ssl/certs.
# cp vsftpd.pem /etc/ssl/certs
Il faut ensuite le sécuriser :
sudo chown root:root /etc/ssl/certs/vsftpd.pem sudo chmod 600 /etc/ssl/certs/vsftpd.pem
Note : vsftp s'exécute 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 VSFTPD
# vim /etc/vsftpd.conf
# Ceci configure vsFTPd en mode "standalone" listen=YES # On désactive les connexions anonymes et on active les non-anonymes(c'est le cas des utilisateurs virtuels): anonymous_enable=NO local_enable=YES # Pour des raisons de sécurité on interdit toute action d'écriture write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO # guest_enable pour activer l'utilisateur virtuel guest_enable=YES guest_username=virtual # On veut que les utilisateurs virtuels restent dans ~virtual/ chroot_local_user=YES # On définit le nombre maximum de sessions à 4 (les nouveaux clients recevront un message du genre: "erreur : serveur occupé") max_clients=4 # On définit le nombre maximum de sessions par IP à 4 # max_per_ip=4 # Configuration emplacement fichiers utilisateurs, jail chroot, et service pam secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd user_config_dir=/etc/vsftpd/vsftpd_user_conf #################### Supplément Teteve ############################# ftpd_banner=Bienvenue sur le serveur FTP de teteve.fr # Activation des messages personnalisés à l'entrée dans les dossiers (non utilisé actuellement) dirmessage_enable=YES # On active les logs pour les uploads/downloads xferlog_enable=YES xferlog_file=/var/log/vsftpd-dl.log # Connexion et ports pour le mode passif connect_from_port_20=YES pasv_address=<Adresse ip> ou <nom d'hôte> pasv_min_port=50000 pasv_max_port=60000 # temps d'inactivité idle_session_timeout=600 data_connection_timeout=120 ################## SSL : connexions cryptées ###################### ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES rsa_cert_file=/etc/ssl/certs/vsftpd.pem rsa_private_key_file=/etc/ssl/certs/vsftpd.pem ################# Droits sur les fichiers uploadés ################# chown_uploads=YES chown_username=virtual chown_upload_mode=0750
Droits utilisateurs
# mkdir /etc/vsftpd/vsftpd_user_conf/ # /etc/init.d/vsftpd reload
Donner les droits en lecture (utilisateur1) et lecture/écriture (utilisateur2) :
# echo "anon_world_readable_only=NO" > /etc/vsftpd/vsftpd_user_conf/utilisateur1 # echo "anon_world_readable_only=NO" > /etc/vsftpd/vsftpd_user_conf/utilisateur2 # echo "write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2 # echo "anon_upload_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2
Créer le répertoire utiliser pour les uploads :
# mkdir ~virtual/upload/ # chmod 770 ~virtual/upload/
si besoin, rajouter deux lignes sur les ports ftp et modifier le firewall en conséquence
Commandes pour séparer les répertoires d'upload de chaque utilisateur
# cd ~virtual/
# mkdir -p {utilisateur1/,utilisateur2/}/upload
# chmod 2750 {utilisateur1/,utilisateur2/}
# chmod 770 {utilisateur1/,utilisateur2/}/upload/
# echo "local_root=utilisateur1" >> /etc/vsftpd/vsftpd_user_conf/utilisateur1
# echo "local_root=utilisateur2" >> /etc/vsftpd/vsftpd_user_conf/utilisateur2
On relance le serveur FTP pour prendre en compte tous ces paramètres :
# /etc/init.d/vsftpd stop # /etc/init.d/vsftpd start

