TP 12 · Partie 1/2 · BTS CIEL · Réseaux et services

Corrigé : serveur FTP vsftpd sur Kali Linux

Réponses aux six questions de synthèse du TP. Essayez d’y répondre vous-même avant de lire le corrigé.

01Port du serveur FTP

Sur quel port écoute un serveur FTP ? Vérifiez-le avec ss -tlnp | grep vsftpd.

Un serveur FTP écoute sur le port 21/TCP : c’est le port de contrôle, par lequel passent les commandes (USER, PASS, LIST…). Les données des fichiers circulent sur une autre connexion (port 20 en mode actif, port éphémère en mode passif).

$ ss -tlnp | grep vsftpd
LISTEN 0 32 *:21 *:* users:(("vsftpd",pid=…,fd=3))

Dans la sortie, *:21 signifie que vsftpd attend les connexions sur toutes les interfaces, port 21.

02write_enable et anon_upload_enable

Quelle différence y a-t-il entre write_enable et anon_upload_enable ?

OptionRôle
write_enable=YESAutorise toute commande d’écriture dans vsftpd (upload, création, suppression, renommage). Sans elle, le serveur est en lecture seule pour tout le monde, y compris les utilisateurs locaux.
anon_upload_enable=YESAutorise spécifiquement les anonymes à déposer des fichiers.

Les deux sont nécessaires pour qu’un anonyme puisse déposer un fichier : write_enable ouvre l’écriture en général, anon_upload_enable l’étend aux anonymes.

Aussi à retenirLe dossier cible doit être accessible en écriture à l’utilisateur ftp (d’où chown ftp:ftp /srv/ftp/anonymous).

03Racine anonyme en écriture

Pourquoi vsftpd refuse-t-il une racine anonyme accessible en écriture ?

Le visiteur anonyme est enfermé (chroot) dans /srv/ftp, qui devient sa racine /. Si cette racine est modifiable par lui, des attaques deviennent possibles : il pourrait y créer ou remplacer des fichiers qui seront utilisés par le système, et sortir de la prison chroot en exploitant ce dossier.

Par sécurité, vsftpd refuse donc de démarrer la session avec l’erreur 500 OOPS: vsftpd: refusing to run with writable root inside chroot().

SolutionGarder la racine /srv/ftp en lecture seule et créer un sous-dossier anonymous, appartenant à ftp, où l’écriture est permise.

04local_umask=022

Que signifie local_umask=022 ? Quels droits auront les fichiers déposés ?

L’umask est un masque qui retire des droits à la création. 022 retire l’écriture au groupe et aux autres.

CréationDroits de baseMoins umask 022Résultat
Fichier666 (rw-rw-rw-)022644 (rw-r--r--)
Dossier777 (rwxrwxrwx)022755 (rwxr-xr-x)

Les fichiers déposés par les utilisateurs locaux auront donc les droits 644 : le propriétaire lit et écrit, tous les autres lisent seulement.

Cette option ne concerne que les utilisateurs locaux. Pour les anonymes, c’est anon_umask.

05chroot_local_user=YES

Que permet chroot_local_user=YES, et quel risque évite-t-il ?

Cette option enferme chaque utilisateur local dans son dossier personnel : ce dossier devient sa racine / et il ne peut pas remonter plus haut.

Sans elle, un utilisateur connecté pourrait parcourir tout le système de fichiers autorisé par ses droits Linux : /etc, /var, les dossiers des autres utilisateurs… Il pourrait lire des fichiers de configuration ou des données qui ne le concernent pas, ce qui facilite une attaque.

AttentionAvec chroot_local_user=YES, le dossier personnel de l’utilisateur ne doit pas être inscriptible, sinon vsftpd refuse la session (même erreur qu’à la question 3). On crée un sous-dossier inscriptible, ou on ajoute allow_writeable_chroot=YES (à éviter).

06Wireshark et chiffrement

Qu’avez-vous vu dans Wireshark ? Quelle solution proposeriez-vous à une entreprise ?

Avec le filtre ftp, on lit en clair les commandes USER ftp1 et PASS … : l’identifiant et le mot de passe sont visibles, ainsi que les noms de fichiers et les contenus transférés. Toute personne qui capture le trafic sur le réseau peut les récupérer.

Pour une entreprise, il faut chiffrer les échanges :

  • SFTP (transfert de fichiers par SSH, port 22) : la solution la plus courante. Elle n’utilise pas vsftpd mais OpenSSH, un seul port à ouvrir, et permet l’authentification par clé.
  • FTPS (FTP sur TLS) : on garde vsftpd avec ssl_enable=YES et un certificat. Il demande plusieurs ports en mode passif, ce qui complique le pare-feu.
À retenirOn désactive FTP en clair, on impose SFTP ou FTPS, et on supprime l’accès anonyme sauf besoin explicite.