Andrea Beggi

I may not have gone where I intended to go, but I think I have ended up where I intended to be.

TCP/IP in pillole: FTP

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:

11 Commenti

superbirra | #

Beggi, Beggi, mi deludi sulle radici storiche e politiche dell’FTP. Allora, ti rendo noto che il primo assoluto trasferimento NCP avvenuto con successo nel 1969, il network fisico, si chiamava DARPA, all’epoca ed era stato ideato per poter avere una rete di comando e controllo che fosse sopravvissuta anche ad un attacco nucleare, gi ma erano altri tempi quelli, dove sapevi chi erano i buoni e dove stavano i cattivi… Ma torniamo a noi Il network venne costruito nel 69, linkando quattro nodi: University of California at Los Angeles, SRI (in Stanford), University of California at Santa Barbara, e University of Utah. il network era cablato su una rete a commutazione di pacchetto da 50 Kbps. Fischia che velocit… Ma all’epoca era tutto e solo NCP. all’interno di NCP si comunicava con (1975) con UUCP (che bello, una volta lo ho usato anche io!), e poi finalmente, il:

1 Gennaio 1983

Ogni macchina su darpanet cambi il modo di trasmissione e controllo dati da NCP a TCP e nacque Internet, qundi, il frimo trasferimento FTP pu effere avvenuto sdolo dopo il 1 gennaio di quell’anno.

FTP una cosa bellissima, quando usato in modalit riga di comando, i mascatori hash, bin, proprio bello, poi vennero quelle gui orrende e quella cosa mostruosa che permette a IE di poter fare il browse di siti http://ftp... mah… c’ sempre meno poesia in internet.

Ma come cos facile ed immediati usarlo da riga di comandi, perch devo smenazzarmelo per mezzora con il mouse ad aspettare il refresh delle cartelline, quando in text mode sono pi efficace?

Onestamente FTP uno strumento estremamente utile alle aziende che devono avere uno storage in linea poter permettere grossi scambi di dati tra utenti mobili e sedi.

In abbinamento ad una VPN uno strumento perfetto. Chissenefrega della sicurezza, ma quanti pirla pensi che ci siano che passano tutta la giornata a monitorarti una connessione e a farne il reverse per trovare la tua user/pass? e poi tanto i dati sensibili mica li metti su http://ftp... e anche se qualcuno riesce a mettere qualcosa sul tuo ftp lo cancelli e basta.

Pensa ai grandi customer service delle aziende di sw/hw che lo usano per scaricare nuove release per i clienti, e per patch e test vari.

Capisco anche la totale ignoranza di chi, normale navigatore non sappia cosa l’ftp, e tu da ottimo maestro spandi la tua saggezza, bravo, magari tutti leggessero di pi cose come questa (soprattutto i clienti) forse la smetterebbero di fare le facce spaurite ogni volta che nomini la rfc959…

Andrea | #

Superbirra: prima del 1983 l’FTP esisteva, ed era FTP over NCP. Leggi la 959.
Anche io uso FTP, ma so che non sicuro. Si pu usare, ma basta conoscerne i limiti di sicurezza.

Barbara | #

Ecco lo uso da anni lo ammetto non sapevo tante
cose di quelle da te spiegate sar che l’ho sempre
usato solo per effettuare l’upload dei file sui vari server

Grazie mille

Guido | #

Grazie Andrea per le definizioni chiare e comprensibili.
Grazie anche a Superbirra che non ha perso l’occasione per mostrare la propria immensa e profonda conoscenza.

Dario | #

Caro Andrea ho una domanda. Ho un IP statico gestito efficacemente da un Router. Dall’esterno vorrei entrare in FTP su piu’ PC. Il mio problema e’: come faccio ad utilizzare lo stesso IP per entrare su piu’ PC ? La porta e’ solo la 21 ? Spero di essere stato chiaro ….

Sergio | #

Ciao Andrea!, ho un problema con un server FTP che usa esclusivamente la modalità attiva. Con diversi PC con WINXP vado bene ma con 2 Nuovi PC con Windows Vista mi si blocca il trasferimento file a 32kb… riesco quindi a uploadare solo file piccoli… da cosa puo’ dipendere? il programma che uso in entrambi i casi (Xp e Vista) è Filezilla che con altri sever con modalità passiva vanno benissimo.

Grazie in anticipo per la risposta!

Ivan Amarotti | #

Ciao Andrea come al solito ricorro a te quando sono alla canna del gas, ho un problema con u server ftp ( filezilla ) dietro 2 router ho aperto in entrambi i router un virtual server sulla porta 21, la cosa curiosa è che dall’esterno mi chiede l’autenticazione pero’ non mi da l’elenco file cosa puo’ essere? dalla classe in mezzo ai due router riesco a entrare, sono troppi i router?
Grazie
Ivan

Andrea | #

FTP è una brutta bestia da pubblicare. Devi inoltrare anche la 20, mi pare (controlla), che è il canale di ritorno. E devi giocare sulla modalità attiva / passiva del client.

Menciccio | #

Ciao Andrea, complimenti per il sito…
Ho un problema con l’FTPlato cleint.
Se io mi connetto al server attraverso la porta 21 funziona tutto, solo che per dare maggior sicurezza ho voluto cambiare la connessione alla porta del server.
Morale ho l’autenticazione ma non vedo le cartelle!
Ho provato ad aprire lato server anche la porta 20… ma non ho ottenuto niente.
Hai qualcosa da suggerirmi

Grazie

Andrea Masenelli (Mase) | #

Salve ho un problema io ho un nas di rete che vedo dall’esterno aprendo la porta 21 e tutto funziona.
Io avrei ora l’esigenza di connettere un altro pc con ftp filezilla server ma se metto una porta differente della 21 ad esempio la 22 riesco solo a creare nuovi file e cartelle ma nell’ftp non li vedo …. sul server i file ci sono dico anche che ho impostato gia tutte le autorizzazioni su filezilla server come potrei fare per vedere online sia il mio nas di rete sia filezilla.
Attendendo una risposta porgo cordiali saluti
Andrea Masenelli