Packet filter et ftp sortant

date
11 / 9 / 2009
comments
2

Comme j'ai expliqué dans ce billet, filtrer le traffic sortant est une bonne habitude à avoir, surtout pour un serveur qui utilise tout le temps les même ports sortant.

Le problème c'est le protocole FTP qui a été crée a un moment où la sécurité n'existait pas encore et on se connectait en telnet sans mot de passe. FTP n'est pas fait pour passer les parre feu. Si la connection est initié sur le port 21 le transfert des données se fait sur un autre port qui est négocié soit par le serveur soit par le client (Mode actif et mode passif). Du coup rend le filtrage beaucoup plus compliqué puisqu'on ne connait pas d'avance le port qui va être utilisé.

Après avoir lu la doc pour gerer le protocole FTP avec packet filter, j'ai essayé d'utiliser ftp-proxy et tous mes tests se sont soldés par un cuisant echec. Il semblerais que ftp-proxy ne soit pas adapté pour un client en ftp passif protégé par un parre feu local avec un filtrage strict des paquets sortants.

J'ai donc trouvé par miracle dans les ports FreeBSD un petit programme qui permet de regler le problème sans trop de difficultés.

(Remplacez rl0 par votre interface réseau)

make -C /usr/ports/ftp/ftpsesame install clean
echo "ftpsesame_enable=\"YES\"\nftpsesame_flags=\"-i rl0\"\n" >> /etc/rc.conf

Et la conf pf qui va avec :

# L'interface connecté au réseau local
ext_if = "rl0"

# Les ports sortant autorisés
out_tcp  = "{ ssh http ftp https 1213 6600 8000 8021 9418 xmpp-client 5223 }"
out_udp  = "{ domain }"

# Options
set loginterface $ext_if
set skip on lo0
scrub in

# Filtering, on bloque tout et on passe ce qui est autorisé
block log all
pass out on $ext_if proto icmp all
pass out on $ext_if proto udp to port $out_udp
pass out on $ext_if proto tcp to port $out_tcp
# On charge les rêgles de ftpsesame
anchor "ftpsesame/*" on $ext_if

# Antispoofing
antispoof log for { $ext_if, lo0 } inet

Et hop :

/usr/local/etc/rc.d/ftpsesame start
pfctl -f /etc/pf.conf

Franchement je sais pas comment ftpsesame se débrouille mais ça marche impécablement.

Previous post

De l'importance de filtrer le traffic sortant

Next post

Spamd ourgl

Comments: 2

mia0u 14 / 4 / 2010 at 17:33

Super ! Je suis etonne de pas trouve plus d'info la dessus ailleurs... Ca avec ftp-proxy pour le nat, c'est parfait :) Merci

philpep 14 / 4 / 2010 at 18:24

@mia0u :

On peut aussi le faire sans ftp-sesame

Add a comment

captcha



Comments are formatted using markdown syntax.