Quelques informations sur le filtre FTP de ISA Server 2004

C'est un filtre applicatif installé avec ISA Server 2004 qui permet l'utilisation du protocole FTP. Par défaut, ce filtre est activé et activé avec l'Option read Only.

Quand le read only est activé, le filtre FTP bloque toutes les commandes à l'exception des suivantes : 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. Ainsi, il ne devrait pas être possible d'écrire des information sur le serveur FTP (via une commande PUT ou MKDIR par exemple).

La liste par défaut des commandes autorisées peut être remplacée par une liste personnalisée qui contiendrait par exemple des commandes/Paramètre spécifiques (FPCVendorParametersSets) à une implémentation spécifique du service FTP. Note : pour que les modifications soient prises en comptes, il faut redémarrer le service PareFeu

Le script suivant (à ne pas tester tel quel sur un serveur en production) est un exemple de reconfiguration du Filtre FTP pour autoriser uniquement les commandes USER et PASS

Dim root
Dim ftpFilter
Dim vpSet

On Error Resume Next
Err.Clear
Set root = CreateObject("FPC.Root")

' Get the filter's administration object
Set ftpFilter =
root.GetContainingArray.Extensions.ApplicationFilters("{680A928F-22B3-11d1-B026-0000F87750CB}")
If ftpFilter Is Nothing Then
Wscript.Echo "FTP Access Filter ({680A928F-22B3-11D1-B026-0000F87750CB})
is not installed in array."
WScript.Quit
End If

' Get the vendor parameter set containing the filter's configuration.
Set vpSet =
ftpFilter.VendorParametersSets.Item("{680A928F-22B3-11D1-B026-0000F87750CB}")

'If this vendor parameters set does not exist, create it.
If vpSet Is Nothing Then
WScript.Echo "Adding a vendor parameters set
({680A928F-22B3-11D1-B026-0000F87750CB})"
Err.Clear
Set vpSet =
ftpFilter.VendorParametersSets.Add("{680A928F-22B3-11D1-B026-0000F87750CB}",False)
ftpFilter.VendorParametersSets.Save
End If

' Add the required parameter.
vpSet.Value("AllowReadCommands") = "USER PASS"
vpSet.Save