Contenuto:
- Introduzione
- Nozioni di base
- FTP Attivo
- FTP Attivo Esempio
- FTP Passivo
- FTP Passivo Esempio
- Note
- Sommario
- Appendice 1: Configurazione di Common Server FTP
- Appendice 2: La Configurazione del Firewall Guida
Introduzione
Uno dei più comunemente visto domande quando si tratta con i firewall e altri problemi di connettività Internet è la differenza betweenactive e FTP passivo e il modo migliore per sostenere uno o di entrambi e pelmo giusto per citarne., Speriamo che il seguente testo aiuterà a chiarire alcuni dei theconfusion su come supportare FTP in un ambiente firewalled.
Questa potrebbe non essere la spiegazione definitiva, come afferma il titolo, tuttavia, ho sentito abbastanza buoni feedback e ho visto questo documento collegato in abbastanza posti per sapere che alcune persone lo hanno trovato utile. Sono sempre alla ricerca di modi per migliorare le cose però, e se si trova qualcosa che non è del tutto chiaro o ha bisogno di ulteriori spiegazioni, per favore fatemelo sapere!, Aggiunte recenti a questo documento includono esempi di sessioni FTP a riga di comando attive e passive. Questi esempi di sessione dovrebbero contribuire a rendere le cose un po ‘ più chiare. Essi forniscono anche una bella immagine in quello che succede dietro le quinte durante una sessione FTP. Ora, passiamo alle informazioni…
Le basi
FTP è un servizio basato esclusivamente su TCP. Non esiste un componente UDP toFTP. FTP è un servizio insolito in quanto utilizza due porte, una porta’ dati ‘e una porta’ comando ‘ (nota anche come porta di controllo)., Traditionallythese sono la porta 21 per la porta di comando e la porta 20 per il dataport. La confusione inizia tuttavia, quando scopriamo che a seconda della modalità, la porta dati non è sempre sulla porta 20.
FTP attivo
In modalità FTP attivo il client si connette da una porta casuale non privilegiata (N> 1023) alla porta di comando del server FTP, la porta 21. Quindi, il cliente inizia ad ascoltare la porta N+1 e invia il comando FTP PORTN+1
al server FTP., Il server si connetterà quindi alla porta dati specificata dal cliente dalla porta dati locale, che è la porta 20.,21 a porte > 1023 (Server risponde toclient di controllo della porta)
Quando la si tira fuori, la connessione viene visualizzata come segue:
PORT 1027
., Il server invia quindi anACK alla porta dei comandi del client nel passaggio 2. Nel passaggio 3 il serverinizia una connessione sulla porta dati locale alla porta dati specificata in precedenza dal client. Infine, il client invia un ACK indietro come mostrato in step4.
Il problema principale con la modalità attiva FTP cade effettivamente sul lato client. Il client FTP non effettua la connessione effettiva alla porta dati del server simply semplicemente dice al server su quale porta è in ascolto e il server si connette alla porta specificata sul client., Dal firewall lato client questo sembra essere un sistema esterno che avvia una connessione a un client interno-qualcosa che di solito è bloccato.
Esempio FTP attivo
Di seguito è riportato un esempio effettivo di una sessione FTP attiva. Le uniche cose che sono state modificate sono i nomi dei server, gli indirizzi IP e i nomi utente. In questo esempio viene avviata una sessione FTP da testbox1.slacksite.com (192.168.150.80), una scatola linux che esegue il client della riga di comando FTP standard, per testbox2.slacksite.com (192.168.150.90), una scatola linux con ProFTPd 1.2.2RC2., Il flag debug (-d
) viene utilizzato con il client FTP per mostrare cosa sta succedendo dietro le quinte. Tutto in rosso è l’output di debug che mostra i comandi FTP effettivi inviati al server e le risposte generate da tali comandi. L’output normale del server è mostrato in nero e l’input dell’utente è in grassetto.
Ci sono alcune cose interessanti da considerare su questa finestra di dialogo. Si noti che quando viene emesso il comando PORT
, specifica una porta sul sistema client (192.168.150.80) anziché sul server., Vedremo il comportamento opposto quando usiamo FTP passivo. Mentre siamo sull’argomento, una breve nota sul formato del comandoPORT
. Come puoi vedere nell’esempio qui sotto è formattato come una serie di sei numeri separati da virgole. I primi quattro ottetti sono l’indirizzo IP mentre gli ultimi due ottetti comprendono la porta che verrà utilizzata per la connessione dati. Per trovare la porta effettiva moltiplicare il quinto ottetto per 256 e quindi aggiungere il sesto ottetto al totale. Quindi nell’esempio seguente il numero di porta è ( (14*256) + 178), o 3762., Un controllo rapido con netstat
dovrebbe confermare queste informazioni.
FTP passivo
Per risolvere il problema del server che avvia la connessione ail client è stato sviluppato un metodo diverso per le connessioni FTP. Questo wasknown come modalità passiva, o PASV
, dopo il comando utilizzato da theclient per dire al server che è in modalità passiva.
In modalità passiva FTP il client avvia entrambe le connessioni al server,risolvendo il problema dei firewall che filtrano la porta dati in entroconnessione al client dal server., Quando si apre una connessione FTP,il client apre due porte casuali non privilegiate localmente (N > 1023 e N+1). La prima porta contatta il server sulla porta 21, ma invece di emettere un comando PORT
e consentire al server di connettersi alla sua porta dati, il client emetterà il comando PASV
. Il risultato di ciò è che il server apre quindi una porta randomunprivileged (P > 1023) e invia P
al client in risposta al comando PASV
., Il client avvia quindi la connessione da portN + 1 alla porta P sul server per trasferire i dati.,cliente’scontrol porta)
Quando viene disegnata, FTP in modalità passiva connessione simile a questo:
PASV
comando., Il server risponde quindi nel passaggio 2 conPORT 2024
, indicando al client quale porta sta ascoltando per la connessione dati. Nel passaggio 3 il client avvia quindi dataconnection dalla sua porta dati alla porta dati del server specificata. Infine, il server invia un ACK nel passaggio 4 alla porta dati del client.
Mentre la modalità passiva FTP risolve molti dei problemi dal lato client,si apre tutta una serie di problemi sul lato server. Il biggestissue è la necessità di consentire qualsiasi connessione remota a porte numerate elevate sul server., Fortunatamente, molti demoni FTP, incluso il popolare WU-ftpdconsentono all’amministratore di specificare un intervallo di porte che il server FTP userà. Per ulteriori informazioni, consultare l’appendice 1.
Il secondo problema riguarda il supporto e la risoluzione dei problemi dei client che supportano (o meno) la modalità passiva. Ad esempio, l’utility FTP command line fornita con Solaris non supporta passivemode, richiedendo un client FTP di terze parti, come ncftp.
NOTA: questo non è più il caso use usa l’opzione-p
con il client FTP Solaris per abilitare la modalità passiva!,
Con la massiccia popolarità del World Wide Web, molte persone preferiscono utilizzare il proprio browser web come client FTP. La maggior parte dei browser supporta solomodalità passiva quando si accede agli URL ftp://. Questo può essere buono o cattivoa seconda di ciò che i server e i firewall sono configurati per supportare.
Esempio di FTP passivo
Di seguito è riportato un esempio reale di una sessione FTP passiva. Le uniche cose che sono state modificate sono i nomi dei server, gli indirizzi IP e i nomi utente. In questo esempio viene avviata una sessione FTP da testbox1.slacksite.com (192.168.150.,80), una scatola linux che esegue il client della riga di comando FTP standard, per testbox2.slacksite.com (192.168.150.90), una scatola linux con ProFTPd 1.2.2RC2. Il flag debug (-d
) viene utilizzato con il client FTP per mostrare cosa sta succedendo dietro le quinte. Tutto in rosso è l’output di debug che mostra i comandi FTP effettivi inviati al server e le risposte generate da tali comandi. L’output normale del server è mostrato in nero e l’input dell’utente è in grassetto.,
Si noti la differenza nel comandoPORT
in questo esempio rispetto all’esempio FTP attivo. Qui, vediamo una porta aperta sul sistema server (192.168.150.90), piuttosto che sul client. Vedere la discussione sul formato del comando PORT
sopra, nella sezione di esempio FTP attivo.,
Altre note
Un lettore, Maarten Sjouw, ha sottolineato che l’FTP attivo non funzionerà se usato in combinazione con un dispositivo NAT (Network Address Translation) lato client che non è abbastanza intelligente da modificare le informazioni sull’indirizzo IP nei pacchetti FTP.
Sommario
La seguente tabella dovrebbe aiutare gli amministratori a ricordare come funziona ogni modalità FTP:
Active FTP : command : client >1023 -> server 21 data : client >1023 1023 -> server 21 data : client >1024 -> server >1023
Un breve riassunto dei pro e dei contro di FTP attivo vs passivo è anche in ordine:
FTP attivo è vantaggioso per l’amministratore del server FTP, ma dannoso per l’amministratore lato client., Il server FTP tenta di effettuare connessioni a porte alte casuali sul client, che sarebbero quasi certamente bloccate da un firewall sul lato client. L’FTP passivo è vantaggioso per il client, ma dannoso per l’amministratore del server FTP. Il client effettuerà entrambe le connessioni al server, ma una di esse sarà una porta alta casuale, che sarebbe quasi certamente bloccata da un firewall sul lato server.
Fortunatamente, c’è un po ‘ di compromesso., Poiché gli amministratori che eseguono server FTP dovranno rendere i loro server accessibili al maggior numero di client, avranno quasi certamente bisogno di supportare FTP passivo. L’esposizione delle porte di alto livello sul server può essere minimizzata specificando un intervallo di porte limitato da utilizzare per il server FTP. Pertanto, tutto tranne questo intervallo di porte può essere firewall sul lato server. Anche se questo non elimina tutti i rischi per il server, lo diminuisce enormemente. Per ulteriori informazioni, consultare l’appendice 1.,
Un eccellente riferimento su come funzionano i vari protocolli Internet e le questioni coinvolte nel firewall possono essere trovate nel libro O’Reilly andAssociates, Building Internet Firewalls, 2nd Ed, di BrentChapman e Elizabeth Zwicky.
Nota 2012: Questo libro è molto vecchio e le informazioni in esso contenute possono essere obsolete!