Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il Servizio FTP di IIS 5.0

Utilizzare al meglio il server FTP di casa Microsoft
Utilizzare al meglio il server FTP di casa Microsoft
Link copiato negli appunti
Screenshot

Il Servizio FTP si implementa attraverso due diverse tipologie di collegamento.

Il primo collegamento prende il nome di Control Connection, questo rimane sempre attivo durante la sessione FTP e viene utilizzato dal Client per inviare comandi al Server.

La Control Connection è una connessione di tipo Telnet effettuata dal Client sulla porta TCP 21 del Server (se non diversamente specificato). Il Client durante questa connessione invia comandi al Server e riceve da questo risposte sulla sua porta TCP (es. 1591 o altro assegnata in modo casuale e comunque sempre superiore a 1024).

Altro discorso vale per il secondo tipo di collegamento denominato Data Connection. Questa connessione viene iniziata dal Server su richiesta del Client nel momento in cui deve ricevere o spedire dati ad esempio quando lo User Protocol Interpreter invia un comando LIST,GET o PUT, pertanto non sempre attiva.

Qui le cose si complicano un po', una volta stabilita la prima connessione (Control Connection) il Client si mette subito in ascolto sulla stessa porta (modalità FTP nota con il termine  di default ), il Server ricevuto il comando appropriato inizia a trasmettere/ricevere dati (Data Connection) utilizzando la propria porta TCP di default che è ottenuta dalla porta TCP della Control Connection meno uno (es. se il Server Protocol Interpreter utilizza la porta TCP 21, il Server Data Transfer Process utilizzerà la porta 20).

Riassumendo la Data Connection utilizza per il Client Data Transfer Process la stessa porta TCP utilizzata dallo User Protocol Interpreter, mentre per il Server Data Transfer Process utilizza la prima porta TCP adiacente a quella utilizzata dal Server Protocol Interpreter.

In qualsiasi momento il Client può modificare le porte TCP della Data Connection (modalità FTP nota con il termine non di default) attraverso l'utilizzo dei comandi PORT e PASV. Così facendo lo User Protocol Interpreter attraverso il comando PORT comunica al Server una diversa porta TCP (diversa dalla modalità di default) che utilizzerà per la Data Connection.

Nello stesso modo lo User Protocol Interpreter attraverso il comando PASV si farà comunicare dal Server una diversa porta TCP per la Data Connection.

In sintesi i comandi PORT e PASV hanno il solo obiettivo di modificare le porte TCP della Data Connection rispetto a quelle usate di default.

Questi comandi potrebbero risultare utili per modificare la direzione della Data Connection in presenza di un Firewall che blocca l'utilizzo delle porte TCP lato Client (comando PASV), oppure per cominciare una sessione FTP Server to Server, in quest'ultimo caso il Client comunica al Server attraverso il comando PORT non solo una diversa porta TCP, ma anche un diverso IP di destinazione della Data Connection.

Con il servizio FTP di IIS 5.0 è possibile utilizzare il comando PORT solo se inviato al Server specificando nel comando lo stesso indirizzo IP del Client che ha cominciato la Control Connection., questo per evitare che il Server possa venire utilizzato per effettuare connessioni non autorizzate con altri Server, non solo con il comando PORT non possono essere comunicati valori per la porta TCP inferiore a 1024. Per abilitare (sconsigliato) l'utilizzo del comando PORT nelle sessioni FTP 'Server to Server' modificare il valore della seguente chiave nel registro EnablePort Attack=1 presente in HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceMSFTPSVC.

Qui di seguito un esempio su come viene amministrata dal Client e dal Server una sessione FTP. Un programma Client-FTP gestisce internamente le due connessioni, all'utente è visibile solo la User Interface. In questo esempio le connessioni saranno esaminate in modo separato:

La prima connessione Control Connection viene attivata attraverso un Client di tipo Telnet, ad esempio:

Telnet 192.168.1.1 21

La risposta del Server è sempre preceduta da un numero (codice di risposta):

220 <NomeComputer> Microsoft FTP Service (Versione 5.0)

A questo punto vengono inviati dal client il nome utente e la password con i seguenti comandi:

USER <NomeUtente>
331 Password required for <NomeUtente>
PASS <Password>
230 Testo del messaggio di benvenuto
230 User <NomeUtente> logged in.

Durante questa fase vengono effettuati tutta una serie di controlli sia da parte di IIS che dal file system NTFS nel seguente ordine:

Screenshot

Una volta autenticato la Control Connection rimane attiva ed utilizzata dal Client per inviare comandi al Server. Eseguendo il comando netstat -a dal prompt dei comandi sia sul Client che sul Server vengono visualizzate tutte le connessioni TCP non chiuse.

Sul Client risultano due connessioni TCP sulla stessa porta una con stato Established, significa che la connessione è attiva (è la Control Connection), e l'altra con lo stato Listening (in ascolto), significa che il Client è pronto per accettare una connessione su questa porta, notare che le porte TCP utilizzate dal Client sia per la Control Connection che per la Data Connection sono le stesse (modalità di default).

Sul Server risulta una connessione TCP con lo stato Established sulla porta FTP (21).

A questo punto dalla stessa sessione Telnet utilizzata per la Control Connection possiamo inviare al Server un comando LIST (elenco dei file e delle direttori). Il risultato di questo comando sarà quello di ricevere come risposta un errore dal Server del tipo 'impossibile aprire la Data Connection'.

Come detto in precedenza le connessioni FTP sono due la Data Connection può essere stabilità solo se sul Client esiste un 'Server TCP' pronto a stabilire temporaneamente la connessione dati iniziata dal Server, un programma Client FTP gestisce al suo interno entrambe le connessioni, la prima attraverso un Client Telnet, la seconda attraverso un Server TCP. Strano ma vero, i ruoli tra Client e Server in un certo senso vengono invertiti nella Data Connection così che il Client si comporta come il Server stando in ascolto sulla propria porta TCP.

Due eccezioni a questa regola provengono dall'utilizzo dei comandi PORT e PASV.

Il comando PORT sposta la Data Connection su una porta TCP lato Client diversa da quella di default.

Il comando PASV sposta la Data Connection su una porta TCP lato Server diversa da quella di default, questo comando ha anche l'effetto di porre il Server in ascolto su questa porta concedendo così al Client la possibilità di iniziare lui stesso la Data Connection. Quest'ultima modalità è nota anche con il termine di FTP Passivo.

Ti consigliamo anche