Une des caractéristique de ftp-proxy est de pouvoir contrôler les commandes passées par le client en utilisant des expressions régulières.
Explication
Tout se passe dans le fichier de configuration (/etc/ftp-proxy.conf), avec la variable :
L’exemple donné par défaut est le suivant :
| ValidCommands ABOR, PASS, PASV, STOR, USER, MODE, QUIT, SYST |
Pour utiliser les expressions régulières, il faut :
* supprimer les virgules et ne laisser que les espaces entre les commandes !!!
* convertir l’expression régulière en html, on peut le faire notamment avec la fonction urlencode de php4 :
** installer php4-cgi
** mettre dans un fichier :
| <?echo urlencode("MON EXPRESSION REGULIERE");?> |
** Taper la commande "php4 monfichier" qui donnera en retour la chaine à mettre dans le fichier de configuration.
Exemple concret :
Restreindre l’accés à des serveurs ftp sur des machines du domaine toto.fr lorsque’on utilise la méthode login=login@domaine.
* Expression régulière (perfectible...)
* Création du fichier "enocode_url"
| <?echo urlencode("^.*@.*\.toto\.fr$");?> |
* Récupérer la version encodée :
php4 encode_url
%5E.%2A%40.%2A%5C.toto%5C.fr%24 |
* ftp-proxy.conf
Voici donc ce qu’il faut mettre dans le fichier de configuration de ftp-proxy :
| ValidCommands ABOR PASS PASV STOR USER=%5E.%2A%40.%2A%5C.toto%5C.fr%24 MODE QUIT SYST |
* Test
ftp monserveur
Connected to monserveur.
220 Welcome to monserveur.
Name (localhost:moi): moi@ftp.kernel.org
501 'USER': syntax error in arguments.
Login failed. |
Ca marche pas...
ftp monserveur
Connected to monserveur.
220 Welcome to monserveur.
Name (localhost:moi): moi@machine.toto.fr
331 Password required for moi.
Password:
230 User moi logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> |
Ca marche !