ABSTRACT

Cet article décrit l’installation et la configuration d’un serveur FTP (vsftpd) sous une machine Linux CentOS7 sous VirtualBox. La configuration réseau n’est pas abordée ici. On considère que les différents modes réseau de VirtualBox sont compris et désormais acquis.

CREATION DE LA MACHINE VIRTUELLE

On suppose que virtualBox est déjà installée. Sinon, télécharger VirtualBox sur votre poste WINDOWS et lancer le programme d’installation.

Créer une nouvelle machine virtuelle:

  • Fichier / Importer une application virtuelle
  • Choisir (depuis la clé USB fournie par le formateur) le fichier CentOS-Gnome qui est de type “Open Virtualization Format Archive”
  • Changer le paramètre “nom” à “Serveur FTP » et cliquer sur “importer”
  • Allumer la machine virtuelle. se connecter “root” (mot de passe “reverse”
  • Noter que pour sortir le curseur souris de la machine virtuelle, il faut appuyer sur la touche “Ctrl” de droite
  • Choisir “Français” comme langue par défaut
  • Supprimer le clavier anglais des sources de saisie pour ne laisser que le clavier français.
  • Pour l’instant, ne pas ajouter de compte

VERIFICATIONS et SETUP

  • le clavier est bien un clavier français
  • l’accès à internet fonctionne
  • repérer l’adresse IP de la machine:
    • Menu: Application / Terminal
    • Taper la commande “ifconfig -a”
  • Fixer comme nom de host “ftpserver.cfa.re”:
    • en éditant le fichier /etc/hostname
    • en modifiant le fichier /etc/hosts de la manière suivante:
      127.0.0.1  localhost localhost.localdomain serveurftp.cfa.re
      ::1  localhost localhost.localdomain serveurftp.cfa.re

    • OU BIEN en utilisant la commande « hostnamectl »
  • Désactiver momentanément le pare-feu iptables: “service iptables stop”
  • Désactiver momentanément SELINUX (setenforce Permissive) ou modifier le fichier /etc/selinux/config pour une mise à jour définitive.

INSTALLATION DU SERVEUR FTP

  • Vérifier que l’installateur de packets (yum) ne tourne pas déjà (pour d’éventuelles mises à jour automatiques par exemple). Si c’est le cas, tuer le processus par un “kill -9 <numero_de_processus>”.
  • Récupération et installation du package client ftp par: “yum install ftp”
  • Récupération et installation du package serveur vsftpd par: “yum install vsftpd”
  • Démarrer le service vsftpd par “service vsftpd start”
  • Faire en sorte que le service démarre automatiquement à chaque démarrage de la machine: “chkconfig vsftpd on”
  • Vérifier par un “ps-ef | grep vsftpd” que vsftpd tourne bien

FICHIER DE CONFIGURATION PRINCIPAL

Ce fichier s’appelle “/etc/vsftpd/vsftpd.conf”

On passe ici en revue les différents éléments de configuration proposés par le fichier:

 

anonymous_enable=YES

Permet la connexion anonyme (anonymous/anonymous) au serveur FTP. Le répertoire par défaut offert aux connexions anonymes est /var/ftp qui contient un sous répertoire pub. Il peut être changé par l’utilisation de la directive “anon_root”.

On notera que quelques soient les droits des fichiers déposés dans ce répertoire pub, il est impossible par défaut au user anonymous de supprimer ces fichiers.

 

local_enable=YES

Permet la connexion des utilisateurs définis sur la même machine que le serveur FTP.

 

write_enable=YES

Permet l’écriture (le dépôt) de fichier (pour un utilisateur autre que l’utilisateur ‘anonymous’ ou l’utilisateur ‘root’). Attention si SELINUX est positionné à enforce, même un write_enable à YES ne permettra pas l’écriture.

 

local_umask=022

C’est le masque (AND NOT) appliqué aux permissions 666 pour les fichiers et 777 pour les répertoires, et ce pour les utilisateurs locaux, c’est à dire pour les utilisateurs qui ont un compte sur la machine offrant le service FTP.

Exemple:

  • si local_mask=022 alors les fichiers seront créés avec les permissions
    666 & !022 soit 110.110.110 & !000.010.010 <=> 110.110.110 & 111.101.101
    ce qui donne: 110.100.100

 

anon_upload_enable=YES

Permet l’upload anonyme de fichiers. Attention, il faut que le répertorie d’upload soit en mode “writable” pour le user ftp et que la directive globale vue plus haut de write_enable soit aussi et préalablement ixée à YES.

On écrira donc:

  • cd /var/ftp
  • chown ftp.ftp ./pub

 

anon_mkdir_write_enable=YES

Permet au user “anonymous” de créer des répertoires et des sous-répertoires dans le répertoire pub sous le répertoire de connexion ftp anonyme qui est par défaut /var/ftp. Il faut que les droits soient fixés comme dans le paragraphe ci-dessus concernant le user ftp.

 

dirmessage_enable=YES

Lorsque cette option est positionnée à YES, le contenu du fichier .message situé dans le répertoire dans lequel le user se positionne ou repositionne est automatiquement affiché (au moment justement du changement de répertoire).

 

xferlog_enable=YES

Avec cette option, les logs de connexion et de transfert de fichiers sont activés vers le fichier de logs spécifié par la directive vsftpd_log_file qui est par défaut le fichier /var/log/xferlog

 

connect_from_port_20=YES

S’assure que toutes les requêtes de data arriveront bien sur le port 20

 

chown_uploads=YES
chown_username=<quelqu’un>

Ces deux directives indiquent que les fichiers uploadés par le user anonymous vont appartenir au user “quelqu’un”

 

xferlog_file=/var/log/xferlog

Définit le fichier de log lorsque l’option xferlog_enable est activée.

 

xferlog_file=/var/log/xferlog

On trouve ici le nom du fichier log enregistrant les requêtes et erreurs de transfert.

 

idle_session_timeout=600

Temps maximum d’attente de la réponse à une commande.

 

data_connextion_timeout=120

Temps maximum d’attente de reprise lorsqu’un transfert de donnée s’ interrompt

 

nopriv_user=ftpsecure

Il s’agit ici du nom de user sans aucun privillège -nopriv). Cet utilisateur est l’utilisateur le plus “secure”. Il est recommandé mais non obligatoire d’en créer un.

 

async_abor_enable=YES

Permet d’interrompre des transferts de manière asynchrone, c’est à dire bien après le lancement de la commande de transfert. Cette directive est dangereuse.

 

ascii_upload_enable=YES

ascii_download_enable=YES

directives permettant le transfert ascii. En pratique, ces directives ne sont presque plus utilisées aujourd’hui. On transfère tout en binaire.

 

ftpd_banner=Bienvenue sur le serveur FTP du CFA

Bannière d’accueil

 

deny_email_enable=YES

Si cette directive existe, alors quand on se loggue en anonymous, on doit donner son adresse-mail comme mot de passe et cette directive indique que le serveur FTP peut refuser les connexions anonymes dont le password est défini dans le fichier suivant:

 

banned_email_file=/etc/vsftpd/banned_email

Fichier contenant les mot de passe (email) interdits pour connexion anonyme.

 

chroot_local_users=YES

Avec cette directive, les users locaux (à la machine serveur ftp) sont “chrootés” automatiquement lors de la connexion FTP. Attention, pour ce faire:

  • SELINUX doit être positionné à Permissive
  • le répertoire HOME de l’utilisateur ne doit pas être “writable

 

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

Avec cette directive, si “chroot_local_users” est positionné à YES, alors les users présents dans le fichier “chroot_list_file” NE SONT PAS CHROOTES, et inversement si “chroot_local_users” est positionné à NO, alors les users présents dans chroot_list SONT CHROOTES.

 

ls_recurse_enable=YES

Permet l’utilisation de la commande ls avec l’option R et donc un parcours récursif de l’arborescence

 

listen=NO

Si la directive “listen” est positionnée à YES, alors vsftpd est utilisé en mode standalone.

 

listen_ipv6=YES

Vsftpd peut écouter en STANDALONE des requêtes en ipv6. Et de plus si il écoute en ipv6, il écoute aussi en ipv4. Donc si cette directive est positionnée à YES, il faut absolument que la directive précédente “listen” soit positionnée à NO

 

pam_service_name=vsftpd

Nom du service/système d’authentification

 

userlist_enable=YES

Lorsque cette directive est positionnée à YES, les utilisateurs listés dans le fichier spécifié dans “userlist_file” voient leur accès refusé avant même qu’ils aient envoyé leur mot de passe sur le réseau..

 

tcp_wrappers=YES

Si vsftpd est défini en tant que wrapper dans /etc/xinetd.d ET QUE les directives listen ET listen_ipv6 sont positionnées toutes deux à NO (donc pas de mode standalone), alors les connexions se font par wrapper.

Leave a Comment