aurelien@aschnoebelen.fr:~/blog $

aurelien@aschnoebelen.fr: ~ $ cat ./articles/aide-memoire-nftables/

· 2 min de lecture · #linux #securite #nftables · dir: Sysadmin

Aide-mémoire nftables

Mémo pratique récapitulant les commandes essentielles pour administrer les tables, chaînes et règles nftables sous Debian.

Mémo pour récapituler les commandes à utiliser pour gérer nftables sous Debian.

Note : Ce mémo va être réécrit prochainement.

1. Types de tables

  • ip
  • ip6
  • inet ⇒ préférer ce type, qui prend en charge ipv6 et ipv4.
  • arp
  • bridge
  • netdev

2. Créer une table

nft add table <type> <ma_table>

3. Supprimer une table

nft delete table <type> <ma_table>

4. Ajouter une chaîne

Par sécurité, on va définir une politique par défaut en “policy drop” (tout est droppé par défaut) :

nft add chain <type> <ma_table> <ma_chaîne_1> { type filter hook input priority 0 \; policy drop \; }
nft add chain <type> <ma_table> <ma_chaîne_2> { type filter hook output priority 0 \; }
nft add chain <type> <ma_table> <ma_chaîne_1> { type nat hook prerouting priority 0 \; }
nft add chain <type> <ma_table> <ma_chaîne_2> { type nat hook postrouting priority 0 \; }

5. Supprimer une chaîne

nft delete chain <type> <ma_table> <ma_chaîne>

6. Ajouter une règle

nft add rule <type> <ma_table> <ma_chaîne_1> ip daddr <ip-destination> ip saddr <ip-source> accept
nft add rule <type> <ma_table> <ma_chaîne_2> ip daddr <ip-destination> ip saddr <ip-source> accept
nft add rule <type> <ma_table> <ma_chaîne> tcp dport 80 accept
nft add rule <type> <ma_table> <ma_chaîne> drop

7. Lister les règles avec leur id

nft -a list table <type> <ma_table>

8. Supprimer une règle

nft delete rule <type> <ma_table> <ma_chaîne> handle <numéro-id-règle>

9. Positionner une règle par rapport à un handle

Après la position :

nft add rule <type> <ma_table> <ma_chaîne_1> position <numéro-id-règle> ip daddr <ip-destination> ip saddr <ip-source> accept

Avant la position :

nft insert rule <type> <ma_table> <ma_chaîne_1> position <numéro-id-règle> ip daddr <ip-destination> ip saddr <ip-source> accept

10. Autoriser les connexions entrantes si elles ont été initialisées avant

nft add rule <type> <ma_table> <ma_chaîne_input> ct state established,related accept

Cette règle de suivi d’état doit être placée en tout début de chaîne, immédiatement accompagnée de l’autorisation du trafic local.

# À placer impérativement au début de la chaîne input
nft insert rule <type> <ma_table> <ma_chaîne_input> iifname "lo" accept
nft insert rule <type> <ma_table> <ma_chaîne_input> ct state established,related accept

11. Exporter les données

nft list ruleset > <mon_fichier.txt>

12. Persistance et chargement sous Debian

Sous Debian, le fichier chargé automatiquement au démarrage par Systemd est /etc/nftables.conf.

Voici comment l’activer (soyez sûr de ne pas vous softlock hors de votre machine !) :

# Sauvegarder la configuration active
nft list ruleset > /etc/nftables.conf

# Tester la syntaxe du fichier avant rechargement
nft -c -f /etc/nftables.conf

# Activer et démarrer le service nftables
systemctl enable --now nftables