Olivier wrote on 24. Nov 2006 at 21:34:
Bonjour,

Il y a quelques jours, j'ai configuré avec un ami, le célèbre pf (Packet Filter) d'OpenBSD sous FreeBSD. Nous avons réalisé un fichier de configuration très strict pour une station de travail (utilisateur final). Nous nous sommes heurtés à un problème très connu, la gestion du protocole FTP.
Je précise que la politique adoptée est la suivante: on ferme tout et on ouvre ce dont on a besoin. Il existe une solution pour palier à ce problème. Il faut utiliser ftpsesame, disponible uniquement dans les ports. Il est tout à fait possible d'en créer un paquetage. Sa fonction, permet de se connecter en utilisant le protocole ftp en passant par le pare-feu.
Il se configure de cette façon:
Code:# Autorise le traffic ftp via le filtre de paquet automatique ftpsesame
anchor "ftpsesame/*" on $int_if
pass out quick on $int_if proto tcp from ($int_if) to any port 21 $tcpflags keep state
Vous devez ajouter ces lignes dans votre fichier de configuration appelé pf.conf.
Pour qu'il s'exécute dès le démarrage de votre système, veuillez ajouter ces lignes:
Code:ftpsesame_enable="YES"
ftpsesame_flags="-i ndis0"
à votre fichier rc.conf. Ndis0 est pour moi mon interface réseau.
Vous pouvez tester le ftp, ftpsesame se chargera d'ouvrir le(s) port(s) besoin pendant la durée de l'opération.
Je tenais juste à partager ma petite aventure avec pf

++
Autre proposition sans ports suplémentaires
A la sauce BSD..
Exemple
Station Freebsd qui sert de passerelle et de pare feu pour le lan!
1) Activer inetd => /etc/rc.conf
inetd_enable="YES" # Run the network daemon dispatcher (YES/NO)
2) Modifier /etc/inetd.conf
ftp-proxy stream tcp nowait proxy /usr/libexec/ftp-proxy ftp-proxy -m 49551 -M 51552
Notes - Options:
ftp-proxy écoute sur le port 8021
Par défaut, le serveur FTP natif d'OpenBSD ftpd(8) utilise la plage 49152 à 65535
- Remplacement de root par proxy
- Restriction sur le nombre de ports qui seront ouvert en cas de besoin
user = [proxy] , -m = [départ du 1er port ouvert] , -M= [dernier port choisi]
3) Ajouter dans /etc/pf.conf
# nat
nat on $ext_if from $int_if:network to any -> $ext_if
# redirection
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on int_if proto tcp from <mylan> to any port 21 \
-> 127.0.0.1 port 8021
# Filtrage ftp-proxy
pass in quick on $ext_if proto tcp from any \
to $ext_if port 21 \
keep state
pass in quick on $ext_if proto tcp from any \
to $ext_if user proxy \
keep state