Partie V. Installer le serveur VSFTPD
Précédent ACCUEIL Suivant

V. INSTALLER LE SERVEUR VSFTPD

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.

5.1 - Les paquetages

Vous devez installer les paquets "vsftpd" et "db5.1-util".

# aptitude install vsftpd db5.1-util

5.2 - Le fichier de configuration "vsftpd.conf"

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.conf
  listen=YES
  anonymous_enable=NO
  local_enable=YES
  write_enable=NO
  local_umask=022
  anon_upload_enable=NO
  anon_mkdir_write_enable=NO
  dirmessage_enable=YES
  use_localtime=YES
  xferlog_enable=YES
  connect_from_port_20=YES
  chown_uploads=NO
  chown_username=nobody
  xferlog_file=/var/log/vsftpd.log
  xferlog_std_format=YES
  async_abor_enable=NO
  ascii_upload_enable=NO
  ascii_download_enable=NO
  ftp_banner=Bienvenue sur Debian.
  chroot_local_user=YES
  allow_writeable_chroot=YES
  secure_chroot_dir=/var/run/vsftpd/empty
  userlist_enable=YES
  user_config_dir=/etc/vsftpd/user_conf
  pam_service_name=vsftpd
  rsa_cert_file=/etc/ssl/private/vsftpd.pem
  tcp_wrappers=YES
  max_clients=10
  max_per_ip=1

La configuration du fichier "vsftpd.conf" est terminée.

5.3 - Créer l'utilisateur "ftpadmin"

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.txt
  ftpadmin
  password    <= 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

5.4 - Associer l'utilisateur "ftpadmin" au dossier Web "/var/www"

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/ftpadmin
  download_enable=YES
  anon_world_readable_only=NO
  write_enable=YES
  anon_upload_enable=YES
  anon_mkdir_write_enable=YES
  anon_other_write_enable=YES
  chmod_enable=YES
  virtual_use_local_privs=YES
  force_dot_files=NO
  hide_ids=YES
  local_root=/var/www
  guest_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

5.5 - Configurer "PAM"

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.so
  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

Redémarrez le serveur VSFTPD par la commande :

# /etc/init.d/vsftpd restart

Le serveur VSFTPD est prêt !

5.6 - Tester le serveur VSFTPD

Le test peut se faire directement sur le serveur avec la commande "ftp".

# ftp debian
  Connected to debian
  220 Bienvenue sur Debian.
  Name (debian:root):        <= Tapez ftpadmin
  331 Please specify the password.
  Password:                           <= Tapez le mot de passe de ftpadmin
  500 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".

Figure 58 - FileZilla et VSFTPD

FileZilla et VSFTPD


Auteurs : Eddy et Stéphane Maas / 2013-2023
Précédent ACCUEIL Suivant