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".
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.
Intervalli di porte passive comuni
| Intervallo | Usato da |
|---|---|
| 49152–65535 | Intervallo dinamico/effimero IANA (predefinito su molti server) |
| 40000–40100 | Intervallo personalizzato comune (cPanel, Plesk) |
| 30000–31000 | Intervallo 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 dati | Il server, verso il client | Il client, verso il server |
| Cosa invia il client | PORT (o EPRT) con il proprio indirizzo e la propria porta | PASV (o EPSV) |
| Cosa deve essere raggiungibile | Una porta sul client, che i router di casa e i firewall aziendali bloccano | L'intervallo di porte passive del server |
| Chi la usa | Il ftp.exe integrato in Windows, i vecchi script | Quasi 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=40100epasv_addressimpostato sull'IP pubblico quando il server è dietro un NAT. - ProFTPD:
PassivePorts 40000 40100, piùMasqueradeAddressper l'indirizzo pubblico. - Pure-FTPd:
PassivePortRange 40000 40100eForcePassiveIP. - 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.