# Installer le serveur apt-get update && apt-get install vsftpd # Vérifier l'état du service systemctl status vsftpd.service
/etc/vsftpd.conf
;man -S 5 vsftpd.conf
;Le format du fichier de configuration est relativement simple, la ligne est soit :
option=valeur
(sans espaces). Par défaut le serveur écoute sur l'ensemble des interfaces. Il est possible de restreindre le service à une interface en particulier. Dans mon cas je souhaite restreindre le service au réseau interne (interface int0) :
# Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=YES listen_port=21 listen_address=192.168.33.10
Dans le fichier de configuration du serveur vsftpd :
# Compte utilisateur non privilégié nopriv_user=ftpsecure
Définir une liste d'utilisateurs pour lesquels un chroot est actif
ftpsecure
Liste des comptes utilisateurs locaux non autorisés pour le service ftp /etc/ftpusers
Créer l'utilisateur :
useradd ftpsecure --home-dir /srv/ftp/ --shell /usr/bin/nologin
Redémarrer le service pour que les modifications apportées au fichier de configuration soient bien prises en compte :
systemctl restart vsftpd.service
La gestion correcte du trafic FTP nécessite l'usage d'un helper pour le suivit des ouvertures dynamiques des ports.
Pour ajouter l'helper à la table “ipfilter” depuis nft en mode interactif :
add ct helper ipfilter ftp-standard { type "ftp" protocol tcp; }
add chain ipfilter PRE { type filter hook prerouting priority filter; }
insert rule ipfilter PRE tcp dport 21 ct helper set "ftp-standard"
Ajouter la règle pour la gestion du canal de contrôle FTP, notez que pour cette règle conntrach fonctionne sans utilisation de l'helper
insert rule ipfilter inbound position 12 iif "int0" tcp dport 21 ct state new,established counter accept
Après cette règle on accepte les paquets de l'helper “ftp”
insert rule ipfilter inbound position 12 ct helper "ftp" accept