PROTOCOLLO FTP

retiIn Internet, così come in altre reti, la comunicazione tra persone e dispositivi avviene per mezzo di protocolli. È come se stabilissero quelle che sono le regole della comunicazione: chi deve mandare una determinata informazione e quando? Cosa succede se i dati non raggiungono il destinatario? Come si protegge la trasmissione da disturbi e intromissioni? Dunque, ogni qualvolta navighiamo in Internet, vengono adoperati dei protocolli del modello ISO/OSI. I più noti sono HTTP e HTTPS, ovvero i protocolli che di solito utilizziamo per richiamare i siti web. Un altro protocollo importante è quello FTP. Ma per che cosa viene usato?

A CHE COSA SERVE IL FILE TRANSFER PROTOCOL?

Il File Transfer Protocol (FTP) è uno dei protocolli più vecchi di Internet. Già a partire dal 1974 si inizia a lavorare con la tecnologia di trasmissione dei file completi. Nel 1985 si definisce con esattezza il FTP nel documento Request For Comments 959. Il protocollo viene pensato per l’esecuzione dei comandi di download e upload, così da poter trasmettere file dal proprio dispositivo (pc, smartphone, ecc.) a un server e viceversa. Sempre con FTP si possono scaricare file da un server sul proprio dispositivo. L’utente dispone così di un sistema di gestione dei file riconosciuto anche dal proprio sistema operativo. I file possono essere inseriti all’interno di cartelle, le quali a loro volta possono essere contenute in altre cartelle, dando così vita a una struttura gerarchica delle directory. Il File Transfer Protocol viene spesso utilizzato nella creazione dei siti web. Attraverso l’accesso FTP è possibile trasmettere file HTML a un server. Allo stesso modo, sempre grazie al FTP, i gestori di siti web possono rendere fruibili file multimediali ai propri utenti. File Transfer Protocol (FTP) (protocollo di trasferimento file), in informatica e nelle telecomunicazioni, è un protocollo di livello applicazioni per la trasmissione di dati tra host basato su TCP e con architettura di tipo client-server. Il protocollo usa connessioni TCP distinte per trasferire i dati e per controllare i trasferimenti e richiede autenticazione del client tramite nome utente e password, sebbene il server possa essere configurato per connessioni anonime con credenziali fittizie. Dato che FTP trasmette in chiaro sia tali credenziali sia ogni altra comunicazione, e visto che non dispone di meccanismi di autenticazione del server presso il client, il protocollo è spesso reso sicuro utilizzando un sottostrato SSL/TLS e tale variante è chiamata FTPS.

COME FUNZIONA IL FTP?

Il File Transfer Protocol viene eseguito all’interno del livello applicativo dello stack TCP/IP, ossia nello stesso livello di HTTP o POP. Questi protocolli si caratterizzano per il loro funzionamento in combinazione con i programmi, come browser o client di posta elettronica, grazie ai quali svolgono la propria funzione. Anche per il File Transfer Protocol esistono dei software FTP dedicati. Di norma questi programmi hanno due componenti: una che serve a mostrare la struttura di directory locale con tutti i file contenuti nel disco rigido, e l’altra che mostra la memoria del server con i relativi file e cartelle. Il software permette all’utente di spostare i file da una memoria virtuale a un’altra, in entrambe le direzioni. Praticamente anche i browser e la riga di comando del sistema operativo possono essere utilizzati grazie al FTP. Per stabilire una connessione FTP vengono aperti due canali. Per prima cosa client e server creano un canale di controllo tramite la porta 21, tramite il quale il client invia comandi al server e questo risponde con i codici di stato. Dopodiché entrambi possono creare un canale dati che trasporta i file desiderati da una parte all’altra. Il protocollo controlla eventuali errori. Nel caso in cui una connessione venga interrotta durante il trasferimento, il trasporto dei file può riprendere non appena si sarà ristabilito il contatto. È necessario distinguere però tra FTP attivo e passivo. Nella variante attiva è il client a stabilire la connessione, come spiegato, attraverso la porta 21 e a comunicare al server su quale porta lato cliente questo può inviare la propria risposta. Ma se il client è protetto da un firewall, allora il server non potrà inviare alcuna risposta in quanto tutte le connessioni esterne sono bloccate. Proprio per questi casi è stata sviluppata una modalità passiva, che prevede che sia il server a rendere nota la porta tramite la quale il client può creare il canale dati. In questo modo, essendo il client a iniziare la connessione, il firewall non blocca il trasferimento dei dati. Il File Transfer Protocol dispone di vari comandi e codici di stato. Grazie a ben 32 comandi totali – non sempre necessariamente tutti implementati dal server – il client istruisce il server su qual è l’operazione desiderata: caricare o scaricare file, organizzare cartelle, o cancellare file. Il server risponde ogni volta con un codice di stato che serve a informare se il comando può essere eseguito o meno con successo. Solitamente si necessitano i dati di accesso per poter utilizzare il FTP su un server, ma c’è anche la possibilità che un server offra un FTP anonimo. In quest’ultimo caso, l’amministratore del server permette a ciascun utente di spostare o scaricare file sul server tramite FTP, senza dover aver bisogno di una password. Tuttavia, i server con FTP aperto corrono dei rischi di sicurezza, motivo per il quale si pongono dei limiti agli utenti. In un canale dati di tipo attivo il client apre una porta solitamente casuale, tramite il canale comandi rende noto il numero di tale porta al server e attende che si connetta. Una volta che il server ha attivato la connessione dati al client FTP, quest’ultimo effettua il binding della porta sorgente alla porta 20 del server FTP. A tale scopo possono venire impiegati i comandi PORT o EPRT, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6). In un canale dati di tipo passivo il server apre una porta solitamente casuale (superiore alla 1023), tramite il canale comandi rende noto il numero di tale porta al client e attende che si connetta. A tale scopo possono venire impiegati i comandi PASV o EPSV, a seconda del protocollo di rete utilizzato (in genere IPv4 o IPv6). Sia il canale comandi, sia il canale dati sono delle connessioni TCP; FTP crea un nuovo canale dati per ogni file trasferito all’interno della sessione utente, mentre il canale comandi rimane aperto per l’intera durata della sessione utente, in altre parole il canale comandi è persistente mentre il canale dati è non persistente. Un server FTP offre svariate funzioni che permettono al client di interagire con il suo filesystem e i file che lo popolano, tra cui:

Download/upload di file.

Resume di trasferimenti interrotti.

Rimozione e rinomina di file.

Creazione di directory.

Navigazione tra directory.

illustration-of-the-ftp-process-it

LISTA COMANDI FTP

Command List

DIAGRAMMA DI FUNZIONAMENTO

FTP model

Dove:

  • PI (protocol interpreter) è l’interprete del protocollo, utilizzato da client (User-PI) e server (Server-PI) per lo scambio di comandi e risposte. In gergo comune ci si riferisce a esso come “canale comandi”.
  • DTP (data transfer process) è il processo di trasferimento dati, utilizzato da client (User-DTP) e server (Server-DTP) per lo scambio di dati. In gergo comune ci si riferisce a esso come “canale dati”.

CODICI DI RISPOSTA

  • 1xx: Risposta positiva preliminare. L’azione richiesta è incominciata ma ci sarà un’altra risposta a indicare che essa è effettivamente completata.
  • 2xx: Risposta positiva definitiva. L’azione richiesta è completata. Il client può ora mandare altri comandi.
  • 3xx: Risposta positiva intermedia. Il comando è stato accettato ma è necessario mandarne un secondo affinché la richiesta sia completata definitivamente.
  • 4xx: Risposta negativa temporanea. Il comando non è andato a buon fine ma potrebbe funzionare in un secondo momento.
  • 5xx: Risposta negativa definitiva. Il comando non è andato a buon fine e il client non dovrebbe più ripeterlo.
  • x0x: Errore di sintassi.
  • x1x: Risposta a una richiesta informativa.
  • x2x: Risposta relativa alla connessione.
  • x3x: Risposta relativa all’account e/o ai permessi.
  • x4x: Non meglio specificato.
  • x5x: Risposta relativa al file-system.

SICUREZZA CON IL PROTOCOLLO FTP

Il File Transfer Protocol originale venne creato senza misure di sicurezza preventive. All’epoca Internet era ancora molto piccolo e la cybercriminalità non esisteva ancora. Ma col passare del tempo i rischi di sicurezza associati all’utilizzo del FTP sono diventati numerosi, venendo le informazioni trasmesse senza essere state precedentemente criptate. Perciò sono state sviluppate due varianti sicure, che da allora continuano a farsi concorrenza: FTPS e SFTP. La prima variante consiste nel FTP over SSL. La connessione viene stabilita utilizzando i Secure Socket Layers (SSL), ossia il Transport Layer Security (TLS), che serve a criptare lo scambio di dati. Il SSH File Transfer Protocol (SFTP), al contrario, utilizza il Secure Shell (SSH) per garantire una trasmissione sicura dei dati. Anche in questo caso la connessione è criptata. Ma mentre il FTPS necessita di due connessioni, al SFTP ne basta una sola. In compenso però bisogna utilizzare un programma aggiuntivo.

LINK AI POST PRECEDENTI

RETI DI CALCOLATORI

APPROFONDIMENTO