ProFTPD over TLS/SSL | ListError.

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

ProFTPD over TLS/SSL | ListError.

Messagepar KippiX » 29 Nov 2006 12:01

Bonjour à tous,

Je viens de mettre en place un serveur ftp avec proftpd et ce qui me mène à vous est un probleme lié a l'activation de TLS/SSL.

En effet, je voudrai encapsuler mes données mais cela ne fonctionne pas. Sans l'encapsulation, mon ftp marche bien (traverse bien mon firewall), mais si j'active le <mod_tls.c> dans proftpd.conf, il me fait:

Code: Tout sélectionner
[L]  AUTH TLS
[L]  PBSZ
[L]  PROT
[L] 211 End
[L] PWD
[L] 257 "/" is current directory.
[L] TYPE A
[L] 200 Type set to A
[L] PROT P
[L] 200 Protection set to Private
[L] PASV
[L] 227 Entering Passive Mode (xxx,x,xx,xx,x,xxx).
[L] Opening data connection IP: xxx.x.xx.xx PORT: 2480
[L] Data Socket Error: Connection timed out
[L] List Error


Après multiple test a différents point de mon réseau, j'en ai conclu que cela venais de mon filtrage avec iptables.

Pour info, apres reflexion, j'ai laissé passer les ports suivant 21, 20 + 113 en entrée vers mon serveur.

Aussi, je n'ai pas activé le ip_conntrack_ftp parce que je n'utilise pas d'ftp actif et que de toute façon mon ftp marche sans ce module et sans TLS donc j'en ai conclu que le probleme ne venais pas de là . Ai-je eu tord?

Merci.
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00

Messagepar Geceo » 11 Déc 2006 12:12

Salut,

Difficile de te répondre comme ça. Si tu peux trouver un PC sous Windows (ça devient rare...), je te conseille d'utiliser FileZilla (non pas qu'il soit parfait mais pour qu'on soit dans une situation comparable). Dans les options, mets le dans le mode "FTP sur TLS (explicite)", puis essaye de te connecter avec l'adresse privée du serveur. Dis-moi si tu arrives à voir le contenu de tes répertoires.

- Si c'est la cas : ton problème vient bien de la configuration du routeur.

- Si ce n'est pas le cas : ça vient de la configuration du serveur.

Grégoire
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar Geceo » 11 Déc 2006 12:49

Re,

Je vois dans ton message que tu utilises le mode passif (PASV) et que le serveur essaye d'ouvrir le port 2480 :
Opening data connection IP: xxx.x.xx.xx PORT: 2480


Il faut forcer ProFTPd à utiliser certains ports, cela se fait avec la directive "PassivePorts" dans "proftpd.conf" :
PassivePorts 65000 65535

Ensuite ouvre la plage de ports correspondantes (65000-65535) sur ton routeur et dis-moi si ça marche.

Grégoire
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar KippiX » 20 Déc 2006 16:19

Testé, mais ca marche pas :(

mais je m'en doutais un petit peu vu que j'utilise ip_conntrack qui fait la liaison ;)

Le probleme reste entier :?
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00

Messagepar Ramsay » 20 Déc 2006 17:30

Bonjour,


Je ne sais pas si ça pourra t'aider, mais voici un lien qui décrit précisemment les trames pour du FTP/SSL suivi d'un exemple de configuration avec proftpd (et notament des liens vers le how to de proftpd en ssl...) :

http://www.hsc.fr/ressources/breves/ftp-ssl.html.fr
Ramsay
Matelot
Matelot
 
Messages: 5
Inscrit le: 15 Avr 2005 09:25

Messagepar Geceo » 27 Déc 2006 22:19

KippiX a écrit:Testé, mais ca marche pas :(

mais je m'en doutais un petit peu vu que j'utilise ip_conntrack qui fait la liaison ;)

Le probleme reste entier :?


Que veux-tu dire par "vu que j'utilise ip_conntrack qui fait la liaison"? Que tu utilises des règles iptables avec des états du genre NEW,ESTABLISHED pour le port 21 et ESTABLISHED,RELATED pour les données?

Car si c'est ça, hé bien chez moi non plus ça ne marche pas (même erreur que toi : impossible d'ouvrir le port de données).

En revanche quand j'enlève le suivi des connexions dans mes règles iptables, ça fonctionne.

Donc peut-être devrais-tu essayer de modifier temporairement ton pare-feu en supprimant les "--match state --state BIDULE". Si tu mets des ports élevés comme je te l'ai dit plus haut (65000-65535), tu n'auras pas de problèmes particuliers de sécurité et ça te permettra de savoir précisément si le problème vient du parefeu ou du serveur FTP.

Tiens-moi au courant quand tu auras testé, ça m'intéresse!

Geceo
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar tomtom » 27 Déc 2006 23:47

As-tu de la translation d'adresse sur ton firewall ?

Si oui, le mode tls pose des problèmes en mode passif, sauf si le serveur sait donner l'adresse "publique" par laquelle le joindre.

Les conntracks sont complètement inutilisables en tls (le firewall ne peut pas savoir dynamiquement quels ports ouvrir), le mode acif est inutilisable (nécessité que les firewalls de tous les clients permettent les entrées sur des ports hauts) et en mode passif il faut ouvrir tous les ports hauts en entrée coté serveur (beurk, mais au moins on les controle sur le serveur...)

Bref, on se retrouve au temps d'IPChains pour sécuriser un protocole pas franchment sur...

Pas moyen de passer à des choses comme scp pour tes usages ? Sinon, accepter les faiblesses de ftp...

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar Geceo » 28 Déc 2006 00:36

Salut tomtom,

Tu as tout compris à ma situation (et probablement aussi à celle de KippiX).

Oui mon firewall utilise de la translation d'adresses (règle SNAT). Et en effet, ProFTPd, qui tourne sur un serveur situé à l'intérieur du réseau local, utilise une option "MasqueradeAddress IP_EXTERNE" qui permet d'indiquer l'adresse IP externe par laquelle le serveur est accessible. C'est ce que je fais et avec l'option "PassivePorts 65000-65535" dans "proftpd.conf", ça marche, mais il faut que cette plage de ports sur le routeur soit ouverte en permanence.

Merci pour l'explication, je comprends mieux le fonctionnement du module "ip_conntrack_ftp" maintenant. C'est sûr qu'en TLS, comme les paquets transportant les commandes FTP sont chiffrées, le routeur ne peut pas voir passer la commande "PASV numéro du port"... Donc ok, il s'agit d'une limitation du protocole FTP.

Concernant "scp", je l'utilise pour mettre à jour des fichiers sur le serveur, mais notre serveur (FTP) est utilisé par des clients pour nous envoyer des fichiers, et comme ils n'y connaissent pratiquement rien, SSH n'est pas envisageable.

Merci encore pour ta réponse.

Geceo
PS : je viens de voir qu'il existe des logiciels "SFTP" en mode graphique, donc potentiellement utilisables par nos clients... Il faudra que j'y jette un coup d'œil.
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar KippiX » 15 Jan 2007 13:18

Salut, Tous

Merci pour vos explications, chez moi ca ne marche pas encore mais j'y travail.

Pour te répondre Geceo, je me suis mis dans une configuration sans contrack. Mais ca ne fonctionne tjs pas.
En lisant ton post j'ai vu que tu utilisais MaqueradeAddress qui m'a interpeler car que je n'utilisai pas :(

Donc si je comprend bien dans la configuration sans conntrack, le MasqueradeAddress permet de définir vers quel adresse le client va ouvrir sa data connection.
Ce qui et logique d'ailleur :p.

J'ai donc tester ces deux solution et effectivement au lieu d'avoir :
Opening data connection IP: 10.0.0.10:65029
DataSocketError :Connection timed out
List Error

J'ai maintenant :
Opening data connection IP: 80.123.125.16:65022 //Adresse Ip bidon :p
DataSocketError :Connection refused
ListError

Ce qui laisse penser que ce serai mon firewall qui refuse la connection. Or, je n'est aucune regle a drop, ni accept d'ailleur dans mes log. C'est comme si le firewall etais transparent. :shock:
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00

Re: ProFTPD over TLS/SSL | ListError.

Messagepar Geceo » 18 Jan 2007 01:07

Salut KippiX,

KippiX a écrit:Pour info, apres reflexion, j'ai laissé passer les ports suivant 21, 20 + 113 en entrée vers mon serveur.


Donc maintenant tu peux fermer le port 20 (et 113 aussi d'ailleurs!), mais il faut laisser passer vers le serveur les ports 65000-65535.

Pour information, voici la règle iptables qui fait ça chez moi :
Code: Tout sélectionner
iptables --table nat --append PREROUTING --destination $IP_PUBLIQUE --protocol tcp --dport 65000:65535 --jump DNAT --to-destination $IP_PRIVEE_SERVEUR_FTP


Geceo
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar KippiX » 05 Fév 2007 19:36

Je reviens avec ce probleme parcque le listage des repertoires fonctionne mais celle depend du client ftp.

FlashFxp Ok
FilleZilla PasOk


Alors en vu de mes log et analyse, fillezilla ne passe pas en passif lors de la connection alors que flash oui

je récapitule mon installation

Internet ------- livebox avec firewall --------- routeur+iptables --------- serveurFTP
.................$IfaceWAN................. ........$IfaceNet............$IfaceFtp


Sur la livebox :

les passiveports sont bien open et redirigé vers le routeur ainsi que le port 21.

Sur le routeur:

Code: Tout sélectionner
iptables -t nat -A PREROUTING -i $IfaceNet -p tcp --dport 21 -j DNAT --to-destination $IpServFtp
iptables -t nat -A PREROUTING -i $IfaceNet -p tcp --dport 65000:65500 -j DNAT --to-destination $IpServFtp

iptables -A FORWARD -i $IfaceNet -o $IfaceFtp -p tcp --dport 21 -d $IpServFtp -j LogAccepT
iptables -A FORWARD -i $IfaceNet -o $IfaceFtp -p tcp --dport 65000:65500 -d $IpServFtp -j LogAccepT


Sur le servFtp:

Proftpd.conf -->
Code: Tout sélectionner
MasqueradeAddress $IfaceNet


Et non pas MasqueradeAddress $IfaceWAN comme je faisai avant

Erreur Filezilla
Code: Tout sélectionner
Etat :   Connecté à www.gtot:21. Attente du message d'accueil...
Réponse :   220 Gtot.fr
Commande :   USER olivierb
Réponse :   331 Password required for olivierb.
Commande :   PASS ********
Réponse :   230 Connexion aux FtpFiles Autorise pour olivierb
Commande :   FEAT
Réponse :   211-Features:
Réponse :    MDTM
Réponse :    REST STREAM
Réponse :    SIZE
Réponse :   211 End
Commande :   SYST
Réponse :   215 UNIX Type: L8
Etat :   Connecté
Etat :   Récupération de la liste de répertoires...
Commande :   PWD
Réponse :   257 "/" is current directory.
Commande :   TYPE A
Réponse :   200 Type set to A
Commande :   PORT 192,168,0,27,4,27
Réponse :   200 PORT command successful
Commande :   LIST
Erreur :   Inactivité détectée !
Erreur :   N'a pas pu récupérer la liste du répertoire



Voila vous avez ma conf réseau maintenant je pense que vous tomber d'accord sur le fait que le probleme viens du mode passiveport....

Alors FileZilla a t-il un bug ????
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00

Messagepar Geceo » 19 Avr 2007 10:36

Salut,

Désolé, ça faisait un moment que je n'étais pas venu sur Ixus.

Il me semble que tu n'as pas indiqué la ligne :
Code: Tout sélectionner
PassivePorts 65000 65500

dans ton fichier /etc/proftpd.conf

Car si c'était le cas, la ligne "PORT" se terminerait par des nombres plus élevés. Je crois qu'il faut faire 256*premier_nombre+deuxieme_nombre pour avoir le numéro de port, donc pour le port 65000, ça marquerait 253,232 parce que 253*256+232=65000

Mais bon, peut-être as-tu déjà résolu ton problème depuis le temps...

Geceo
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar KippiX » 21 Avr 2007 12:58

lol bah tu vois moi aussi

mais c bon j'ai résolut le prob ;)
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00

Messagepar KippiX » 22 Avr 2007 13:54

Voila j'ai résumé sous forme de schéma
Image

Vous validez ?

les explications:

En effet, le Firewall utilise la translation d’adresse (NAT) et comme nous effectuons un chiffrement des données par TLS sur les connexions FTP, celui-ci est dans l’impossibilité de réécrire les adresses. Pour fonctionner, j’ai donc utilisé la directive MasqueradeAdress qui permet au serveur FTP d’être joignable depuis l’extérieur.

Mais un autre problème surviens, le Firewall utilise aussi le mode statefull qui permet de filtrer dynamiquement les flux le traversant or comme nous utilisons le chiffrement par TLS, il ne peut donc pas lire les ports utiliser pour les connexion de données. Nous avons donc deux solutions :
1. Laisser les high ports ouvert, mais cela reviens au même qu’utilisé le mode actif du FTP. Ce qui n’est pas sécurisé car tous ces ports sont ouverts.
2. Utiliser le mode stateless et configurer le serveur FTP pour qu’il écoute seulement sur une plage de ports définit.

Nous utiliserons donc la deuxième solution et ajouterons la directive PassivePorts 40000-40100.
Avatar de l’utilisateur
KippiX
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 17 Nov 2003 01:00


Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Google [Bot] et 1 invité

cron