Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| netadmin:nftables:000_start [2024/03/24 18:48] – yoann | netadmin:nftables:000_start [2024/12/03 09:15] (Version actuelle) – Corrections yoann | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | {{tag> |
| : | : | ||
| Ligne 74: | Ligne 74: | ||
| # La famille peut être précisée en préfixe | # La famille peut être précisée en préfixe | ||
| - | nft list ip aTableName | + | nft list table ip aTableName |
| - | nft list ip6 aTableName | + | nft list table ip6 aTableName |
| - | nft list inet aTableName | + | nft list table inet aTableName |
| - | nft list arp aTableName | + | nft list table arp aTableName |
| - | nft list bridge aTableName | + | nft list table bridge aTableName |
| - | nft list netdev aTableName | + | nft list table netdev aTableName |
| </ | </ | ||
| Ligne 115: | Ligne 115: | ||
| ===== Les chaînes ===== | ===== Les chaînes ===== | ||
| - | Les chaînes contiennent les séquences de règles. On distingue les **chaînes de base** et les **chaines | + | Les chaînes contiennent les séquences de règles. On distingue les **chaînes de base** et les **chaînes |
| * Un **chaîne de base** est un point d' | * Un **chaîne de base** est un point d' | ||
| * Une **chaîne normale** peut être utilisée comme cible par un saut (jump) elle permet notamment de regrouper et d' | * Une **chaîne normale** peut être utilisée comme cible par un saut (jump) elle permet notamment de regrouper et d' | ||
| Ligne 121: | Ligne 121: | ||
| < | < | ||
| add chain aTableName inbound { type filter hook input priority 0; comment " | add chain aTableName inbound { type filter hook input priority 0; comment " | ||
| + | </ | ||
| + | |||
| + | ===== Lister les règles d'une chaine ===== | ||
| + | |||
| + | Pour lister les règles contenues dans une chaine : | ||
| + | < | ||
| + | nft list chain aTablename aChain | ||
| </ | </ | ||
| Ligne 135: | Ligne 142: | ||
| ===== Les règles ===== | ===== Les règles ===== | ||
| + | **Ajouter** une nouvelle règle dans une chaine avec la syntaxe suivante : | ||
| - | Suppression de la règle | + | < |
| + | </ | ||
| + | |||
| + | |||
| + | **Remplacer** une règle | ||
| < | < | ||
| + | # On remplace la règle de la chaine " | ||
| + | # désignée par le handler 21 par la définition qui suit | ||
| + | |||
| + | replace rule ipfilter inbound handle 21 iif lo counter accept comment " | ||
| + | </ | ||
| + | |||
| + | Pour **inserer** une règle on s' | ||
| + | |||
| + | < | ||
| + | # Insertion d'une règle dns la chaine " | ||
| + | # au niveau du handler 12 | ||
| + | |||
| + | insert rule ipfilter outbound position 12 oif lo ct state established, | ||
| + | </ | ||
| + | |||
| + | **Supprimer** la règle désignée par le contrôleur 5 (handler) : | ||
| + | |||
| + | < | ||
| + | # Supprime la règle de la chaine " | ||
| + | # identifiée par le handle 5 | ||
| + | |||
| delete rule aTable aChain handle 5 | delete rule aTable aChain handle 5 | ||
| </ | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Désignation des interfaces ===== | ||
| + | |||
| + | : | ||
| + | |||
| + | Les règles peuvent intégrer des critères de sélection des interfaces | ||
| + | |||
| + | Source : [[https:// | ||
| + | |||
| + | |||
| + | ==== Les états ==== | ||
| + | |||
| + | Une petite précision sur les états des **connexions TCP** disponibles via ct (conntrack), | ||
| + | |||
| + | * **NEW** : Il s'agit des premiers paquets d'une connexion (Exemple : premier paquet TCP SYN d'une connexion TCP). | ||
| + | * **ESTABLISHED** : Echange de paquet dans les deux sens, la connexion est dite " | ||
| + | * **RELATED** : Connexion qui se réfère d'une connexion ESTABLISHED et créé par elle (Exemple, une connexion FTP-DATA après une authentification correcte via le protocole FTP). | ||
| + | * **INVALID** : Paquet sans état et ne pouvant être rattaché à une connexion déjà connue, à dropper. | ||
| + | * **UNTRACKED** : Paquet ne faisant pas partie d'une connexion connue. | ||
| + | |||
| + | |||
| + | ==== Les sets (ensembles) ==== | ||
| + | |||
| + | Voir la note [[netadmin/ | ||
| ===== Compteurs ===== | ===== Compteurs ===== | ||
| Ligne 150: | Ligne 210: | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ===== Journalisation ===== | ||
| + | |||
| + | : | ||
| + | |||
| + | Les valeurs possibles pour **level** correspondent aux niveau de syslog : emerg, alert, crit, err, warn (valeur par défault), notice, info, debug | ||
| ===== Limites ===== | ===== Limites ===== | ||
| Ligne 180: | Ligne 247: | ||
| La suppression d'une limite nommée n'est possible que lorsqu' | La suppression d'une limite nommée n'est possible que lorsqu' | ||
| </ | </ | ||
| + | |||
| + | ===== Activer le service nftables ====== | ||
| + | |||
| + | Sur les distributions récentes basées sur systemd, le service existe mais il n'est pas activé par défaut : | ||
| + | |||
| + | <code bash> | ||
| + | systemctl status nftables.service | ||
| + | ○ nftables.service - nftables | ||
| + | | ||
| + | | ||
| + | Docs: man:nft(8) | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Activer le service '' | ||
| + | |||
| + | <code bash> | ||
| + | systemctl enable --now nftables.service | ||
| + | </ | ||
| + | |||
| + | Le ruleset ''/ | ||
| + | |||
| ===== Exemple ===== | ===== Exemple ===== | ||
| Ligne 215: | Ligne 304: | ||
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| - | * https:// | + | * [[https:// |
| * https:// | * https:// | ||
| * https:// | * https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||