Installer un serveur FTP (vsftpd)

Introduction

Le NAS de Maxtor propose par défault le partage de fichiers Windows avec un serveur Samba. Cependant, pour une personne qui souhaite accéder aux fichiers de son NAS depuis Internet, ce partage de fichiers ne suffit plus. Il est donc intéressant de pouvoir installer un serveur FTP sur le MSSII. Dans cet article, nous considèrerons que vous avez déjà obtenu un accès shell à votre machine (en utilisant un firmware alternatif). Vous disposez peut-être déjà d'un serveur FTP mais celui ci peut ne pas être assez sécurisé ou complet au niveau des fonctionnalités.

vsftpd est le serveur FTP le plus sécurisé actuellement. Aucune faille n'a été trouvée à ce jour et il est utilisé sur de très gros sites FTP, tels que ceux des distributions RedHat et FreeBSD par exemple. Son auteur, un expert en sécurité informatique, l'a programmé en prenant compte de tout. Dans l'article, je vous expliquerai comment configurer le serveur pour obtenir une connexion cryptée en SSL. L'auteur de vsftpd déconseille son utilisation car le module de cryptage utilise OpenSSL, pour lequel de nouvelles failles sont régulièrement découvertes.

Installer vsftpd

Tout d'abord, vous devrez récuperer l'exécutable de vsftpd pour le MSSII et le placer dans le répertoire :

/sbin/

Ensuite, vous devrez créer un fichier de configuration comme décrit dans la partie suivante (vous pouvez vous inspirer du fichier exemple). 

Fichier de configuration

En général, les fichiers de configuration des programmes sont situés dans le répertoire 'etc' de la machine. Nous suivrons cette règle en créant le fichier de configuration de vsftpd à l'adresse suivante :

/etc/vsftpd.conf

Nous allons maintenant voir les options à mettre dans le fichier de configuration.

# Runs standalone
listen=YES

L'option listen permet de lancer le serveur en mode démon (service). Il est possible de le lancer en utilisant xinetd en mettant cette option à NO.

# Listening port (default : 21)
listen_port=21

L'option listen_port définit le port sur lequel nous nous connecterons pour accéder au serveur FTP. Par défaut, ce port est le 21. Derrière un routeur, il faudra rediriger ce port vers l'IP du MSSII.

Pour pouvoir utiliser le serveur FTP depuis Internet à travers un routeur, nous devons mettre le serveur en mode passif.

pasv_enable=YES

L'option pasv_enable active le mode passif. 

pasv_min_port=26000
pasv_max_port=26010

Les options pasv_min_port et pasv_max_port définissent la plage de ports qui serviront pour le transfert de données en mode passif. Pour chaque port alloué, vous pourrez effectuer un transfert de données. Attention, ces ports aussi devront être redirigées vers l'adresse IP du MSSII.

pasv_address=XXX.XXX.XXX.XXX

Pour l'option pasv_address, vous devrez entrer votre adresse IP Internet (pas celle de votre réseau local). Cela permet au serveur FTP d'indiquer au client sur quel IP se connecter en passif.

pasv_promiscuous=YES
port_promiscuous=YES

Les options pasv_promiscuous et port_promiscuous servent à activer le support FXP (si vous en avez besoin ;) ).

# SSL Support
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES

Les options précédentes servent à activer le support du cryptage SSL. L'option force_local_logins_ssl force l'utilisateur à envoyer les informations de connexions en SSL. Si votre source vous le permet, vous pouvez aussi activer le SSL pour les transferts de fichiers avec force_local_data_ssl.

ssl_tlsv1=NO
ssl_sslv2=YES
ssl_sslv3=YES

Ces options activent le support SSL mais bloque le support TLS. 

rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem

Le chemin vers votre certificat SSL. Pour générer un fichier SSL, consultez ce tutoriel.

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO

On désactive l'accès anonyme au serveur FTP. 

# Uncomment this to allow local users to log in.
local_enable=YES

On active les utilisateurs de la machine comme utilisateurs du serveur FTP. 

# Uncomment this to enable any form of FTP write command.
write_enable=YES

L'option write_enable est à desactiver uniquement si l'on souhaite faire un serveur en lecture seule. 

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=000

Ce masque ajoute les fichiers transférés avec les droits 777 (lecture + écriture + exécution). Si vous en avez besoin, vous pouvez restreindre ces droits. 

# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES

Active les messages lorsque le client change de répertoire. 

# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=NO

Lorsque l'option est désactivée, on ne tient pas compte du port d'origine de la connexion de données. 

# You may fully customise the login banner string:
ftpd_banner="Bienvenue sur mon serveur"

ftpd_banner contient le message à afficher lors de la connexion d'un client au serveur FTP. 

chroot_local_user=YES
secure_chroot_dir=/repertoire/de/mes/fichiers/FTP

Ces options permettent de rediriger l'utilisateur vers un répertoire spéciale à sa connexion et de l'y contenir. Seul un utilisateur root peut explorer toute l'arborescence. 

# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES

L'option ls_recurse_enable active le listing récursif des répertoires, une fonction utilisée par certains clients FTP pour limiter le trafic réseau.

Votre fichier de configuration est maintenant prêt. Il ne vous reste plus qu'à configurer le MSSII pour que vsftpd se lance à chaque démarrage du NAS. 

Activation au démarrage 

Pour que vsftpd se lance au démarrage du boitier, il faut modifier le fichier des commandes de démarrage personnalisées :

/etc/init.d/rc.mod_startup

Ajoutez la ligne suivante à la fin du fichier :

/sbin/vsftpd &