A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

FTP (file transfer protocol) è lo standard per il trasferimento di files tra computer con sistemi operativi diversi. E’ definito nella RFC959, che risale a 1985, ma questo protocollo ha una lunga storia che parte nel 1971, con le prime proposte di uno standard.
Funziona al livello applicazione del modello a strati del TCP/IP, ed usa il solo TCP, mai UDP. Altra caratteristica peculiare è quella di usare due porte TCP, la TCP/20 e la TCP/21, invece di una sola. Le modalità di funzionamento sono due: attiva e passiva.

  • Modalità attiva: Il client FTP si connette al server verso a porta di destinazione TCP/21, con porta sorgente casuale (N), di solito maggiore di 1024. Sulla TCP/21 il server ascolta in attesa di comandi, e risponde con messaggi di stato. Una volta stabilita la connessione su questo canale, su cui passeranno solo i comandi di controllo, il client si mette in ascolto sulla porta N+1, e manda al server (usando il canale TCP/21) il comando PORT N+1. A questo punto il server inizierà una connessione dalla sua porta TCP/20 verso la porta TCP/N+1 del client, ed invierà i dati richiesti.
    Quindi una sessione FTP è formata da due processi distinti:
    Protocol Interpreter (PI) sulla porta TCP/21, che viene usato per trasmettere i comandi fra client e server FTP. Il PI da inizio al processo.
    Data Transfer Process (DTP) che viene usato per la trasmissione vera e propria dei dati tra i due host, il DTP del client rileva la connessione DTP iniziata dal server.
    E’ chiaro a questo punto che questo schema ha grossi problemi a funzionare in presenza di un firewall di tipo packet filtering, che ispeziona i pacchetti in transito. Esso rileva una connessione in ingresso che non è apparentemente originata da una corrispondente richiesta interna sulla stessa porta, e scarta il pacchetto, impedendo di fatto il trasferimento dei dati.
    Per ovviare a questo problema è stata descritta una modalità alternativa di funzionamento, definita nella RFC1579, detta modalitàà passiva.
  • Modalità passiva: la fase iniziale è identica alla precedente, ma invece di mandare il comando PORT e mettersi in ascolto, il client manda un comando PASV. A questo punto è il server che si mette in ascolto su una porta N (maggiore di 1024) e risponde con il comando PORT N. Al client non resta che aprire una connessione verso la porta di destinazione N, per iniziare a ricevere i dati. In questo modo il firewall vede entrare pacchetti che sono stati richiesti da una connessione originata dall’interno e lascia passare il flusso di dati.

Nel corso della trasmissione dei dati, la connessione di controllo deve restare attiva, in modo che sia possibile scambiare comandi e risposte tra i processi client e server. Sia la connessione di controllo che la connessione dati permettono di instaurare un flusso di dati bidirezionale tra client e server.
In realtà è possibile configurare un packet firewall in modo che permetta il passaggio di connessioni FTP attive, ma per farlo si è costretti ad aprire molte più porte per il traffico, quindi è molto meglio usare la modalità passiva.

Dal punto di vista della sicurezza FTP è un incubo, anche se usato in modalità passiva per il solo download dei file.
Le sue falle principali sono:

  • Password in chiaro: le password viaggiano in chiaro attraverso la rete e sono facilmente intercettabili sniffando il traffico tra client e server.
  • I dati viaggiano in chiaro: anche i dati vengono trasferiti senza essere crittografati, anch’essi sono intercettabili.
  • Sessione in due processi: due processi necessari alla connessione rendono più semplici manovre truffaldine o malevole da parte di malintenzionati.
  • Permessi utente: i permessi di accesso FTP vanno incrociati con i permessi utente sul server in modo da limitare lo spazio su disco e le operazioni sui files.

Per una maggiore sicurezza è fortemente consigliato SFTP, che appoggia tutto il traffico sul protocollo SSH.

Riferimenti:

Tags: , ,

Related posts