Pour que le service TFTP 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 TFTP que vers certains serveurs identifiés.
table ip ipfilter {
# Suivi des connexions TFTP
ct helper tftp-standard {
type "tftp" protocol udp
l3proto ip
}
chain POST {
type filter hook postrouting priority filter; policy accept;
# Le trafic sortant à destination du port 69 (TFTP) est marqué et suivi
udp dport 69 ct helper set "tftp-standard"
}
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 TFTP vers les serveurs de confiance (ici l' hote 19.168.33.10)
ct state new ip daddr 192.168.33.10 udp dport 69 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 forward {
type filter hook forward priority filter; policy drop;
ct state established,related counter accept comment "Transfert les trafics des connexions explicitement autorisees"
log prefix "[FW] [REJECT] [RID=668] " counter reject comment "Refuse toute transmission non explicitement autorisee"
}
}