Actif ou passif : Comprendre les ports FTP
Si un client rencontre des problèmes lors de la connexion à votre serveur FTP, l'une des premières choses que vous voudrez peut-être vérifier est votre mode de transfert de données FTP. Selon certaines configurations de réseau, ce mode doit être défini sur actif ou passif. Avant de parler du mode convenant le mieux à quel scénario, abordons d'abord un sujet important : les deux canaux d'une session FTP.
Canal de commande FTP et canal de données
Une session FTP typique fonctionne en utilisant deux canaux entre le client FTP et le serveur : un canal de commande et un canal de données. Comme leurs noms l'indiquent, le canal de commande est utilisé pour transmettre des commandes ainsi que des réponses à ces commandes, tandis que le canal de données est utilisé pour transférer des données.
À moins que vous ne configuriez votre serveur FTP différemment, vous définirez normalement votre canal de commande pour qu'il utilise le port FTP 21. Le port FTP que vous utiliserez pour le canal de données, en revanche, peut différer selon le mode de transfert de données que vous choisissez. Si vous choisissez le mode actif, le canal de données sera normalement le port FTP 20. Mais si vous choisissez le mode passif, le port étant utilisé sera un port aléatoire.
Notez que les ports FTP auxquels nous nous référons jusqu'à présent ne sont que les ports côté serveur.
Description | Mode actif | Mode passif |
---|---|---|
Port de commande | Port 21 | Port 21 |
Port de données | Port 20 | Port aléatoire |
FTP en mode actif
Parmi les deux modes de connexion, le mode actif est le plus ancien. Le FTP actif a été introduit au début de l'informatique lorsque les mainframes étaient plus courants et que les attaques contre la sécurité de l'information n'étaient pas aussi répandues.
Voici une explication simplifiée sur la façon dont une connexion en mode actif est effectuée, résumée en deux étapes. Certaines étapes pertinentes (par exemple, les réponses ACK) ont été omises pour simplifier les choses :
- Un utilisateur se connecte à partir d'un port aléatoire sur un client de transfert de fichiers au port FTP 21 sur le serveur. Il envoie la commande PORT, spécifiant à quel port côté client le serveur doit se connecter. Ce port sera utilisé ultérieurement pour le canal de données et est différent du port utilisé dans cette étape pour le canal de commande.
- Le serveur se connecte du port 20 au port client désigné pour le canal de données. Une fois la connexion de données établie, les transferts de fichiers sont ensuite effectués via ces ports client et serveur.
FTP en mode passif
En mode passif, le client initie toujours un canal de commande (connexion de contrôle) vers le serveur. Cependant, au lieu d'envoyer la commande PORT, il envoie la commande PASV, étant essentiellement une demande de connexion à un port de serveur pour la transmission de données. Lorsque le serveur FTP répond, il indique le numéro de port de données qu'il a ouvert pour le transfert de données qui s'ensuit.
Voici comment fonctionne le mode passif en quelques mots :
- Le client se connecte d'un port aléatoire au port 21 sur le serveur et émet la commande PASV. Le serveur répond en indiquant quel port (aléatoire) il a ouvert pour le transfert de données.
- Le client se connecte depuis un autre port aléatoire au port aléatoire spécifié dans la réponse du serveur. Une fois la connexion établie, les transferts de données sont effectués via ces ports client et serveur.
FTP en Mode actif vs FTP en mode passif : lequel vous convient le mieux ?
En mode actif, la communication pointe vers le client. Cela signifie que le client spécifie initialement quel port côté client il a ouvert pour le canal de données, et le serveur initie la connexion. En revanche, en mode passif, la communication pointe vers le serveur. Ici, le serveur spécifie à quel port côté serveur le client doit se connecter et le client initie la connexion. Il ne devrait pas y avoir de problème s'il n'y avait pas eu de pare-feu. Mais les menaces à la sécurité de l'information sont en augmentation et, par conséquent, la présence de pare-feu est presque toujours une évidence. Dans la plupart des cas, les clients sont situés derrière un pare-feu ou un NAT (fonctionnant essentiellement comme un pare-feu). Dans de tels cas, seul un certain nombre de ports prédéfinis seront accessibles de l'extérieur.
N'oubliez pas que dans une configuration en mode actif, le serveur tentera de se connecter à un port côté client aléatoire. Il y a donc de fortes chances que ce port ne fasse pas partie de ces ports prédéfinis. En conséquence, une tentative de connexion sera bloquée par le pare-feu et aucune connexion ne sera établie.
Dans ce scénario particulier, une configuration passive ne posera pas de problème. C'est parce que le client sera celui qui initiera la connexion, quelque chose avec lequel un pare-feu côté client n'aura aucun problème.
Il est possible que le côté serveur dispose également d'un pare-feu. Cependant, étant donné que le serveur est censé recevoir un plus grand nombre de demandes de connexion qu'un client, il serait alors logique que l'administrateur du serveur s'adapte à la situation et ouvre une sélection de ports pour satisfaire les configurations en mode passif.
Considérations de sécurité lors de la configuration du FTP passif
Comme expliqué précédemment, si vous administrez un serveur FTP, il serait préférable de configurer votre serveur pour prendre en charge le FTP en mode passif. Cependant, vous devez garder à l'esprit que ce faisant, vous rendriez votre système plus vulnérable aux attaques. N'oubliez pas qu'en mode passif, les clients sont censés se connecter à des ports de serveur aléatoires. Ainsi, pour prendre en charge ce mode, non seulement votre serveur doit disposer de plusieurs ports disponibles, mais votre pare-feu doit également permettre le passage des connexions à tous ces ports ! Mais alors plus vous avez de ports ouverts, plus il y aura à exploiter. Pour atténuer les risques, une bonne solution serait de spécifier une intervalle de ports sur votre serveur, puis de n'autoriser que cette plage de ports sur votre pare-feu.
Quelle doit être la largeur de l'intervalle de ports passifs ?
Le nombre de ports que vous devez spécifier dans le FTP passif dépend en grande partie du nombre de connexions/transferts de fichiers simultanés que vous prévoyez d'avoir. Cependant, bien que, disons, 100 transferts de fichiers simultanés ne nécessiteraient que 100 ports ouverts sur le serveur, rappelez-vous toujours que ce que la plupart des gens considèrent comme un «transfert de fichiers unique» peut en fait consister en plusieurs.
Pour un utilisateur final typique, tout ce qu'il télécharge ou télécharge entre le moment où il se connecte au serveur FTP et le moment où il se déconnecte, fait partie d'un seul transfert de fichier FTP. Ce n'est pas vrai. Chaque fichier transmis pendant toute cette session de connexion nécessitera en fait au moins un port. Donc, si 10 fichiers sont téléchargés, 10 ports sont utilisés. Ce n'est pas tout. Certains clients utilisent désormais plusieurs connexions lors du téléchargement de fichiers. Par exemple, si un client a 100 fichiers à télécharger, il peut générer 5 sessions distinctes pour accélérer le téléchargement. Le résultat est qu'un seul client peut avoir 5 connexions passives ouvertes à la fois.
Ainsi, lorsque vous décidez du nombre de ports passifs que vous souhaitez ouvrir, vous devez tenir compte du fait qu'un seul client peut en fait ouvrir plusieurs connexions passives simultanées. Bien qu'il n'y ait pas de règles strictes dictant le nombre de ports devant constituer une intervalle de ports, vous voudrez vraiment projeter votre nombre maximum d'utilisateurs simultanés et allouer une allocation importante en fonction de cela.