Documentation initiale pour nftables

This commit is contained in:
Tristan PILAT 2020-08-17 18:05:07 +02:00
parent 44ab6aa93f
commit 152e217c14

111
Howtonftables.md Normal file
View file

@ -0,0 +1,111 @@
---
title: Howto nftables
categories: sysadmin network firewall routing
...
* WIKI nftables <https://wiki.nftables.org/>
[Nftables](https://wiki.nftables.org/) est un sous-système du noyau Linux assurant le filtrage et la classification des paquets / datagrammes / trames réseau. Il est disponible depuis le noyau Linux 3.13 publié le 19 janvier 2014. Il est destiné à remplacer l'ancien système iptables de Netfilter. Parmi les avantages de nftables par rapport à iptables, il y a moins de duplication de code ainsi qu'une meilleure prise en charge des nouveaux protocoles. La configuration est gérée via le programme nft, tandis que les outils hérités sont configurés via les utilitaires iptables, ip6tables, arptables et ebtables frameworks. Il utilise les éléments des modules Netfilter du noyau Linux, tels que les hooks existants dans la pile réseau, le système de suivi des connexions, le composant de mise en file d'attente de l'espace utilisateur et le sous-système de journalisation.
Depuis Debian Buster, nftables est le backend par défaut lors de l'utilisation d'iptables, grâce à la couche iptables-nft (utilisation de la syntaxe iptables assurant la compatabilité avec le sous-système du noyau nf_tables). Cela affecte également ip6tables, arptables et ebtables.
Le programme iptables-translate(8) permet la traduction des règles iptables au format nftables.
## Installation
Pour installer et activer nftables :
~~~
# apt install nftables
# systemctl enable nftables.service
~~~
Par défaut, les règles chargées se trouvent dans /etc/nftables.conf.
NB: Si pour une raison quelconque nftables a des problèmes pour démarrer, par défaut aucune règle n'est appliquée, ce qui signifie tout le trafic sera autorisé. Cela peut se produire si vous utilisez des noms d'hôte dans les règles, ce qui posera problème au démarrage nftables démarrant avant que la résolution de nom ne soit disponible.
## Commandes utiles
Lister les tables existantes :
~~~
# nft list tables
~~~
Lister le contenu de la table « filter » :
~~~
# nft list table inet filter
~~~
Supprimer l'ensemble des règles de la table « filter » :
~~~
# nft flush table inet filter
~~~
Lister l'ensemble des règles :
~~~
# nft list ruleset
~~~
Supprimer l'ensemble des règles :
~~~
# nft flush ruleset
~~~
Créer une table (IPv4/IPv6) « filter » :
~~~
# nft add table inet filter
~~~
*La fiamille de type inet permet l'unification des types ip (IPv4) et ip6 (IPv6).*
Supprimer la table « filter » ainsi que les règles associées :
~~~
# nft delete table inet filter
~~~
Ajouter une chaine « input » à la table « filter » pour le trafic (IPv4/IPv6) en entrée :
~~~
# nft add chain inet filter input { type filter hook input priority 0\; }
~~~
*Le type peut être **filter**, **route**, ou **nat**.*
*Le type de hook peut être **prerouting**, **input**, **forward**, **output**, or **postrouting**.*
*On peut remplacer **add** par **create** pour ajouter une nouvelle chaine mais retrourner une erreur si cette chaine existe déjà.*
Supprimer la chaine « input » de la table « filter » :
~~~
# nft delete chain inet filter input
~~~
Ajouter une règle à la chaine « input » de la table « filter » pour autoriser le trafic SSH en entrée :
~~~
# nft add rule inet filter input tcp dport ssh inet accept comment "Accept SSH on port 22"
# nft add rule inet filter input tcp dport {80, 443} ct state new,established counter accept
~~~
Supprimer toutes les règles de la chaine « input » appartenant à la table « filter » :
~~~
# nft flush chain inet filter input
~~~
Sous Debian des exemples de configuration sont visibles dans le dossier **/usr/share/doc/nftables/examples/**
## Débogage
## Liens
* [WIKI ARCHLINUX](https://wiki.archlinux.org/index.php/Nftables)
* [WIKI DEBIAN](https://wiki.debian.org/nftables)
* [WIKI NFTABLES](https://wiki.nftables.org/wiki-nftables/index.php/)
* [PAGE WIKIPEDIA](https://en.wikipedia.org/wiki/Nftables)