[vsftpd] règles iptables (résolu)

Applications, problèmes de configuration réseau
cyril.m.85
Hankyu
Messages : 24
Inscription : mer. 01 déc. 2010, 15:10

[vsftpd] règles iptables (résolu)

Message par cyril.m.85 »

Bonjour,

J'ai besoin de votre aide car je ne parviens pas à paramétrer correctement mes règles iptables pour utiliser vsftpd. Comme vous pouvez le voir ci-dessous avec mon journal d'événements de Filezilla, la connexion se fait bien mais la commande LIST échoue. Le résultat est le même suivant que je me connecte depuis un poste de mon réseau local ou depuis l'extérieur derrière ma box (sur laquelle j'ai redirigé les ports 20 et 21 vers mon serveur)
Statut : Connexion à [mon ip]:21...
Statut : Connexion établie, attente du message d'accueil...
Réponse : 220 (vsFTPd 3.0.2)
Commande : USER [mon user]
Réponse : 331 Please specify the password.
Commande : PASS ********
Réponse : 230 Login successful.
Commande : SYST
Réponse : 215 UNIX Type: L8
Commande : FEAT
Réponse : 211-Features:
Réponse : EPRT
Réponse : EPSV
Réponse : MDTM
Réponse : PASV
Réponse : REST STREAM
Réponse : SIZE
Réponse : TVFS
Réponse : UTF8
Réponse : 211 End
Commande : OPTS UTF8 ON
Réponse : 200 Always in UTF8 mode.
Statut : Connecté
Statut : Récupération du contenu du dossier...
Commande : PWD
Réponse : 257 "/home/[mon user]"
Commande : TYPE I
Réponse : 200 Switching to Binary mode.
Commande : PASV
Réponse : 227 Entering Passive Mode ([mon ip],186,42).
Commande : LIST
Erreur : La connexion des données ne peut pas être établie : ETIMEDOUT - Tentative de connexion expirée
Erreur : Délai d'attente expiré
Erreur : Impossible de récupérer le contenu du dossier
Pour l'installation et la configuration initiale d'iptables je me suis appuyé sur cette page du wiki ainsi que celle-ci.

Voici ma configuration actuelle :

Code : Tout sélectionner

$ cat /etc/iptables/iptables.rules
# Generated by iptables-save v1.4.21 on Wed Oct 15 00:07:22 2014
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [38:5908]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A TCP -p tcp -m tcp --dport 21 -j ACCEPT
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
# Completed on Wed Oct 15 00:07:22 2014

$ sudo iptables -nvL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   81  5424 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 ctstate NEW
    3  1246 UDP        udp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
    1    40 TCP        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02 ctstate NEW
    3  1246 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 48 packets, 5328 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination
    1    40 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination
n.b :
  • Mes connexions ssh sur le port 22 et http sur le port 80 fonctionnent sans soucis.
    Lorsque je désactive iptables, le problème avec la commande LIST n'apparaît pas et je peux utiliser normalement ftp avec Filezilla, depuis mon réseau local aussi bien que depuis l'extérieur.
Dernière modification par cyril.m.85 le mer. 15 oct. 2014, 22:39, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [vsftpd] règles iptables

Message par benjarobin »

Bonjour,
Tout ce que je peux te dire c'est que tu as configuré le tout très très bizarrement ton par feu...
Un peu de lecture : post135954.html#p135954
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
cyril.m.85
Hankyu
Messages : 24
Inscription : mer. 01 déc. 2010, 15:10

Re: [vsftpd] règles iptables

Message par cyril.m.85 »

Merci pour ta réponse benjarobin,

J'ai suivi tes conseils et voici ma nouvelle configuration :

Code : Tout sélectionner

# cat iptables.rules
# Generated by iptables-save v1.4.21 on Wed Oct 15 22:04:42 2014
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eno1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eno1 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eno1 -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -i eno1 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -i eno1 -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eno1 -m conntrack ! --ctstate INVALID -j ACCEPT
-A OUTPUT -o eno1 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o eno1 -p tcp -m tcp --sport 20 -j ACCEPT
-A OUTPUT -o eno1 -p tcp -m tcp --sport 21 -j ACCEPT
-A OUTPUT -o eno1 -p tcp -m tcp --sport 80 -j ACCEPT
COMMIT
# Completed on Wed Oct 15 22:04:42 2014

# iptables -nvL
Chain INPUT (policy DROP 3 packets, 152 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  308 21018 ACCEPT     all  --  eno1   *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  eno1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     tcp  --  eno1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:20
    1    52 ACCEPT     tcp  --  eno1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:21
    0     0 ACCEPT     tcp  --  eno1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
  218 23469 ACCEPT     all  --  *      eno1    0.0.0.0/0            0.0.0.0/0            ! ctstate INVALID
    0     0 ACCEPT     tcp  --  *      eno1    0.0.0.0/0            0.0.0.0/0            tcp spt:22
    0     0 ACCEPT     tcp  --  *      eno1    0.0.0.0/0            0.0.0.0/0            tcp spt:20
    0     0 ACCEPT     tcp  --  *      eno1    0.0.0.0/0            0.0.0.0/0            tcp spt:21
    0     0 ACCEPT     tcp  --  *      eno1    0.0.0.0/0            0.0.0.0/0            tcp spt:80
Hélas le résultat est exactement le même, j'ai donc toujours mon problème :
[...]
Commande : PASV
Réponse : 227 Entering Passive Mode ([mon ip],110,167).
Commande : LIST
Erreur : Délai d'attente expiré
Erreur : Impossible de récupérer le contenu du dossier
n.b : j'ai prévu de m'occuper de ip6tables quand j'aurai réglé ce problème

:::EDIT:::
En cherchant j'ai finalement trouvé une solution, qui j'espère est la plus appropriée : charger le module nf_conntrack_ftp qui ne l'était pas. Merci.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [vsftpd] règles iptables (résolu)

Message par benjarobin »

Oui c'est la bonne solution. Comme je n'ai pas se serveur FTP sur mon PC je ne savais pas ceci, je croyais que ce module était chargé par défaut.
L'automatisation du chargement du module devrait être fait via un fichier de conf dans /etc/modules-load.d/
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
cyril.m.85
Hankyu
Messages : 24
Inscription : mer. 01 déc. 2010, 15:10

Re: [vsftpd] règles iptables (résolu)

Message par cyril.m.85 »

C'est tout à fait ça, je me suis fait un fichier /etc/modules-load.d/mes_modules.conf qui contient le nom des modules chacun sur une ligne (pour le moment je n'ai que nf_conntrack_ftp).
Merci encore, il faudra que je prenne le temps de lire ces pages que tu as cité et qui me semblent très intéressantes.
Répondre