FTP: il trasferimento di file degli inizi di Internet
Più vecchio di Internet stesso, per decenni lo standard per download e caricamento di siti web – e oggi un rischio per la sicurezza se funziona ancora senza cifratura. Che cos’è FTP, che cosa lo sostituisce e a che cosa prestare attenzione.
Protocollo: connessione di comando e di dati
FTP (RFC 959) usa una connessione di comando permanente (TCP 21, comandi testuali simili a Telnet) e una connessione dati separata per ogni trasferimento o elenco di directory:
| Modalità | Svolgimento | Conseguenze |
|---|---|---|
Attiva (PORT/EPRT) | Il server si collega dalla porta 20 al client, su una porta indicata dal client. | fallisce con NAT e firewall dei client; vulnerabile al FTP bounce (destinazioni PORT abusive) |
Passiva (PASV/EPSV) | Il server apre una porta alta (p. es. 49152–65535) e la comunica; il client si collega. | il firewall del server deve aprire l’intervallo; i firewall stateful necessitano di helper FTP (ALG), che con TLS non possono più leggere |
220 ProFTPD Server ready USER anna 331 Password required for anna PASS segreto123 ← in chiaro 230 User anna logged in EPSV 229 Entering Extended Passive Mode (|||50211|) RETR backup.zip 150 Opening BINARY mode data connection
Storia e standard
- 1971 RFC 114 (Abhay Bhushan, MIT): prima specifica per ARPANET.
- 1980 RFC 765: FTP su TCP/IP.
- 1985 RFC 959 (Postel, Reynolds): ancora oggi la base.
- 1994 RFC 1579 «Firewall-Friendly FTP»: i client dovrebbero usare la modalità passiva.
- 1997 RFC 2228 «FTP Security Extensions» (
AUTH,PROT,PBSZ). - 1998 RFC 2428 (
EPRT/EPSVper IPv6 e NAT), RFC 2389 (FEAT). - 2001–2006 SFTP come parte di SSH-2 in bozze IETF (draft-ietf-secsh-filexfer); mai adottato come RFC, standard di fatto in OpenSSH come versione 3.
- 2005 RFC 4217: FTP su TLS (FTPS, «esplicito» con
AUTH TLS); l’FTPS «implicito» sulla porta 990 è diffuso ma non standardizzato. - 2007 RFC 3659:
MLSD,MDTM,SIZE(elenchi leggibili dalle macchine). - 2021 Chrome 88 (gennaio) e Firefox 90 (luglio) rimuovono il supporto di FTP.
- 2022 OpenSSH 9.0 usa per impostazione predefinita il protocollo SFTP per
scp.
Sicurezza
- In chiaro: credenziali e contenuti senza TLS; basta intercettare il traffico in rete. Nel web hosting un account FTP significa di solito accesso in scrittura al sito.
- Forza bruta: le porte 21 aperte sono attaccate continuamente con elenchi di password; senza blocco dopo tentativi falliti (p. es. Fail2Ban) è solo questione di tempo.
- FTP anonimo: directory leggibili o persino scrivibili per errore.
- FTP bounce (abuso di
PORTper scansioni e per aggirare filtri); i server moderni accettano solo l’IP del client. - Vulnerabilità note in vecchi server, come la backdoor in vsftpd 2.3.4 (2011) o ProFTPD
mod_copy(CVE-2015-3306). - FTPS: imporre TLS 1.2/1.3 (
TLSRequired), proteggere il canale dati (PROT P), esigere il riutilizzo della sessione TLS sul canale dati (protegge dal dirottamento della connessione dati).
FTP, FTPS, SFTP, SCP, HTTPS a confronto
| FTP | FTPS | SFTP | HTTPS (WebDAV, caricamento) | |
|---|---|---|---|---|
| Cifratura | nessuna | TLS | SSH | TLS |
| Porte | 21 + dati | 21/990 + dati | 22 | 443 |
| Firewall/NAT | difficile | difficile (senza ALG) | semplice | semplice |
| Autenticazione | password | password, certificato client | password, chiave, certificato | password, token, SSO |
| Raccomandazione | disattivare | solo se necessario | standard | per persone e API |
Situazione attuale (2026)
- Hoster e server Plesk offrono spesso ancora FTP per impostazione predefinita; SFTP è di solito disponibile, ma non sempre predefinito.
- FTP si trova ancora nell’industria e nella tecnica degli edifici (controlli, telecamere), nelle stampanti («scan to FTP») e in vecchie integrazioni tra aziende; nello scambio B2B dominano SFTP, AS2 e interfacce HTTPS.
- Le scansioni a livello di Internet contano ancora milioni di server FTP raggiungibili, molti con software obsoleto.
- Norme come PCI DSS esigono una cifratura forte dei dati sensibili in transito; l’FTP non cifrato non soddisfa questo requisito.
Sviluppi
- Abbandono di FTP: dopo i browser, anche sistemi operativi e strumenti eliminano gradualmente il supporto; gli hoster passano a «solo SFTP».
- SSH post-quantistico: OpenSSH usa accordi di chiave ibridi (sntrup761x25519 dalla 9.0, mlkem768x25519 come predefinito dalla 10.0); così anche SFTP è protetto contro «raccogliere ora, decifrare dopo».
- Il trasferimento di file gestito e i link HTTPS firmati e a tempo (p. es. object storage) sostituiscono gli account FTP condivisi.
- Distribuzione dei siti web tramite Git, CI/CD e SSH invece del caricamento via FTP.
Protezione, se FTP deve restare
- Solo FTPS con TLS imposto (canale di comando e dati), nessun accesso anonimo, chroot per account.
- Definire un intervallo ristretto di porte passive e aprire solo quello; limitare l’accesso via firewall a indirizzi noti.
- Blocco dopo tentativi falliti (Fail2Ban), password robuste, nessun account condiviso, registrazione.
- Mantenere aggiornato il server; nascondere la versione nel banner di benvenuto.
- In Plesk: «Strumenti e impostazioni → impostazioni FTP» oppure concedere per abbonamento solo l’accesso SFTP.
Che cosa verifica eam.ch
- In modalità attiva (con autorizzazione): servizi non cifrati raggiungibili come FTP (porta 21), riscontro «Servizio non cifrato raggiungibile».
- Le versioni nei messaggi di benvenuto dei servizi sono confrontate con le vulnerabilità note.
- Certificati e versioni TLS dei server raggiungibili (rapporto TLS).
Fonti: RFC 114, 765, 959, 1579, 2228, 2389, 2428, 3659, 4217 (rfc-editor.org); draft-ietf-secsh-filexfer; note di rilascio Chrome 88 e Firefox 90 (2021); note di rilascio OpenSSH 9.0 (2022) e 10.0 (2025); NVD, CVE-2015-3306.
In breve
- FTP (1971/1985) trasferisce file tramite due connessioni: comandi sulla porta 21, dati separatamente.
- L’FTP classico non è cifrato: password e file possono essere letti.
- Dal 2021 i browser non supportano più FTP.
- Successori sicuri: SFTP (tramite SSH, raccomandato) e FTPS (FTP con TLS).
- Disattivare i servizi FTP non necessari; usare gli apparecchi con FTP solo internamente.