Verifica intervallo porte passive FTP

Verifica che l'intervallo di porte della modalità passiva del tuo server FTP sia aperto e raggiungibile attraverso i firewall. Indispensabile per diagnosticare errori come "unable to open data connection".

Preimpostazioni:

Che cos'è la modalità passiva?

Nella modalità passiva di FTP (PASV) il server apre una porta casuale con numero alto per il trasferimento dei dati e comunica al client a quale porta collegarsi. Se un firewall blocca queste porte, i trasferimenti di file falliscono anche se la connessione di controllo sulla porta 21 funziona perfettamente.

La connessione di controllo sulla porta 21 attraversa il firewall, ma la seconda connessione dati verso la porta 50000 viene bloccata; la risposta 227 del server codifica la porta come 195 x 256 + 80
Non è la connessione di controllo a fallire, e la risposta 227 ti dice quale porta aprire.

Intervalli di porte passive comuni

Intervallo Usato da
49152–65535Intervallo dinamico/effimero IANA (predefinito su molti server)
40000–40100Intervallo personalizzato comune (cPanel, Plesk)
30000–31000Intervallo personalizzato comune (predefinito in FileZilla Server)

Modalità attiva e modalità passiva a confronto

FTP usa due connessioni: una connessione di controllo sulla porta 21 per i comandi e una connessione dati separata per ogni trasferimento di file e ogni elenco di directory. La modalità stabilisce quale lato apre questa seconda connessione.

Modalità attiva (PORT) Modalità passiva (PASV)
Chi apre la connessione datiIl server, verso il clientIl client, verso il server
Cosa invia il clientPORT (o EPRT) con il proprio indirizzo e la propria portaPASV (o EPSV)
Cosa deve essere raggiungibileUna porta sul client, che i router di casa e i firewall aziendali bloccanoL'intervallo di porte passive del server
Chi la usaIl ftp.exe integrato in Windows, i vecchi scriptQuasi tutti i client moderni, per impostazione predefinita

La modalità passiva richiede solo connessioni in uscita dal client: per questo funziona dietro un NAT e per questo i client moderni la usano come predefinita. Il lavoro si sposta sul server: il suo firewall deve lasciar entrare i client sull'intero intervallo passivo, non solo sulla porta 21.

Leggere la risposta 227

Il server risponde a PASV con sei numeri, ad esempio 227 Entering Passive Mode (203,0,113,10,195,80). I primi quattro sono l'indirizzo IP a cui collegarsi. Gli ultimi due danno la porta: 195 x 256 + 80 = 50000. Due cose vanno spesso storte:

  • La porta è fuori dall'intervallo consentito dal firewall. Imposta l'intervallo passivo del server su quello che hai aperto, oppure apri l'intervallo che il server usa davvero.
  • L'indirizzo è privato, ad esempio 192.168.1.10, perché il server si trova dietro un NAT e annuncia il proprio indirizzo interno. I client allora si bloccano a ogni elenco di directory. Comunica al server il suo indirizzo pubblico con le impostazioni qui sotto; alcuni client aggirano il problema riutilizzando l'indirizzo del server, ma la correzione va fatta sul server.

Con EPSV la risposta è 229 Entering Extended Passive Mode (|||50000|): solo la porta, nessun indirizzo, quindi il problema dell'indirizzo privato sparisce. La porta deve comunque essere aperta.

Impostare l'intervallo passivo sui server più comuni

  • vsftpd: in vsftpd.conf, pasv_min_port=40000, pasv_max_port=40100 e pasv_address impostato sull'IP pubblico quando il server è dietro un NAT.
  • ProFTPD: PassivePorts 40000 40100, più MasqueradeAddress per l'indirizzo pubblico.
  • Pure-FTPd: PassivePortRange 40000 40100 e ForcePassiveIP.
  • FileZilla Server: le sue impostazioni della modalità passiva accettano un intervallo di porte personalizzato e l'IP pubblico da comunicare.
  • IIS: a livello di server, in Supporto firewall FTP (FTP Firewall Support), l'intervallo di porte del canale dati e l'indirizzo IP esterno del firewall. Potrebbe essere necessario riavviare il servizio FTP perché il nuovo intervallo abbia effetto.

Poi apri lo stesso intervallo per TCP ovunque davanti al server (il firewall del sistema operativo, un gruppo di sicurezza nel cloud, il port forwarding del router) e verifica alcune porte dell'intervallo con lo strumento qui sopra.

Come leggere il risultato

Aperta significa che una connessione TCP verso quella porta è stata accettata da Internet, quindi lungo il percorso niente la blocca. Nessuna risposta di solito significa che un firewall ha scartato il tentativo in silenzio. Chiusa significa che qualcosa ha risposto con un rifiuto, spesso il server stesso, perché molti server FTP restano in ascolto su una porta passiva solo per un attimo dopo che un client ha inviato PASV.

Su un server inattivo, quindi, porte chiuse nell'intervallo sono normali; il vero campanello d'allarme è un intero intervallo senza risposta. La prova definitiva è un elenco di directory in modalità passiva da un client vero: se l'accesso riesce e poi l'elenco si blocca, è la connessione dati a essere bloccata. Il tester di connessione FTP verifica la prima metà, cioè che il server risponda e accetti le tue credenziali.