logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 13-08-2018 17:17:09

fanch33
Membre
Inscription : 13-08-2018

Probleme proftp bloqué par firewall [RESOLU]

Bonjour à tous.

Comme indiqué sur le titre du post j'ai un problème de configuration de firewall sur mon serveur qui empêche le fonctionnement de proftp. J'ai en effet lever le doute en supprimant celui-ci: c'est bien iptables qui est en cause. Pourtant il me semble avoir configurer ce dernier correctement.

Le symptome de la panne est le suivant: quand j'accède au serveur par l'intermédiaire de mon client FTP (Filezilla), la connexion s'effectue bien mais le contenu de mon dossier ne s'affiche pas. Puis le message suivant apparait au bout de quelques secondes:

Commande :  LIST
Erreur :  Connection interrompue après 20 secondes d'inactivité
Erreur :  Impossible de récupérer le contenu du dossier



En supprimant le firewall tout fonctionne correctement

Voici ici le script iptables actuel (celui-ci a en effet été modifié de nombreuses fois sans pour autant que la panne disparaisse)

/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X

/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P OUTPUT ACCEPT

/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT

/sbin/iptables -t filter -A INPUT -p icmp -j ACCEPT

/sbin/iptables -t filter -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

/sbin/iptables -t filter -A INPUT -p tcp --dport .... -j ACCEPT      # <= port SSH caché

/sbin/iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --sport 5000:5100 --dport 5000:5100 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

sbin/iptables -A INPUT -j DROP



Petite précision: le module nf_conntrack_ftp a bien été chargé. Voila le contenu de /etc/modules:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.


nf_conntrack_ftp ports=20,21



Et, juste histoire de compléter les infos, le contenu de /etc/proftpd/proftpd.conf:

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                         on
# If set on you can experience a longer connection delay in many cases.
IdentLookups                    off

ServerName                      "fplinux.com"
# Set to inetd only if you would run proftpd by inetd/xinetd.
# Read README.Debian for more information on proper configuration.
ServerType                              standalone
DeferWelcome                    off

MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on

TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200

DisplayLogin                    welcome.msg
DisplayChdir                    .message true
ListOptions                     "-l"

DenyFilter                      \*.*/

# Use this to jail all users in their homes
DefaultRoot                     ~

# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell             off

# Port 21 is the standard FTP port.
Port                            21

# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
PassivePorts                  5000 5100

# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress             1.2.3.4

# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances                    30

# Set the user and group that the server normally runs at.
User                            proftpd
Group                           nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                           022  022
# Normally, we want files to be overwriteable.
AllowOverwrite                  on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd              off

# This is required to use both PAM-based authentication and local passwords
# AuthOrder                     mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile                   off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on

# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime.  If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
#SetEnv TZ :/etc/localtime

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>


# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf

#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf

#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
#Include /etc/proftpd/virtuals.conf

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp>
#   User                                ftp
#   Group                               nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias                   anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell           off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients                  10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin                        welcome.msg
#   DisplayChdir                .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask                           022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

RootLogin off

<IfModule mod_facts.c>
    FactsAdvertise off
 </IfModule>

# Include other custom configuration files
Include /etc/proftpd/conf.d/
 



Voila!... Vous avez tout. Si quelqu'un a une idée sur l'endroit ou est situé mon erreur, je prends.

Merci d'avance

Dernière modification par fanch33 (13-08-2018 19:00:04)

Hors ligne

#2 13-08-2018 17:58:44

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Probleme proftp bloqué par firewall [RESOLU]

Le port tcp 20 doit être ouvert coté client si mode ftp actif. C'est le cas ?
Tu as essayé de changer de mode  (passif/actif) dans filezilla ?

Dernière modification par Beta-Pictoris (13-08-2018 18:03:02)

Hors ligne

#3 13-08-2018 18:03:29

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Bonjour Beta-Pictoris.

Tout d'abord merci de t'interesser à mon cas.
Ensuite la réponse est "oui" le port 20 est ouvert sur le poste client. Ensuite j'ai bien essayé e changer de mode dans Filezilla mais rien n'y fait. La seule solution que j'ai trouvé pour l'instant c'est bien de supprimer le script iptables sur le serveur. Mais perso, je trouve ça un peu limite:/:/:/

Dernière modification par fanch33 (13-08-2018 18:05:30)

Hors ligne

#4 13-08-2018 18:21:51

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Probleme proftp bloqué par firewall [RESOLU]

/sbin/iptables -A INPUT -p tcp -m tcp --sport 5000:5100 --dport 5000:5100 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT


Tu peux limiter la plage de ports (--dport 5000:5100) dans proftpd, mais élargit la plage utilisée par le client. Essaye: --sport 1024:65535

Hors ligne

#5 13-08-2018 18:40:49

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

VICTOIRE!.... J'ai trouvé!

Merci à tous ceux qui se sont mobilisé sur le sujet.
Voila la solution: c'est bien sur le serveur qu'il faut agir:

le bon module à charger est en fait ip_conntrack_ftp et non pas ns_conntrack_ftp. On y rajoute également ip_nat_ftp. Qui plus est, il faut  paramétrer le bouzin. Voila comment j'ai procédé:

Modification /etc/modules:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.


ip_conntrack_ftp
ip_nat_ftp



et rajout dans /etc/modprobe.d du fichier "conntrack.conf" dont voici le contenu:

options ip_conntrack_ftp ports=21



Bien entendu faut penser à rajouter ou modifier les ports en fonction des desideratas.

Voila, je laisse la manip pour celui qui rencontre le même problème. Juste une dernière question: comment on fait pour marquer le sujet comme "résolu"?

Hors ligne

#6 13-08-2018 18:44:17

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Hors ligne

#7 13-08-2018 18:59:29

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Merci pour la réponse Alain

Hors ligne

#8 14-08-2018 10:13:41

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

Quelques commentaires pour les lecteurs qui tomberaient sur ce sujet.

fanch33 a écrit :

/sbin/iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT


La règle ci-dessus ne sert à rien puisque la règle plus générale ci-dessous est déjà présente :

fanch33 a écrit :

/sbin/iptables -t filter -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT



fanch33 a écrit :

/sbin/iptables -A INPUT -p tcp -m tcp --sport 5000:5100 --dport 5000:5100 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT


Comme l'a souligné Beta-Pictoris, proftpd ne maîtrise que la plage de ports destination passifs (--dport), pas les ports source que les clients utilisent (--sport).
Les états ESTABLISHED et RELATED sont inutiles car déjà pris en compte par la règle générale citée précédemment.
L'état du premier paquet est NEW seulement si le suivi de connexion FTP (nf_conntrack_ftp) est inopérant (port de la connexion de commande non surveillé ou connexion de commande chiffrée).
L'état du premier paquet devrait être RELATED si le suivi de connexion FTP est opérant (dans ce cas la règle est inutile).

Beta-Pictoris a écrit :

Le port tcp 20 doit être ouvert coté client si mode ftp actif.


Pas vraiment. "Ouvert", ça ne veut rien dire. Une connexion de données active est émise par le serveur depuis son port 20 (en fait le port de commande -1) vers un port arbitraire du client choisi et annoncé par ce dernier. D'ailleurs,

fanch33 a écrit :

nf_conntrack_ftp ports=20,21


Le port 20 n'a rien à faire dans la liste de ports du paramètre "ports". Ce n'est pas un port de commande.

fanch33 a écrit :

le bon module à charger est en fait ip_conntrack_ftp et non pas ns_conntrack_ftp


C'est le même module. ip_conntrack_ftp n'est qu'un alias de nf_conntrack_ftp. Tu peux le vérifier avec

/sbin/modinfo ip_conntrack_ftp


filename: /lib/modules/.../nf_conntrack_ftp.ko
(...)
alias: ip_conntrack_ftp


ou bien dans la liste des modules chargés affichée par lsmod.

fanch33 a écrit :

On y rajoute également ip_nat_ftp


Le module ip_nat_ftp n'est utile que si des règles iptables font du NAT (MASQUERADE, SNAT, DNAT, REDIRECT), ce qui n'est pas le cas ici.

fanch33 a écrit :

rajout dans /etc/modprobe.d du fichier "conntrack.conf" dont voici le contenu:

options ip_conntrack_ftp ports=21


Note : Le paramètre "ports" aurait pu être spécifié dans /etc/modules. Et 21 est déjà la valeur par défaut donc le paramètre est redondant.

Ce qui suit comporte des modifications depuis la publication initiale de ce message

J'attire l'attention sur le fait que l'affectation automatique du suivi de connexion pour les protocoles complexes comme FTP a été désactivée par défaut à partir de je ne sais plus quelle version de noyau entre Jessie et Stretch car considérée comme risquée. Un message est envoyé dans les logs du noyau affichables par dmesg lorsque la première connexion correspondant aux critères de l'affectation automatique est détectée.

Dans Debian 8 avec le noyau 3.16 et le paramètre nf_conntrack_helper=1 par défaut, le message est le suivant :

nf_conntrack: automatic helper assignment is deprecated and it will be removed soon. Use the iptables CT target to attach helpers instead.


Dans Debian 9 avec le noyau 4.9 et le paramètre nf_conntrack_helper=0 par défaut, le message est le suivant :

nf_conntrack: default automatic helper assignment has been turned off for security reasons and CT-based  firewall rule not found. Use the iptables CT target to attach helpers instead.


Pour forcer l'affectation automatique comme avant, il faut passer le paramètre nf_conntrack_helper=1 au module nf_conntrack lors de son chargement ou écrire "1" dans /proc/sys/net/netfilter/nf_conntrack_helper. Mais l'affectation automatique est considérée comme risquée, et la méthode recommandée consiste plutôt à faire une affectation explicite avec la cible CT d'iptables. Par exemple pour les connexions FTP entrantes (sur un serveur FTP ou un routeur) :

iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp


Pour les connexions sortantes (sur un client FTP), la règle doit être créée dans la chaîne OUTPUT.
Note : si on a spécifié le paramètre ports=21 du module nf_conntrack_ftp comme tu l'as fait (ce qui est superflu, je le rappelle), d'après la documentation le helper à associer s'appelle "ftp-21" au lieu de "ftp".

Dernière modification par raleur (17-08-2018 09:31:08)


Il vaut mieux montrer que raconter.

Hors ligne

#9 14-08-2018 18:57:41

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Merci pour les remarques raleur. Elles me permettent en effet d'avancer. C'est en effet toujours bien d'apprendre.

Mais permets moi cependant de rajouter les miennes car j'estime qu'elles sont importantes bien que peut-être un peu durs, je le reconnais:

en ce qui concerne tout d'abord le script iptables:

Effectivement j'avoue que celui-ci était un bricolage dû au fait que, pour résoudre le bogue sous le coup de l'énervement (j'ai bataillé pendant une journée dessus ce qui à mon sens est beaucoup trop pour une installation simple), j'ai copié-collé différentes lignes provenant de différents tutos à droite et à gauche. J'avais repéré en effet les problèmes soulevés aussi bien par Beta-Pictoris que toi-même et j'ai donc corrigé le tir APRES résolution du bogue. J'attire ton attention sur le fait que celui-ci ne provenait pas de là puisque, à l'origine, le script concernant FTP était:


/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 5000:5100 -j ACCEPT
 



Normalement, au vu des docs que l'on trouve sur le protocole FTP et sur proftp en particulier, lesquelles docs ne mentionnent JAMAIS le filtrage iptables si ce n'est par des considérations du type "ouvrez les ports 20,21, etc...), cela aurait dû suffire. Je parle bien entendu des docs ACCESSIBLES et COMPREHENSIBLES au grand public bien entendu. Nous en avons un exemple ici même sur ce site: https://debian-facile.org/doc:reseau:pure-ftpd.

Notes que nulle part, dans ce lien (aisni que dans bien d'autres d'ailleurs), on ne fait mention de nf_conntrack_ftp ni ip_conntrack_ftp. Il m'a fallu consulter  de  nombreux fils de discussions pour trouver l'info. C'est dans des forums en anglais (étant français je ne suis pas spécialement doué pour la langue de shakespeare qui ne m'attire pas plus que cela, n'en déplaise aux esprit bien pensant) que celle-ci se trouvait. J'attire ton attention sur le fait que PLUSIEURS de ces fils de discussion avaient exactement le même problème que moi et résolvait celui-ci par un:

iptables -A INPUT -p tcp -m tcp --dport 1024:65535 --m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT



Bien que mes connaissances en iptables sont empiriques, elles sont cependant suffisamment étendues pour comprendre que cette solution n'en ai pas une puisque si je ne m'abuse elle revient finalement à enlever le filtrage du firewall sur tous les ports de la machine autrement dit à enlever le script iptables ce qui est tout de même un peu limite pour un serveur.



En ce qui concerne ip_conntrack_ftp en tant qu'alias:

Effectivement, j'ai vérifié: c'est bien un alias de nf_conntrack_ftp. Merci de l'info, je ne le savais pas.

Néanmoins, pour une raison x inconnue que j'ai du mal à comprendre avec le même script iptables (toutes versions confondues)  la présence de "nf_conntrack_ftp" dans /etc/modules ne fonctionne pas alors que avec "ip_conntrack_ftp" ça fonctionne sur mon serveur. (VPS chez OVH). Aussi   je ne cherche pas à aller plus loin n'étant pas ingénieur informatique mais simple passionné Linux comme je te le rappelle. j'ai en effet autre chose à f... que de potasser de la doc écrite dans une langue que j'ai du mal à déchiffrer: construire mon site et animer mon blog par exemple. POINT... 

Cependant je constate par ailleurs, que le problème est récurrent (cf les nombreux fils de discussions que l'on trouve ça et là sur le sujet). J'indique donc ma solution pour aider la communauté.


J'attire ton attention sur le fait que j'avais corrigé le tir en ce qui concerne la mention du port 20 puisque dans mon dernier post j'avais écrit

options ip_conntrack_ftp ports=21



Tu vois bien ici que le port 20 n'est pas indiqué.



MORALITE:

Etant donné que beaucoup de gens qui viennent ici sont comme moi, c'est-à-dire des simples particuliers qui bien que passionnés par Debian ne sont pas pour autant des gurus du libre, ce serait bien d'avoir des documentations COMPLETES, COMPREHENSIBLES pour tous et PRECISES afin d'éviter ce genre de perte de temps. Tu ne crois pas?
C'est justement parce que je trouve, tout comme certainement une grande majorité de ceux que j'ai cité dans la phrase précédente, que ça manque que je construit mon blog: il est en effet destiné à délivrer la moindre info que je trouverai en bataillant sur ce merveilleux système Debian, comme je viens justement de le faire ci-dessus. Une fois celui-ci construit je t'autorise sans aucun problème à y venir pour me corriger, dans la mesure ou bien entendu tu source tes infos plutôt que de signaler qu'elle sont "trouvables sur le net", afin d'éviter à mes lecteurs ce que je connais actuellement, c'est à dire une recherche inutile, fastidieuse et accaparante.

Dernière modification par fanch33 (15-08-2018 08:12:33)

Hors ligne

#10 16-08-2018 19:28:26

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Probleme proftp bloqué par firewall [RESOLU]

fanch33, finalement, as tu réussi à épurer tes règles iptables pour autoriser l'accès à ton serveur ftp ? Ça marche en mode ftp actif ou passif ou les 2 ?

Personnellement, j'utilise "firewalld" plutôt que "iptables" depuis des années. C'est le pare-feu, par défaut, que l'on trouve sur les redhat/centos. Mais on peut l'installer sur debian, car il est dans les dépôts.

Mais je pense qu'il est bien de savoir, aussi, configurer "iptables".

Dernière modification par Beta-Pictoris (16-08-2018 19:31:18)

Hors ligne

#11 17-08-2018 10:07:29

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

raleur a écrit :

à l'origine, le script concernant FTP était:

/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 5000:5100 -j ACCEPT
 

Normalement, au vu des docs que l'on trouve sur le protocole FTP et sur proftp en particulier, lesquelles docs ne mentionnent JAMAIS le filtrage iptables si ce n'est par des considérations du type "ouvrez les ports 20,21, etc...), cela aurait dû suffire.


Oui, bien que ce soit trop laxiste car autorisant en permanence toute connexion depuis n'importe où à toute la plage de ports passifs définie dans proftpd au lieu d'utiliser le suivi de connexion FTP pour autoriser uniquement les connexions passives attendues par le serveur FTP.
Pourquoi "aurait dû" ? Cela ne fonctionnait pas ?

fanch33 a écrit :

Je parle bien entendu des docs ACCESSIBLES et COMPREHENSIBLES au grand public bien entendu


Il faut être réaliste : le fonctionnement du protocole FTP, d'iptables et les particularités de la prise en charge du premier par le second ne sont pas à la portée du grand public. Si le grand public veut mettre en place un pare-feu avec prise en charge de FTP, il ne devrait pas utiliser directement iptables mais un pare-feu de plus haut niveau qui gère les règles iptables à sa place comme shorewall, ufw...

fanch33 a écrit :

étant français je ne suis pas spécialement doué pour la langue de shakespeare qui ne m'attire pas plus que cela, n'en déplaise aux esprit bien pensant


La bien-pensance n'a rien à voir là-dedans. Il faut être conscient que l'anglais est de fait la langue de l'informatique et qu'une maîtrise insuffisante de cette langue constitue objectivement un handicap pour cette discipline. Je n'envisage pas une seule seconde de me priver des ressources en anglais et me contenter de celles disponibles en français. Mais c'est toi qui vois.

fanch33 a écrit :

Néanmoins, pour une raison x inconnue que j'ai du mal à comprendre avec le même script iptables (toutes versions confondues)  la présence de "nf_conntrack_ftp" dans /etc/modules ne fonctionne pas alors que avec "ip_conntrack_ftp" ça fonctionne sur mon serveur.


Je suis catégorique, les deux ont le même effet. J'ai vérifié. Tu dois avoir fait un autre changement.
Quelles sont les règles iptables pour les connexions FTP dans ton script actuel ?
Aussi, quelle est la version du noyau et la valeur de /proc/sys/net/netfilter/nf_conntrack_helper ?

fanch33 a écrit :

J'attire ton attention sur le fait que j'avais corrigé le tir en ce qui concerne la mention du port 20 puisque dans mon dernier post j'avais écrit

options ip_conntrack_ftp ports=21


Tu vois bien ici que le port 20 n'est pas indiqué.


Et j'ai expliqué pourquoi à l'attention des lecteurs.

fanch33 a écrit :

ce serait bien d'avoir des documentations COMPLETES, COMPREHENSIBLES pour tous et PRECISES afin d'éviter ce genre de perte de temps. Tu ne crois pas?


Ce que je crois importe peu. Je ne suis pas le grand public, je n'ai pas les mêmes connaissances ni les mêmes attentes.
Par contre je crois qu'iptables demande un investissement conséquent, son utilisation rationnelle et efficace demande de solides connaissances en réseau et du fonctionnement des protocoles qu'on veut gérer, sans parler des changements de comportement au gré des versions du noyau.

fanch33 a écrit :

Une fois celui-ci construit je t'autorise sans aucun problème à y venir pour me corriger, dans la mesure ou bien entendu tu source tes infos plutôt que de signaler qu'elle sont "trouvables sur le net"


Je n'ai besoin de l'autorisation de personne pour corriger les erreurs que je vois. Quant aux sources, je ne conserve pas les URL de toutes les informations que je lis, les mots-clés que je fournis devraient permettre de se débrouiller. A condition que l'anglais ne soit pas un frein bien entendu.


Il vaut mieux montrer que raconter.

Hors ligne

#12 17-08-2018 10:15:45

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

ça marche en mode passif mais pas en mode actif. Voila le contenu complet du parefeu actuel:

/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X

/sbin/iptables -t filter -P INPUT DROP
/sbin/iptables -t filter -P FORWARD DROP
/sbin/iptables -t filter -P OUTPUT ACCEPT

/sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
/sbin/iptables -t filter -A INPUT -p icmp -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# PORT SSH:
/sbin/iptables -t filter -A INPUT -p tcp --dport .... -j ACCEPT  
# SERVEUR FTP:
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 5000:5100 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
#SERVEUR WEB:
 /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#SERVEUR MAIL:
/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 587 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
 


Je précise que même en rajoutant une règle pour le port 20 le mode actif ne fonctionne pas mais peu importe. Tout le reste fonctionne impec y compris le serveur mail (Dovecot, Postfix, Rouncube): une vrai galère à paramétrer celui-là!...

Hors ligne

#13 17-08-2018 10:29:19

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Probleme proftp bloqué par firewall [RESOLU]

Oui, raleur l'avait souligné. Pour du ftp actif, il faut que ton poste client accepte des connexions entrantes en tcp sur les ports 1024 et plus.
Voir ici: https://blog.nicolargo.com/2008/04/ftp- … assif.html
ftp-actif-nicolargo1.jpg
Tu utilises, aussi, un poste linux coté client ?

Coté serveur, il n'y a rien à faire puisque tu autorises, déjà, toutes les connexions sortantes.

Dernière modification par Beta-Pictoris (17-08-2018 10:31:50)

Hors ligne

#14 17-08-2018 10:37:56

Beta-Pictoris
Membre
Lieu : Angers
Distrib. : Buster
Inscription : 11-08-2015

Re : Probleme proftp bloqué par firewall [RESOLU]

Si tu retires les règles suivantes:

/sbin/iptables -t filter -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A INPUT -p udp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


Et que tu modifies les suivantes comme ceci:

/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 5000:5100 -m conntrack --ctstate RELATED -j ACCEPT


Est-ce que ça marche encore ?

Dernière modification par Beta-Pictoris (17-08-2018 10:38:27)

Hors ligne

#15 17-08-2018 10:52:02

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Pour raleur:

Oui, bien que ce soit trop laxiste car autorisant en permanence toute connexion depuis n'importe où à toute la plage de ports passifs définie dans proftpd au lieu d'utiliser le suivi de connexion FTP pour autoriser uniquement les connexions passives attendues par le serveur FTP.
Pourquoi "aurait dû" ? Cela ne fonctionnait pas ?


Non!... Je confirme bien que ça ne fonctionnait pas. Sur l'un des sites EN ANGLAIS que j'ai consulté (et dont moi-même je n'ai pas gardé l'URL je l'avoue) j'ai constaté que d'autres avait exactement le même problème. Un des intervenants précisait bien que c'était en rapport avec le fameux modules ip_conntrack_ftp (ou nf_conntrack_ftp) lequel était OBLIGATOIRE quand on fait du FTP. C'est ce qui m'a mis la puce à l'oreille concernant ce module à charger.
Concernant le laxisme sur les ports 5000 à 5100, je suis totalement d'accord avec toi. Ceci dit je ne vois pas très bien la différence avec les nouvelles règles qui me semblent exactement identiques puisque les états NEW sont également indiqués en même temps que RELATED et ESTABLISHED mais c'est comme ça. Dans un cas ça marche et pas dans l'autre. POINT.

en ce qui concerne les renseignements demandés:
Version du noyau: 4.9.0-7-amd64
valeur proc/sys/net/netfilter/nf_conntrack_helper: 0

Voila!... Pour le reste c'est effectivement une question de point de vue. On peut en discuter mais je ne crois pas qu'ici ça soit le lieu.

Hors ligne

#16 17-08-2018 11:08:42

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Pour beta-pictoris:

Logiquement avec ta manip, le serveur FTP fonctionnera. En revanche, pour le reste je ne crois pas: en effet à ce que  j'ai compris cette règle est celle qui permet à une machine d'accéder au Net. Notes d'ailleurs la différence entre celles concernant FTP (filtrage sur états NEW, ESTABLISHED et RELATED) et celles que tu me demande de supprimer (filtrage sur seulement RELATED et ESTABLISHED qui signifie si je ne m'abuse "accepte toute mes connexions DEJA innitialisées")

Hors ligne

#17 17-08-2018 11:13:20

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Beta-Pictoris a écrit:

Tu utilises, aussi, un poste linux coté client ?


Oui!... ça fait pas mal de temps que je fais une allergie au mot "Microsoft". lol:lol::lol:

Hors ligne

#18 17-08-2018 11:15:13

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

fanch33 a écrit :

/sbin/iptables -A INPUT -p tcp -m tcp --dport 5000:5100 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT


Par rapport au script précédent, tu as retiré l'option --sport 5000:5100, ce qui permet à cette règle d'accepter les connexions FTP passives même si le suivi de connexion FTP ne fonctionne pas (état NEW au lieu de RELATED).

fanch33 a écrit :

Je précise que même en rajoutant une règle pour le port 20 le mode actif ne fonctionne pas


Pas besoin de règle supplémentaire pour autoriser le mode actif côté serveur. La demande de connexion active sortante est autorisée par la politique ACCEPT de la chaîne OUTPUT, et les paquets de réponse du client ont l'état ESTABLISHED donc sont acceptés par la règle générale en INPUT.
Par contre comme le souligne Beta-Pictoris le mode actif a besoin de la coopération du pare-feu ou routeur NAT côté client. C'est généralement le cas pour les connexions FTP non chiffrées sur le port 21, mais pas si la connexion est chiffrée. Utilises-tu le chiffrement ?

fanch33 a écrit :

Version du noyau: 4.9.0-7-amd64
valeur proc/sys/net/netfilter/nf_conntrack_helper: 0


Donc le suivi de connexion FTP est inactif. Peu importe que tu charges nf_conntrack_ftp, ip_conntrack_ftp ou pas du tout, il est sans effet.
Cf. les ajouts de mon premier message pour l'activer.

Beta-Pictoris a écrit :

Si tu retires les règles suivantes:


Mauvaise idée car ces règles servent à d'autres connexions que FTP. Ça ne peut pas marcher car l'état ESTABLISHED n'est plus accepté.


Il vaut mieux montrer que raconter.

Hors ligne

#19 17-08-2018 11:35:46

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Pour raleur:

Tu as écrit:

Par rapport au script précédent, tu as retiré l'option --sport 5000:5100, ce qui permet à cette règle d'accepter les connexions FTP passives même si le suivi de connexion FTP ne fonctionne pas (état NEW au lieu de RELATED).


Oui!... Effectivement! j'avais vu le problème ici qui, d'ailleurs avait été souligné par Beta-Pictoris

Tu as également écrit:

Donc le suivi de connexion FTP est inactif. Peu importe que tu charges nf_conntrack_ftp, ip_conntrack_ftp ou pas du tout, il est sans effet.
Cf. les ajouts de mon premier message pour l'activer.


OK!... Du coup, c'est normal que, actuellement le mode actif ne fonctionne pas. C'est bien comme ça qu'il faut que je comprenne?

Enfin tu m'as demandé:

Utilises-tu le chiffrement ?


La réponse est oui. J'utilise  "TLS connexion explicite" qui fonctionne mais pas "TLS connexion implicite. Mais je note que connexion simple fonctionne aussi et ça, j'aimerai bien désactiver

Hors ligne

#20 17-08-2018 12:26:48

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

fanch33 a écrit :

Du coup, c'est normal que, actuellement le mode actif ne fonctionne pas. C'est bien comme ça qu'il faut que je comprenne?


Non. Le mode actif n'a pas besoin du suivi de connexion FTP côté serveur si les connexions sortantes sont autorisées. Le blocage doit être côté client.

fanch33 a écrit :

J'utilise  "TLS connexion explicite" qui fonctionne mais pas "TLS connexion implicite.


FTP avec TLS implicite (FTPS) n'utilise pas le port 21 mais le port 990. Pour fonctionner il doit être supporté par le serveur et autorisé par le pare-feu. De toute façon c'est obsolète et remplacé par TLS explicite qui écoute sur le port 21.

En tout cas si tu utilises du chiffrement le suivi de connexion FTP est inopérant car il ne peut pas inspecter le contenu de la connexion de commande chiffrée, donc inutile de perdre du temps avec nf_conntrack_ftp, nf_conntrack_helper, CT...
La seule solution consiste à traiter les connexions de données actives ou passives comme des connexions entrantes indépendantes. C'est ce que fait la règle autorisant la plage de ports 5000:5100 avec l'état NEW. Sans cette règle, pas de FTP chiffré en mode passif possible. C'est sous-optimal car cela autorise n'importe quelle connexion sur un de ces ports, pas seulement les connexions attendues par le serveur.

Et cela peut expliquer pourquoi le mode actif ne fonctionne pas si le client est derrière un NAT ou un pare-feu : la plage de ports actifs utilisés par le client doit être explicitement autorisée en entrée par le pare-feu du client et/ou redirigée vers le client par le NAT car le suivi de connexion FTP automatique est inopérant à cause du chiffrement.

fanch33 a écrit :

Mais je note que connexion simple fonctionne aussi et ça, j'aimerai bien désactiver


Tu veux dire connexion en clair non chiffrée ?
Si cela se désactive, cela ne peut être que dans la configuration du serveur.
Par curiosité, as-tu testé la connexion en clair en mode actif ?

Dernière modification par raleur (17-08-2018 12:28:36)


Il vaut mieux montrer que raconter.

Hors ligne

#21 17-08-2018 12:45:56

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Par curiosité, as-tu testé la connexion en clair en mode actif ?



ça ne fonctionnait pas avec l'ancien parefeu. En revanche, effectivement maintenant ça fonctionne. Si j'ai bien compris pour que tout fonctionne correctement il suffirait que je remplace toutes les règles FTP par simplement:

iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp



Et que je modifie quelque part le fichier /etc/proftpd/proftpd.conf pour empêcher l'utilisation en clair. C'est bien ça?

Hors ligne

#22 17-08-2018 13:03:29

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

fanch33 a écrit :

Si j'ai bien compris pour que tout fonctionne correctement il suffirait que je remplace toutes les règles FTP


Qu'entends-tu par "tout fonctionne correctement" ?

Le mode passif chiffré ou en clair passe (mais avec filtrage non optimal).
Le mode actif en clair passe.
Le mode actif chiffré est bloqué à cause du pare-feu ou du NAT côté client, pas à cause des règles iptables côté serveur.

La règle avec la cible CT permet de faire du filtrage optimal mais ne fonctionne qu'avec les connexions FTP en clair. Et elle ne remplace pas la règle qui autorise le port 21.
Les deux modifications que tu proposes sont contradictoires puisque la première ne fonctionne qu'avec les connexions en clair et la seconde vise à les interdire.


Il vaut mieux montrer que raconter.

Hors ligne

#23 17-08-2018 13:19:01

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

OK!... J'avais bien mal compris du coup.

Le parefeu au niveau du client, là j'ai du mal à voir vu que, sur ma machine perso y'en avait pas pour les essais. Je suppose qu'il faut que j'ailles voir au niveau de la box (freebox) maintenant.

MORALITE: Je reste donc en mode passif même si c'est pas très optimal et je bloque le mode non chiffré: j'ai en effet trouvé comment faire. Il manquait juste une instruction "TLSRequired on derrière "TLSEngine on" dans /etc/proftpd/proftpd.conf pour désactiver le mode en clair.

Hors ligne

#24 17-08-2018 13:24:31

raleur
Membre
Inscription : 03-10-2014

Re : Probleme proftp bloqué par firewall [RESOLU]

fanch33 a écrit :

Je suppose qu'il faut que j'ailles voir au niveau de la box


Si la box est en mode routeur (ton PC reçoit une adresse IPv4 privée), il faut créer une redirection vers l'adresse IP du poste client pour la plage de ports actifs utilisée par ton logiciel client FTP. Là encore, solution non optimale puisque cela ne redirige pas que les connexions de données FTP actives attendues par le client.


Il vaut mieux montrer que raconter.

Hors ligne

#25 17-08-2018 13:34:12

fanch33
Membre
Inscription : 13-08-2018

Re : Probleme proftp bloqué par firewall [RESOLU]

Oui!... ça, je le savais. Pour l'instant je laisse comme ça puisque ça fonctionne et je vais reviser iptables à tête reposée après ma sieste. De toute façon y'a aussi fail2ban qui protège le bouzin

Hors ligne

Pied de page des forums