Ce guide vous montre comment installer, configurer et utiliser un serveur FTP de manière sécurisée.
En mode actif, c’est le client FTP qui détermine le port à utiliser pour permettre le transfert des données. Ainsi, pour que l’échange des données puisse se faire, le serveur FTP initialisera la connexion de son port de données (port 20) vers le port spécifié par le client. Le client devra alors configurer son pare-feu pour autoriser les nouvelles connexions entrantes afin que l’échange des données se fasse. (Source)
En mode passif, le serveur FTP détermine lui-même le port de connexion à utiliser pour permettre le transfert des données (data connexion) et le communique au client. La plage de port est variable de 1024 à 65535. En cas de présence d’un pare-feu devant le serveur, celui-ci devra être configuré pour autoriser la connexion de données. L’avantage de ce mode est que le serveur FTP n’initialise aucune connexion. Ce mode fonctionne sans problème avec des clients derrière une passerelle NAT. Dans les nouvelles implémentations, le client initialise et communique directement par le port 21 du serveur ; cela permet de simplifier les configurations des pare-feu serveur. (Source)
La configuration réseau Network Address Translation (NAT) n’est pas la plus adaptée avec les VMs. En effet :
30000-30100) et dit au client de l’utiliser ;On peut ajouter une seconde interface réseau NAT au besoin, avec redirection de ports pour garder des configurations précédentes, mais ce n’est pas nécessaire.
ip addr showet noter l’adresse IP.
vsftpd :sudo apt install vsftpd# Bonne habitude à prendre : faire un backup du fichier original de config !
# Le remettre en place en cas de pb : sudo cp /etc/vsftpd.conf_bk /etc/vsftpd.conf
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_bk
sudo vim /etc/vsftpd.confConfigurer le serveur FTP avec les paramètres
suivants (man vsftpd) :
#adresse IPv4 du serveur (renseigner la votre)
pasv_address=X.X.X.X
listen=YES
listen_ipv6=NO
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50000
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
xferlog_enable=YES
log_ftp_protocol=YES
allow_writeable_chroot=YESConsulter la documentation de la configuration pour en apprendre plus sur chacune de ces options
sudo systemctl restart vsftpd
sudo systemctl status vsftpdPour debug en cas d’erreurs, lancer le serveur ftp en standalone (et non sous forme de service géré par
systemd) :sudo /usr/sbin/vsftp /etc/vsftp.conf. Vous verrez les erreurs s’afficher sur stdout. Si rien ne s’affiche, c’est que la configuration est correcte.
.ssh/config :
lftp:sudo apt install lftp
IP=<ip de votre VM>
lftp -u paul,paul "ftp://$IP"
helpput :put /chemin/local/fichier.txt -o /chemin/distant/fichier.txtget :get /chemin/distant/fichier.txt -o /chemin/local/fichier.txtScripter (exemple) :
#!/bin/bash
# Configuration
HOST="ftp.exemple.com"
USER="mon_utilisateur"
PASS="mon_motdepasse"
LOCAL_DIR="/chemin/local"
REMOTE_DIR="/chemin/distant"
# Commande lftp
lftp -f "
open $HOST
user $USER $PASS
lcd $LOCAL_DIR
cd $REMOTE_DIR
# Copier tous les fichiers .txt du dossier local vers le serveur
mput *.txt
bye
"Le protocole FTP classique est à proscrire en production, car les mots de passe (et fichiers secrets) circulent en clair sur le réseau (comme une basic auth). Utiliser FTPS ou SFTP.
Mesures de sécurité importantes à prendre en compte :
openssl :sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
sudo chmod 600 /etc/ssl/private/vsftpd.key/etc/vsftpd.conf)
:# vsftpd.conf sécurisé
# IP de la VM (à renseigner)
pasv_address=X.X.X.X
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
# => TLS pour FTPS <=
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
# Mode passif
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30100lftp -u "$USER","$PASSWORD" "ftp://$IP"
set ssl:verify-certificate no (car certificat auto-signé, lftp refuse par défaut)
lsVérifiez que vous êtes bien chrooté (impossible de sortir de votre home). Essayez avec Filezilla, logiciel open source FTP très commode (avec Connexion Explicite sur TLS si disponible).