Correction de l'accès FTP à partir du PC client Linux avec pare-feu activé
Aujourd'hui, je voudrais partager mon expérience personnelle avec l'accès FTP sous Linux. Grâce aux nouveaux systèmes d'exploitation de Microsoft, que je ne trouve pas adaptés à une utilisation quotidienne, je suis passé à Linux il y a quelques années. J'exécute un serveur FTP sur mon réseau domestique et je n'ai pas pu y accéder à partir de mon PC client en cours d'exécution Linux qui a des règles de pare-feu pour bloquer les connexions entrantes, c'est-à-dire que la politique INPUT est définie sur REJECT dans iptables. Voici comment j'ai résolu le problème.
Je suppose que la politique de SORTIE est ACCEPTÉE sur les machines client et serveur.
Solution n°1. Utiliser le module noyau nf_conntrack_ftp
Le module noyau nf_conntrack_ftp vous permet de débloquer automatiquement l'accès au port requis pour le serveur FTP à chaque fois que vous établissez une connexion. La seule exigence pour ce module est la ligne suivante dans vos règles iptables (il s'agit généralement de /etc/iptables/iptables.rules) sur le PC client :
$IPT -A INPUT -i eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT
Il y a eth0 est le nom de votre périphérique réseau.
Ensuite, vous devez charger le nf_conntrack_ftp s'il n'est pas chargé. Exécutez la commande suivante en tant que root sur le PC client
# modprobe nf_conntrack_ftp
Si votre serveur utilise un port différent de celui par défaut (autre que le port 21), utilisez la commande suivante :
# modprobe nf_conntrack_ftp ports=votre_port
Cela fournira une connexion automatique avec tous les ports requis entre le serveur FTP et votre logiciel client. Cela fonctionne jusqu'à ce que vous redémarriez votre PC.
Pour rendre cette modification permanente, vous devez créer un nouveau fichier texte, /etc/modules-load.d/conntrack_ftp.conf, et ajouter la ligne suivante à ce fichier :
nf_conntrack_ftp
En cas de port de serveur autre que celui par défaut, vous devez créer un fichier supplémentaire, /etc/modprobe.d/conntrack_ftp.conf avec le contenu suivant :
options nf_conntrack_ftp ports=
Cela devrait suffire.
Solution #2. Utiliser une plage de ports passifs fixe
Si vous ne pouvez pas utiliser le module nf_conntrack_ftp, vous pouvez définir une plage de ports fixe pour le logiciel de serveur FTP et l'ouvrir sur le PC client. Par exemple, voici comment procéder pour l'application vsftpd.
- Dans le fichier de configuration de vsftpd, qui est généralement /etc/vsftpd.conf, ajoutez les lignes suivantes:
pasv_min_port=5500. pasv_max_port=6500
Cela doit être fait côté serveur. Après cela, vous devez redémarrer vsftpd.
- Dans vos règles iptables (généralement, il s'agit de /etc/iptables/iptables.rules) sur le PC client, ajoutez la règle suivante:
$IPT -A ENTRÉE -p tcp -s
--dport 5500:6500 -j ACCEPTER - Appliquez les règles iptables comme suit:
# iptables-restore < /etc/iptables/iptables.rules
C'est ça.