Outils pour utilisateurs

Outils du site


netadmin:nftables:exemples:nft_configuration_serveur_ftp

Ceci est une ancienne révision du document !


Netfilter : Autoriser le trafic FTP sur un poste serveur

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 restreint l'accès au service FTP à certains clients identifiés.

nftables.conf
#!/usr/sbin/nft -f
 
flush ruleset
 
 
table ip ipfilter {
        comment "Firewall"
 
  ct helper ftp-standard {
    type "ftp" protocol tcp
    l3proto ip
  }
 
 
     set allowed_ftp_clients {
                type ipv4_addr
                comment "Clients FTP identifiés autorisés à utiliser les services"
                elements = {
                        192.168.33.10,
                        192.168.10.1,
                        172.16.1.33
                }
        }
 
  chain PRE {
    type filter hook prerouting priority filter; policy accept;
 
    # L'usage de l'helper est nécessaire pour le fonctionnement
    # du protocole FTP au travers du pare-feu
    tcp dport 21 ct helper set "ftp-standard"
  }
 
      chain inbound {
                comment "Filtrage des paquets entrants"
                type filter hook input priority filter; policy drop;
 
                # Suppression des paquets non conformes
                ct state invalid counter drop
 
                # Accepte tous paquets en lien avec un trafic explicitement autorisé
                ct state established, related counter accept
 
                # Pas de restriction sur le trafic entrant sur la boucle locale
                iif "lo" counter accept comment "Accepte le trafic local sur l'interface loopback"
 
                # Supprime les nombreuses sollicitations netbios sans journalisation
                iif "lan0" udp dport {137, 138 } ip daddr 192.9.200.255 counter drop comment "Elimine les paquets netbios"
 
                # Supprime les nombreuses sollicitations multicast DNS
                iif "lan0" udp dport 5353 ip daddr 224.0.0.251 counter drop comment "Elimine les paquets mDNS"
 
                # Accepte les connexions FTP pour les clients identifiés. Le trafic est ensuite géré par l'helper "ftp"
    iif "lan0" ip saddr @allowed_ftp_clients tcp dport 21 ct state new log level notice prefix "[FW] [ACCEPT] [RID=18] " counter accept
 
                # Accepte mais limite les requête echo ICMP
                icmp type echo-request limit rate 5/second log prefix "[FW] [ACCEPT] [RID=17] " level notice counter accept comment "Autorise ICMP echo entrant"
 
                # Tout trafic entrant non explicitement autorisé est journalisé et rejeté
                log prefix "[FW] [REJECT] [RID=666] " counter packets 0 bytes 0 reject comment "Rejette tout trafic entrant non explicitement autorise"
        }
 
    chain outbound {
                comment "Filtrage des paquets sortants"
                type filter hook output priority filter; policy drop;
 
                # Accepte tous les paquets en lien avec un trafic explicitement autorisé
                ct state established,related counter accept
 
                # Pas de restriction concernant le trafic sortant par la boucle locale
                oif "lo" counter accept comment "Accepte le trafic local sur l'interface loopback"
 
                # Accepte mais limite les requête echo ICMP sortantes 
                icmp type echo-request limit rate 5/second log prefix "[FW] [ACCCEPT] [RID=61] " level notice counter accept comment "Autorise ICMP echo sortant"
 
                # Tout trafic sortant non explicitement autorisé est journalisé et rejeté
                log prefix "[FW] [REJECT] [RID=667] " counter packets 0 bytes 0 reject comment "Rejette tout trafic sortant non explicitement autorise"
        }
 
        chain forward {
                type filter hook forward priority filter; policy drop;
 
                # Transmets tout paquet en relation avec un trafic explicitement autorisé en forwarding
                ct state established,related counter accept comment "Transfert les trafics des connexions explicitement autorisees"
 
                # Journalise et rejette tout transfert non explicitement autorisé
                log prefix "[FW] [REJECT] [RID=668] " counter reject comment "Refuse toute transmission non explicitement autorisee"
        }
}
netadmin/nftables/exemples/nft_configuration_serveur_ftp.1720801747.txt.gz · Dernière modification : 2024/07/12 16:29 de yoann