Pour que le service FTP puisse correctement fonctionner derrière un pare-feu restrictif, il faut mettre en place un dispositif particulier de suivi du protocole (un helper).
L' exemple de configuration ci-dessous utilise une politique restrictive pour les trafics entrants et sortants. On n'autorise le trafic FTP que vers certains serveurs identifiés.
table ip ipfilter { ct helper ftp-standard { type "ftp" protocol tcp l3proto ip } chain inbound { type filter hook input priority filter; policy drop; ct state established,related counter accept # Tout trafic entrant non explicitement autorisé est journalisé et rejeté log prefix "[FW] [REJECT] [RID=666] " counter reject } chain outbound { type filter hook output priority filter; policy drop; # Accepte tout paquet en lien avec un trafic explicitement autorisé ct state established,related counter accept # Accepte le trafic FTP vers les serveurs de confiance (ici l' hote 19.168.33.10) ct state new ip daddr 192.168.33.10 tcp dport 21 log prefix "[ACCEPT] " level notice counter accept # Tout trafic sortant non explicitement autorisé est journalisé et rejetté log prefix "[FW] [REJECT] [RID=667] " counter reject } chain POST { type filter hook postrouting priority filter; policy accept; # Le trafic sortant à destination du port 21 (FTP) est marqué et suivi tcp dport 21 ct helper set "ftp-standard" } }