Qual è la differenza tra FTP attivo e passivo?


312

Qualcuno può dirmi qual è la differenza tra FTP attivo e passivo?
Quale è preferibile?

Risposte:


474

Attivo e passivo sono le due modalità in cui è possibile eseguire FTP.

Per lo sfondo, FTP utilizza effettivamente due canali tra client e server, il comando e i canali dati, che sono in realtà connessioni TCP separate .

Il canale di comando è per comandi e risposte mentre il canale di dati è per il trasferimento effettivo di file.

Questa separazione di informazioni e dati di comando in canali separati è un modo ingegnoso di essere in grado di inviare comandi al server senza dover attendere il completamento del trasferimento di dati corrente. Come da RFC, questo è obbligatorio solo per un sottoinsieme di comandi, come uscire, interrompere il trasferimento corrente e ottenere lo stato.


In modalità attiva , il client stabilisce il canale di comando ma il server è responsabile della creazione del canale di dati. Questo può effettivamente rappresentare un problema se, ad esempio, il computer client è protetto da firewall e non consente richieste di sessione non autorizzate da soggetti esterni.

In modalità passiva , il client stabilisce entrambi i canali. Sappiamo già che stabilisce il canale di comando in modalità attiva e fa lo stesso qui.

Tuttavia, richiede quindi al server (sul canale di comando) di iniziare l' ascolto su una porta (a discrezione dei server) anziché tentare di stabilire una connessione al client.

Inoltre, il server restituisce al client il numero di porta che ha selezionato per l'ascolto, in modo che il client sappia come connettersi ad esso.

Una volta che il client lo sa, può quindi creare con successo il canale dati e continuare.

Maggiori dettagli sono disponibili nella RFC: https://www.ietf.org/rfc/rfc959.txt


1
Non penso che l'affermazione attorno alla porta Y sia corretta, in modalità attiva il client non determina la porta Y, il server tenta di scegliere casualmente una porta # e cerca di vedere se il client consentirebbe la comunicazione tramite quella porta scelta . Il motivo per cui dico questo è che, se questo non è vero (il mio argomento), anche il lato client, anche se si trova dietro un firewall, può sempre creare due regole del firewall una per la connessione in uscita e una per la connessione in entrata.
arun.raj.mony,

1
@arun, il client non ha necessariamente il controllo del firewall. Esempio: negli ambienti aziendali, in genere esiste un firewall tra la rete aziendale e il mondo esterno, su cui un client che esegue FTP ha potenza zero.
paxdiablo,

IN modalità passiva, perché il server invia al client una porta casuale al client invece il client si collega direttamente alla porta 20 del server?
chengbo,

@paxdiablo In modalità passiva, perché il server assegna un numero di porta casuale e lo invia al client per la connessione dati? Perché il client non può aprire direttamente un canale dati dalla porta client no alla porta no 20 sul lato server?
Zefiro,


166

Di recente ho incontrato questa domanda sul mio posto di lavoro, quindi penso che dovrei dire qualcosa di più qui. Userò l'immagine per spiegare come funziona l'FTP come fonte aggiuntiva per la risposta precedente.

Modalità attiva:

modalità attiva


Modalità passiva:

inserisci qui la descrizione dell'immagine


In una configurazione in modalità attiva, il server tenterà di connettersi a una porta sul lato client casuale. Quindi è probabile che quella porta non sia una di quelle porte predefinite. Di conseguenza, un tentativo di connessione verrà bloccato dal firewall e non verrà stabilita alcuna connessione.

inserisci qui la descrizione dell'immagine


Una configurazione passiva non avrà questo problema poiché il client sarà quello che avvia la connessione. Naturalmente, anche per il lato server è possibile avere un firewall. Tuttavia, poiché si prevede che il server riceverà un numero maggiore di richieste di connessione rispetto a un client, allora sarebbe logico che l'amministratore del server si adatti alla situazione e apra una selezione di porte per soddisfare le configurazioni della modalità passiva.

Quindi sarebbe meglio per te configurare il server per supportare la modalità passiva FTP. Tuttavia, la modalità passiva renderebbe il tuo sistema vulnerabile agli attacchi perché i client dovrebbero connettersi a porte server casuali. Pertanto, per supportare questa modalità, non solo il tuo server deve avere più porte disponibili, ma il tuo firewall dovrebbe anche consentire il passaggio di connessioni a tutte quelle porte!

Per mitigare i rischi, una buona soluzione sarebbe quella di specificare un intervallo di porte sul server e quindi consentire solo quell'intervallo di porte sul firewall.

Per maggiori informazioni, leggi il documento ufficiale .


Sto solo indovinando qual è il problema di sicurezza. Se il server ascolta la stessa porta (20), allora non può capire quale client sta parlando, quindi sceglie una porta casuale e la invia al client, iniziando ad ascoltare quella porta. Quando il client si connette a quella porta, il server sa a quale client appartiene. Ma è sufficiente che un MITM si connetta allo stesso client. (beh, l'attacco mitico qui è comunque complicato ...)
Daniele Cruciani,

2
Ottima risposta, in particolare informazioni sul problema del firewall
Anh Tuan

14

Versione redatta del mio articolo Modalità di connessione FTP (attiva o passiva) :

Modalità di connessione FTP (attiva o passiva), determina come viene stabilita una connessione dati. In entrambi i casi, un client crea una connessione di controllo TCP a una porta di comando del server FTP 21. Questa è una connessione in uscita standard, come con qualsiasi altro protocollo di trasferimento file (SFTP, SCP, WebDAV) o qualsiasi altra applicazione client TCP (ad es. Browser web ). Quindi, di solito non ci sono problemi all'apertura della connessione di controllo.

Laddove il protocollo FTP è più complicato rispetto agli altri protocolli di trasferimento file sono i trasferimenti di file. Mentre gli altri protocolli utilizzano la stessa connessione sia per il controllo della sessione che per i trasferimenti di file (dati), il protocollo FTP utilizza una connessione separata per i trasferimenti di file e gli elenchi di directory.

Nella modalità attiva , il client inizia l'ascolto su una porta casuale per le connessioni dati in entrata dal server (il client invia il comando FTP PORTper informare il server su quale porta è in ascolto). Al giorno d'oggi, è tipico che il client si trovi dietro un firewall (ad esempio firewall Windows incorporato) o un router NAT (ad esempio modem ADSL), in grado di accettare connessioni TCP in entrata.

Per questo motivo è stata introdotta la modalità passiva ed è utilizzata principalmente al giorno d'oggi. L'utilizzo della modalità passiva è preferibile perché la maggior parte della configurazione complessa viene eseguita una sola volta sul lato server, da un amministratore esperto, piuttosto che individualmente sul lato client, da utenti (probabilmente) inesperti.

In modalità passiva , il client utilizza la connessione di controllo per inviare un PASVcomando al server e quindi riceve un indirizzo IP del server e un numero di porta del server dal server, che il client utilizza quindi per aprire una connessione dati all'indirizzo IP e al server del server numero di porta ricevuto.

Configurazione di rete per la modalità passiva

Con la modalità passiva , la maggior parte del carico di configurazione è sul lato server. L'amministratore del server dovrebbe configurare il server come descritto di seguito.

Il firewall e il NAT sul lato server FTP devono essere configurati non solo per consentire / instradare le connessioni in entrata sulla porta FTP 21, ma anche un intervallo di porte per le connessioni dati in entrata. In genere, il software del server FTP ha un'opzione di configurazione per impostare un intervallo di porte, che il server utilizzerà. E lo stesso intervallo deve essere aperto / instradato sul firewall / NAT.

Quando il server FTP si trova dietro un NAT, deve conoscere il suo indirizzo IP esterno, in modo che possa fornirlo al client in una risposta al PASVcomando.

Configurazione di rete per la modalità attiva

Con la modalità attiva , la maggior parte del carico di configurazione è sul lato client.

Il firewall (ad es. Firewall di Windows) e NAT (ad es. Regole di instradamento del modem ADSL) sul lato client devono essere configurati per consentire / instradare un intervallo di porte per le connessioni dati in entrata. Per aprire le porte in Windows, vai su Pannello di controllo> Sistema e sicurezza> Windows Firewall> Impostazioni avanzate> Regole in entrata> Nuova regola . Per instradare le porte sul NAT (se presente), consultare la relativa documentazione.

Quando c'è NAT nella tua rete, il client FTP deve conoscere il suo indirizzo IP esterno che WinSCP deve fornire al server FTP usando il PORTcomando. In modo che il server possa riconnettersi correttamente al client per aprire la connessione dati. Alcuni client FTP sono in grado di rilevare automaticamente l'indirizzo IP esterno, altri devono essere configurati manualmente.

Firewall / NAT intelligenti

Alcuni firewall / NAT tentano di aprire / chiudere automaticamente le porte dati controllando la connessione di controllo FTP e / o traducendo gli indirizzi IP della connessione dati nel traffico di connessione di controllo.

Con un tale firewall / NAT, la configurazione di cui sopra non è necessaria per un semplice FTP non crittografato. Ma questo non può funzionare con FTPS, poiché il traffico della connessione di controllo è crittografato e il firewall / NAT non può ispezionarlo né modificarlo.


11

Modalità attiva: -server avvia la connessione.

Modalità passiva: -client avvia la connessione.


1

Modalità attiva: il client invia un comando PORT al server segnalando che fornirà "attivamente" un IP e un numero di porta per riaprire la connessione dati al client.

Modalità passiva: il client emette un comando PASV per indicare che attenderà “passivamente” che il server fornisca un IP e un numero di porta, dopodiché il client creerà una connessione dati al server.

Ci sono molte buone risposte sopra, ma questo post sul blog include alcuni grafici utili e dà una spiegazione abbastanza solida: https://titanftp.com/2018/08/23/what-is-the-difference-b Between - active- and -passive-ftp /

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.