Table des matières

, ,

Installer le serveur vsftpd

# Installer le serveur
apt-get update && apt-get install vsftpd
 
# Vérifier l'état du service
systemctl status vsftpd.service

Configuration

Le format du fichier de configuration est relativement simple, la ligne est soit :

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

Utilisateur chrooté

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

Pare-feu

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

Références