PDA

Visualizza versione completa : Download FTP


LoryOne
31-12-2008, 13.07.00
Quando si scarica un file da un server FTP, prima ancora di stabilire se il file debba essere trasferito in modalità testuale o binaria in seguito ad un eventuale autenticazione dell'utente abilitato allo scarico, è necessario considerare la caratteristica con la quale s'instaura la connessione tra il server ed il client, tantopiù quando entrambi i nodi sono protetti da un firewall: A volte capita di essere avvertiti che per poter procedere all'operazione di download è necessario disabilitare il firewall sul proprio router, ma è possibile procedere ugualmente allo scarico attraverso l'utilizzo di un proxy server, mantenendo attivo il firewall.
Da cosa dipende la necessità di disabilitare il firewall ?
Supponiamo che il firewall sul router sia impostato in modo da bloccare ogni tentativo di accesso dall'esterno alla rete interna e che sia consentita l'apertura verso l'esterno del protocollo TCP con le classiche porte 80,20 e 21.
Esistono due modalità distinte di connessione che vengono chiamate attiva o passiva.

Connessione attiva
Se il server consente lo scarico in questa modalità, è necessario considerare che la connessione utilizzerà 3 porte distinte per portare a termine l'operazione:
Sulla porta 21 TCP del server avrà luogo lo scambio di comandi tra i due nodi.
Sulla porta 20 TCP del server e su una nuova porta aperta TCP sul client avrà luogo il prelevamento del file.
Una volta stabilita la connessione sulla porta 21 del server e portata a termine l'eventuale autenticazione dell' utente, il client invierà al server il seguente comando:
PORT IP,x,y
dove IP è sostituito dall'indirizzo IP del client, x ed y sono due valori decimali che insieme indicano la porta aperta in locale sul client (*), in modo che il trasferimento abbia luogo su porta sorgente 20 del server e porta destinazione specificata sul client.
La porta sul client è dinamica e le ACL impostate sul firewall possono evitare l'apertura dall'esterno su quella porta, impedendo di stabilire il canale per il trasferimento del file.
Fortuntamente, alcuni firewall stateful sono in grado di tracciare il comando PORT ed abilitare temporaneamente l'accesso sulla porta dinamica per tutta la durata del trasferimento.

Connessione passiva
Se il server consente lo scarico in questa modalità, dopo aver accettato il comando PASV impartito dal client, è il firewall sul server che deve essere in grado di tracciare il comando PORT ed abilitare temporaneamente l'accesso sulla porta dinamica per tutta la durata del trasferimento.

E' chiaro che se nessuno dei due firewall è in grado di tracciare il comando PORT e comportarsi adeguatamente aprendo temporaneamente il canale corretto per attuare il trasferimento, risulta impossibile effettuare il download del file specificato, a meno che uno dei due non venga disabilitato; Operazione, quest' ultima, che deve necessariamente essere compiuta lato client.
Una soluzione sarebbe quella di aggiungere una ACL sul firewall per consentire l'accesso dall'esterno su una porta compresa tra 1025 e 65535 ed abilitarla solo all'occorrenza, ma ciò comporta la necessità di fare accesso alla configurazione del router ogni volta che si renda necessario.

Download FTP via proxy server
L'alternativa è appoggiarsi ad un server proxy che scarichi il file per conto nostro e che accetti connessioni in ingresso sulla porta da noi consentita sul firewall verso l'esterno.
In questo modo verrà utilizzata una sola porta, ad esempio la classica TCP 80, per tutto il trasferimento tra il nostro client ed il server proxy che funge da intermediario, evitando di disabilitare il firewall sul router.

(*)
Es:
PORT IP ,x ,y
PORT 172,16,0,2,17,186
17,186 equivale alla porta 0x11BA, ossia 4538 in decimale.
Per ottenere il valore della porta, è necessario ricavare i valori in esadecimale di x ed y e successivamente affiancarli.