Ciao a tutti!

In questo articolo vedremo come risolvere un particolare problema legato all’accesso ad un server FTP remoto dietro TMG 2010.

Immaginate il seguente scenario: un PC all’interno di una rete aziendale vuole accedere a un server FTP remoto attraverso TMG 2010 utilizzando un client-FTP come – ad esempio - Filezilla

clip_image002

La configurazione di questo server FTP (autenticazione, cifratura, ecc..) non ci interessa per questo tipo di situazione.

Sul server TMG, abbiamo creato una regola d’accesso che consente il transito del protocollo FTP dall’interno all’esterno in modalità “Read-only” (quindi solo in lettura):

clip_image004

clip_image006

Quando tentiamo la connessione verso il server FTP usando – ad esempio – Filezilla, potremmo ritrovarci col seguente errore:

clip_image008

I problemi di connettività a server FTP attraverso ISA/TMG possono essere causati da svariati diversi aspetti.

Nel seguente articolo troviamo I principali metodi di risoluzione delle problematiche piu comuni:

http://technet.microsoft.com/en-us/library/bb794745.aspx

Tuttavia, il problema oggetto di questo articolo è di natura differente rispetto a quanto riportato nell’articolo technet, e dipende da una ben precisa proprietà “by-design” del filtro FTP di TMG.

Nello specifico, nel nostro caso osserviamo che la connessione fallisce riportando un errore “550-Access Denied” in seguito all’invio di un comando MLSD da parte del client.

Che scopo ha il comando MLSD?

Il seguente articolo IETF ce ne chiarisce l’utilità:

http://tools.ietf.org/html/draft-ietf-ftpext-mlst-16#section-7

Citando testualmente:

The MLST and MLSD commands are intended to standardize the file and directory information returned by the Server-FTP process. These commands differ from the LIST command in that the format of the replies is strictly defined although extensible.

Vediamo quindi che tale comando è utilizzato con l’intento di “formattare” le informazioni relative a files e directories pubblicate dal server FTP, inviateci dall’FTP stesso.

Il filtro FTP di TMG, di sua natura, non considera il comando MLSD come comando di “Read” (al contrario di quanto avviene col comando LIST): una risoluzione banale del problema consisterebbe, pertanto, nel garantire priviliegi di scrittura sul server FTP andando a modificare la modalità di lavoro del filtro FTP di TMG a livello di regola d’accesso:

clip_image010

I client FTP che utilizzano il comando LIST non riporteranno questa problematica, in quanto il LIST è consentito dal filtro.

Ora, garantire privilegi di scrittura sul server FTP spesso non risulta desiderabile, nè consigliato, dipendentemente dall’utilizzo considerato.

Esiste un workaround che ci permette di mantenere il filtro FTP in “Read-Only” risolvendo questa problematica: è infatti possibile inserire tramite script il comando MLDS nella lista dei comandi consentiti dal filtro FTP di TMG configurato in “Read-Only” mode.

Il seguente articolo MSDN ci spiega come configurare vari add-ins:

http://msdn.microsoft.com/en-us/library/dd435753.aspx

Nello specifico del nostro caso:

FTP Access Filter

FTP Access Filter is an application filter that is installed with Forefront TMG. It enables FTP protocols. When running in read-only mode, FTP Access Filter blocks all commands in the control channel except the following commands: ABOR, ACCT, CDUP, CWD /0, FEAT, HELP, LANG, LIST, MODE, NLST, NOOP, PASS, PASV, PORT, PWD /0, QUIT, REIN, REST, RETR, SITE, STRU, SYST, TYPE, USER, XDUP, XCWD, XPWD, SMNT. This should block any writing to the server side. The default list of allowed commands can be replaced by a customized list that is written to the collection of vendor parameters sets (FPCVendorParametersSets) associated with the filter. The Firewall service must restarted for the new settings to take effect.

L’esempio di script presente nell’articolo può essere utilizzato per customizzare la lista dei comandi consentiti dal filtro.

Il valore di vpSet.Value("AllowReadCommands") = "xxxxxxx" andrà configurato con tutti i comandi che desideriamo il filtro FTP di TMG consideri come acconsentiti.

In questo modo sarà possibile mantenere il filtro FTP in “Read-Only”, e al contempo la nostra connessione FileZilla sarà in grado di funzionare perfettamente.

Nella speranza che questo possa tornarvi utile....arrivederci al prossimo topic!!

Daniele Gaiulli – MS Support Engineer