Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.
12 août 2013 : Nouvelle page regroupant les bases de FTP.
Pour : utilisateur un peu curieux.
Le File Transfer Protocol est un protocole qui permet à des ordinateur distants d'échanger des fichiers à travers un réseau.
Les applications sont multiples :
Ce paragraphe vous sera très utile pour :
FTP obéit à un modèle client-serveur, c'est-à-dire qu'une des deux parties, le client, envoie des requêtes vers l'autre partie , appelée serveur. Et le serveur répond aux requêtes.
Exemple, en ligne de commande, avec lftp, en mode debug, pour l'utilisateur
login :
lftp -d -u login adresse_serveur
Le client ouvre une session FTP sur un serveur. Pour ceci, il envoie une requête sur le port 21 du serveur.
(Mais le serveur peut être configuré pour écouter sur un autre port. Dans ce cas, il faut connaître le numéro de ce port et lui envoyer la requête en précisant le port).
La négociation se poursuit sur ce port :
---- Connexion à 192.168.0.10 (192.168.0.10) port 21
<--- 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
<--- 220-You are user number 1 of 50 allowed.
<--- 220-Local time is now 17:58. Server port: 21.
<--- 220-IPv6 connections are also welcome on this server.
<--- 220 You will be disconnected after 15 minutes of inactivity.
---> FEAT
<--- 211-Extensions supported:
<--- EPRT
<--- IDLE
<--- MDTM
<--- SIZE
<--- MFMT
<--- REST STREAM
<--- MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*;
<--- MLSD
<--- AUTH TLS
<--- PBSZ
<--- PROT
<--- UTF8
<--- ESTA
<--- PASV
<--- EPSV
<--- SPSV
<--- ESTP
<--- 211 End.
---> AUTH TLS
<--- 500 This security scheme is not implemented
---> OPTS UTF8 ON
<--- 200 OK, UTF-8 enabled
---> OPTS MLST type;size;modify;UNIX.mode;UNIX.uid;UNIX.gid;
<--- 200 MLST OPTS type;size;sizd;modify;UNIX.mode;UNIX.uid;UNIX.gid;unique;
---> USER georges
<--- 331 User georges OK. Password required
---> PASS XXXX
<--- 230 OK. Current restricted directory is /
---> PWD
<--- 257 "/" is your current location
---> PASV
<--- 227 Entering Passive Mode (192,168,0,10,250,174)
---> PORT 192,168,0,2,175,241
<--- 200 PORT command successful
Un serveur FTP demande généralement une identification du client avec un mot de passe.
Pour accéder aux parties privées, les clients doivent avoir un compte sur le serveur et ils accèdent en lecture/écriture aux répertoires qui leur sont dédiés.
C'est le cas, par exemple, pour les mises à jour de pages personnelles sur un serveur web. Cela peut aussi être la mise à jour des sauvegardes sur le serveur bakup.
Mais il existe souvent un compte "anonyme", qui donne accès en lecture seule dans la partie publique du serveur, à tout client distant, se connectant avec le login anonymous.
Le protocole TCP nécessite deux ports, l'un pour les commandes, l'autre pour les données.
Deux cas de figure se présentent :
Ceci signifie que, pour la transmission des données, le serveur joue le rôle de client et le client joue le rôle de serveur. Cela aura une conséquence très importante pour le client, s'il se trouve derrière un pare-feu ou un routeur NAT. Les données seraient bloquées.
Le routeur NAT n'est plus perturbé puisque la connexion est demandée côté client.
Mais, côté serveur, il faudra tout de même en tenir compte de ces ports à ouvrir pour le pare-feu du serveur, sil y en a un.
En mode actif, c'est le client qui décide sur quel port doivent entrer les données. Il définit ce port.
Le serveur initie le transfert.
Si le client se trouve derrière un NAT ou un pare-feu, les données seront bloquées, vu qu'il n'est pas possible de connaître le port qui devrait être translaté ou ouvert.
En mode passif, c'est le serveur qui définit le port par lequel il envoie les données. C'est le client qui initie le transfert. Il n'y a donc plus de problème au niveau du client. Sur le serveur, il est possible de spécifier une plage de ports de données et donc d'ouvrir cette plage sur le pare-feu.
Transport Layer Security (TLS), anciennement nommé Secure Socket Layer (SSL), est un protocole de sécurisation des échanges sur Internet.
Développé à l'origine par Netscape (SSL version 2 et SSL version 3). Il a été renommé en Transport Layer Security (TLS) par l'IETF suite au rachat du brevet de Netscape par l'IETF en 2001.
Il y a très peu de différences entre SSL version 3 et TLS version 1 (qui correspond à la version 3.1 du protocole SSL) rendant les deux protocoles non interopérables, mais TLS a mis en place un mécanisme de compatibilité ascendante avec SSL.
TLS diffère de SSL pour la génération des clés symétriques. Cette génération est plus sécurisée dans TLS que dans SSLv3 dans la mesure où aucune étape de l'algorithme ne repose uniquement sur MD5 pour lequel sont apparues quelques faiblesses en cryptanalyse.
Sous Linux, il existe un bon choix de serveurs FTP. En voici 3 :
Vous avez peut-être besoin de définir des permissions pour des utilisateurs autres que ceux qui sont enregistrés sur le serveur FTP (et qui figurent donc dans le fichier /etc/passwd) : des utilisateurs virtuels.
Moyennant une configuration adéquate, Pure-FTPd, ProFTPd et VsFTPd acceptent des utilisateurs virtuels.
La même machine physique peut abriter un ou plusieurs serveurs ProFTPD supplémentaires : des hôtes virtuels.
Les utilisateurs peuvent y accéder en donnant une adresse IP différente ou un port différent (ou les deux).
L'installation et la configuration seront expliquées sur des pages séparées, pour chaque serveur.