Mon objectif est de créer un serveur FTP qui utilisera le nom de connexion "ftpadmin" avec des droits sur le dossier [/var/www]. Ainsi, il sera possible d'utiliser un client FTP comme "FIleZilla" pour téléverser des pages Web dans le bon répertoire.
Vous devez installer les paquets "vsftpd" et "db5.1-util".
#aptitude install vsftpd db5.1-util
Le fichier "vsftpd.conf" se trouve dans le répertoire [/etc].
Editez le fichier [/etc/vsftpd.conf] et modifiez-le en tenant compte du listing ci-dessous.
#vim /etc/vsftpd.conflisten=YESanonymous_enable=NOlocal_enable=YESwrite_enable=NOlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOdirmessage_enable=YESuse_localtime=YESxferlog_enable=YESconnect_from_port_20=YESchown_uploads=NOchown_username=nobodyxferlog_file=/var/log/vsftpd.logxferlog_std_format=YESasync_abor_enable=NOascii_upload_enable=NOascii_download_enable=NOftp_banner=Bienvenue sur Debian.chroot_local_user=YESallow_writeable_chroot=YESsecure_chroot_dir=/var/run/vsftpd/emptyuserlist_enable=YESuser_config_dir=/etc/vsftpd/user_confpam_service_name=vsftpdrsa_cert_file=/etc/ssl/private/vsftpd.pemtcp_wrappers=YESmax_clients=10max_per_ip=1
La configuration du fichier "vsftpd.conf" est terminée.
Créez le répertoire "[/etc/vsftpd]" et le fichier "login.txt".
#mkdir /etc/vsftpd#touch /etc/vsftpd/login.txt
Ajouter l'utilisateur "ftpadmin" et le mot de passe "password" dans le fichier "login.txt".
#vim /etc/vsftpd/login.txtftpadminpassword <= Faîtes un retour chariot après le mot de passe !
Changez les droits sur le fichier "/etc/vsftpd/login.txt".
#chmod 600 /etc/vsftpd/login.txt
Créez la base de données "PAM" des utilisateurs autorisés.
#db5.1_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
Changez les droits sur le fichier "/etc/vsftpd/login.db".
#chmod 600 /etc/vsftpd/login.db
L'objectif est "d'emprisonner" l'utilisateur "ftpadmin" dans le répertoire "/var/www".
#useradd -g www-data -d /var/www -s /bin/false ftpadmin#passwd ftpadmin#usermod -a -G www-data ftpadmin
Créez le répertoire [/etc/vsftpd/user_conf].
#mkdir /etc/vsftpd/user_conf
Créez le fichier "/etc/vsftpd/user_conf/ftpadmin" pour l'utilisateur "ftpadmin".
#touch /etc/vsftpd/user_conf/ftpadmin#vim /etc/vsftpd/user_conf/ftpadmindownload_enable=YESanon_world_readable_only=NOwrite_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESchmod_enable=YESvirtual_use_local_privs=YESforce_dot_files=NOhide_ids=YESlocal_root=/var/wwwguest_username=ftpadmin
Modifiez le propriétaire, le groupe et les droits sur le répertoire [/var/www].
#chown -R ftpadmin:www-data /var/www#chmod -R 775 /var/www
PAM (Pluggable Authentification Modules) permet de changer la politique d'authentification sans avoir à recompiler le programme. Il suffit de modifier un fichier de configuration. Pour le serveur VSFTPD modifiez le fichier "/etc/pam.d/vsftpd" de la manière suivante :
#vim /etc/pam.d/vsftpd# Standard ehaviour for ftpd(8).# auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers ...# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.# Standard pam includes# @include common-account# @include common-session# @include common-auth# @include required pam_shells.soauth required /lib/x86_64-linux-gnu/security/pam__userdb.so db=/etc/vsftpd/loginaccount required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login
Redémarrez le serveur VSFTPD par la commande :
#/etc/init.d/vsftpd restart
Le serveur VSFTPD est prêt !
Le test peut se faire directement sur le serveur avec la commande "ftp".
#ftp debianConnected to debian220 Bienvenue sur Debian.Name (debian:root): <= Tapez ftpadmin331 Please specify the password.Password: <= Tapez le mot de passe de ftpadmin500 OOPS: vsftpd: refusing to run with writable root inside chroot()Login failed.ftp>
Si vous obtenez ce message d'erreur, vous pouvez le régler de la manière suivante :
#echo "deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib" >> \/etc/apt/sources.list.d/wheezy-updates.cyconet.list#apt-get update#apt-get install -t wheezy-updates debian-cyconet-archive-keyring vsftpd#echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf#/etc/init.d/vsftpd restart
Réessayez la connexion avec la commande "ftp".
Le serveur ftp fonctionne ! Vous pouvez bien sûr utiliser un logiciel comme "FIleZilla".