#!/usr/sbin/nft -f # Géré par Ansible (rôle durcissement) — ne pas modifier à la main. # Politique : tout est refusé en entrée sauf loopback, trafic déjà établi, # ICMP, et les ports {{ durcissement_ports_ouverts | join(', ') }}. flush ruleset table inet filter { chain input { type filter hook input priority 0; policy drop; iif lo accept ct state established,related accept ct state invalid drop ip protocol icmp accept meta l4proto ipv6-icmp accept tcp dport { {{ durcissement_ports_ouverts | join(', ') }} } accept } chain forward { type filter hook forward priority 0; policy drop; {% if reseau_veth_gw_subnet is defined %} # Un seul sens autorisé : réseau externe OpenStack -> Internet (NAT), # plus les réponses à ce trafic. Rien n'entre depuis Internet vers les # réseaux internes ; tout le reste est refusé par la politique drop. iifname "{{ reseau_veth_gw }}" oifname "{{ reseau_interface_publique }}" ip saddr {{ reseau_veth_gw_subnet }} accept iifname "{{ reseau_interface_publique }}" oifname "{{ reseau_veth_gw }}" ct state established,related accept {% endif %} } chain output { type filter hook output priority 0; policy accept; } } # Autres règles (NAT, etc.), déposées par d'autres rôles. Un glob sans fichier # correspondant n'est pas une erreur pour nft : cette ligne ne casse rien tant # que /etc/nftables.d/ est vide. include "/etc/nftables.d/*.conf"