contenu:
- Introduction
- Les bases
- FTP actif
- exemple FTP actif
- FTP passif
- exemple FTP passif
- Autres Notes
- résumé
- Annexe 1: Configuration des serveurs FTP communs
- annexe 2: Guide de configuration du pare-feu
introduction
l’une des questions les plus fréquemment rencontrées lors du traitement des pare-feu et d’autres problèmes de connectivité Internet est la différence entre le FTP actif et le FTP passif et la meilleure façon de les prendre en charge ou les deux., Espérons que le texte suivant aidera à éclaircir certaines des confusions sur la façon de prendre en charge FTP dans un environnement pare-feu.
ce n’est peut-être pas l’explication définitive, comme le prétend le titre, cependant, j’ai entendu assez de bons commentaires et vu ce document lié à suffisamment d’endroits pour savoir que de nombreuses personnes l’ont trouvé utile. Je suis toujours à la recherche de moyens d’améliorer les choses, et si vous trouvez quelque chose qui n’est pas tout à fait clair ou qui nécessite plus d’explications, faites-le moi savoir!, Les ajouts récents à ce document incluent les exemples des sessions FTP actives et passives de ligne de commande. Ces exemples de session devraient aider à rendre les choses un peu plus claires. Ils fournissent également une belle image de ce qui se passe dans les coulisses lors d’une session FTP. Maintenant, sur les informations…
les bases
FTP est un service basé exclusivement sur TCP. Il n’y a pas de composant UDP toFTP. FTP est un service inhabituel en ce sens qu’il utilise deux ports, un port de « données » et un port de « commande » (également connu sous le nom de port de contrôle)., Traditionnellement, il s’agit du port 21 pour le port de commande et du port 20 pour le port de données. La confusion commence cependant, lorsque nous constatons que selon le mode, le port de données n’est pas toujours sur le port 20.
FTP actif
en mode actif FTP, le client se connecte à partir d’un port non privilégié aléatoire (n> 1023) au port de commande du serveur FTP, le port 21. Ensuite, theclient commence à écouter le port N + 1 et envoie la commande FTP PORTN+1
au serveur FTP., Le serveur se reconnectera ensuite au port de données spécifié par theclient à partir de son port de données local, qui est le port 20.,21 vers les ports > 1023 (le serveur répond au port de contrôle du client)
Une fois établie, la connexion apparaît comme suit:
PORT 1027
., Le serveur renvoie ensuite anACK au port de commande du client à l’étape 2. Dans l’étape 3 le serverinitiates une connexion sur son port de données local au port de données le clientspecified plus tôt. Enfin, le client renvoie un ACK comme indiqué à l’étape 4.
le principal problème avec le mode FTP actif tombe en fait sur le côté client. Le client FTP n’établit pas la connexion réelle au port de données du serveur-il indique simplement au serveur sur quel port il écoute et le serveur se connecte au port spécifié sur le client., Du pare-feu côté client, cela semble être un système extérieur initiant une connexion à un client interne-quelque chose qui est généralement bloqué.
exemple FTP actif
Voici un exemple réel d’une session FTP active. Les seules choses qui ont été modifiées sont les noms de serveur, les adresses IP et les noms d’utilisateur. Dans cet exemple une session FTP est lancée à partir de testbox1.slacksite.com (192.168.150.80), une boîte linux exécutant le client de ligne de commande FTP standard, pour testbox2.slacksite.com (192.168.150.90), une boîte linux exécutant ProFTPd 1.2.2rc2., L’indicateur debugging (-d
) est utilisé avec le client FTP pour montrer ce qui se passe dans les coulisses. Tout en rouge est la sortie de débogage qui montre les commandes FTP réelles envoyées au serveur et les réponses générées à partir de ces commandes. La sortie normale du serveur est affichée en noir et l’entrée de l’utilisateur est en gras.
Il y a quelques choses intéressantes à considérer à propos de cette boîte de dialogue. Notez que lorsque la commandePORT
est émise, elle spécifie un port sur le système client (192.168.150.80), plutôt que sur le serveur., Nous verrons le comportement opposé lorsque nous utilisons FTP passif. Pendant que nous sommes sur le sujet, une note rapide sur le format de la commande PORT
. Comme vous pouvez le voir dans l’exemple ci-dessous, il est formaté comme une série de six nombres séparés par des virgules. Les quatre premiers octets sont l’adresse IP tandis que les deux derniers octets comprennent le port qui sera utilisé pour la connexion de données. Pour trouver le port multiplier le cinquième octet par 256, puis ajouter la sixième octet au total. Ainsi dans l’exemple ci dessous le numéro de port est ( (14*256) + 178), ou 3762., Une vérification rapide avec netstat
devrait confirmer cette information.
FTP passif
afin de résoudre le problème du serveur initiant la connexion au client, une méthode différente pour les connexions FTP a été développée. Ce wasknown comme mode passif ,ouPASV
, après la commande utilisée par theclient pour dire au serveur qu’il est en mode passif.
en mode FTP passif,le client initie les deux connexions au serveur, résolvant le problème des pare-feu filtrant les données entrantes portconnection au client à partir du serveur., Lors de l’ouverture D’une connexion FTP,le client ouvre localement deux ports aléatoires non privilégiés (n > 1023 ETN+1). Le premier port contacte le serveur sur le port 21, mais au lieu d’envoyer une commande PORT
et de permettre au serveur de se connecter à son port de données, le client émettra la commande PASV
. Le résultat est que le serveur ouvre alors un port randomunprivileged (P > 1023) et envoie P
au client en réponse à la commande PASV
., Le client initie alors la connexion du portN+1 au port P sur le serveur pour transférer des données.,
Une fois dessiné, une connexion FTP en mode passif ressemble à ceci:
PASV
., Le serveur répond ensuite à l’étape 2 avecPORT 2024
, indiquant au client quel port il écoute pour la connexion de données. À l’étape 3, le client initie ensuite la connexion de données depuis son port de données vers le port de données du serveur spécifié. Enfin, le serveur renvoie un ACK à l’étape 4 au port de données du client.
alors que le mode FTP passif résout de nombreux problèmes du côté client,il ouvre toute une gamme de problèmes du côté serveur. Le biggestissue est la nécessité d’autoriser toute connexion à distance à des ports numérotés élevés sur le serveur., Heureusement, de nombreux démons FTP, y compris le populaire WU-ftpd permettent à l’administrateur de spécifier une plage de ports que le serveur FTP utilisera. Voir L’Annexe 1 pour de plus amples renseignements.
le deuxième problème concerne la prise en charge et le dépannage des clients qui prennent en charge (ou non) le mode passif. Par exemple, l’utilitaire FTP de ligne de commande fourni avec Solaris ne prend pas en charge passivemode, nécessitant un client FTP tiers, tel que ncftp.
Remarque: Ce n’est plus le cas use utilisez l’option -p
avec le mode passif du client FTP Solaris!,
avec la popularité massive du World Wide Web, beaucoup de gens préfèrent utiliser leur navigateur web comme client FTP. La plupart des navigateurs ne prennent en chargemode passif lors de l’accès aux URL ftp://. Cela peut être bon ou mauvais en fonction de ce que les serveurs et les pare-feu sont configurés pour prendre en charge.
exemple FTP passif
Voici un exemple réel d’une session FTP passive. Les seules choses qui ont été modifiées sont les noms de serveur, les adresses IP et les noms d’utilisateur. Dans cet exemple une session FTP est lancée à partir de testbox1.slacksite.com (192.168.150.,80), une boîte linux exécutant le client de ligne de commande FTP standard, pour testbox2.slacksite.com (192.168.150.90), une boîte linux exécutant ProFTPd 1.2.2rc2. L’indicateur debugging (-d
) est utilisé avec le client FTP pour montrer ce qui se passe dans les coulisses. Tout en rouge est la sortie de débogage qui montre les commandes FTP réelles envoyées au serveur et les réponses générées à partir de ces commandes. La sortie normale du serveur est affichée en noir et l’entrée de l’utilisateur est en gras.,
notez la différence dans la commandePORT
dans cet exemple par opposition à L’exemple FTP actif. Ici, nous voyons un port ouvert sur le système server (192.168.150.90), plutôt que sur le client. Voir la discussion sur le format de la commande PORT
ci-dessus, dans la section Exemple FTP actif.,
Autres Notes
un lecteur, Maarten Sjouw, a souligné que FTP actif ne fonctionnera pas lorsqu’il est utilisé conjointement avec un périphérique NAT (Network Address Translation) côté client qui n’est pas assez intelligent pour modifier les informations d’adresse IP dans les paquets FTP.
résumé
Le tableau suivant devrait aider les administrateurs à se souvenir du fonctionnement de chaque mode FTP:
Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023
Un résumé rapide des avantages et des inconvénients du FTP actif par rapport au FTP passif est également dans l’ordre:
le FTP actif est bénéfique pour, Le serveur FTP tente d’établir des connexions à des ports élevés aléatoires sur le client, qui seraient presque certainement bloqués par un pare-feu côté client. Le FTP passif est bénéfique pour le client, mais préjudiciable à l’administrateur du serveur FTP. Le client établira les deux connexions au serveur, mais l’une d’entre elles sera vers un port haut aléatoire, qui serait presque certainement bloqué par un pare-feu côté serveur.
Heureusement, il y a un peu de compromis., Étant donné que les administrateurs exécutant des serveurs FTP devront rendre leurs serveurs accessibles au plus grand nombre de clients, ils devront presque certainement prendre en charge le FTP passif. L’exposition des ports de haut niveau sur le serveur peut être minimisée en spécifiant une plage de ports limitée pour le serveur FTP à utiliser. Ainsi, tout sauf cette plage de ports peut être pare-feu côté serveur. Bien que cela n’élimine pas tous les risques pour le serveur, cela le diminue énormément. Voir L’Annexe 1 pour de plus amples renseignements.,
Une excellente référence sur le fonctionnement des différents protocoles internet et les problèmes impliqués dans leur pare-feu peut être trouvée dans le livre O’Reilly andAssociates, Building Internet Firewalls, 2nd Ed, de BrentChapman et Elizabeth Zwicky.
Note 2012: ce livre est très ancien et les informations qui y sont contenues peuvent être obsolètes!