Outils pour utilisateurs

Outils du site


Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
130netfilter:50-commencer_avec_nftables [le 27/06/2025 à 14:18] – [Créer une table] prof130netfilter:50-commencer_avec_nftables [le 28/06/2025 à 12:31] (Version actuelle) – [Ajout de règles dans la chaîne «input_ipv6»] prof
Ligne 107: Ligne 107:
 Après de très nombreux essais plus que décevants concernant le filtrage simultané des ports tcp entrants en ipv4 **comme** en ipv6, et dont une lecture à de nombreuses reprises de la documentation qui n'a pas réussi à m'éclairer, voici un exemple qui fonctionne, inspiré d'ailleurs de la documentation officielle. Après de très nombreux essais plus que décevants concernant le filtrage simultané des ports tcp entrants en ipv4 **comme** en ipv6, et dont une lecture à de nombreuses reprises de la documentation qui n'a pas réussi à m'éclairer, voici un exemple qui fonctionne, inspiré d'ailleurs de la documentation officielle.
  
-==== Créer une chaîne dans la table ==== +==== Créer trois chaînes dans la table ==== 
-Dans cette table, ajoutons une chaîne:+
      
 <html><pre class="code"> <html><pre class="code">
 +<b>nft add chain inet filter input_ipv4 '{type filter hook input priority 0 ;  }'</b>
 +<b>nft add chain inet filter input_ipv6 '{type filter hook input priority 0 ;  }'</b>
 <b>nft add chain inet filter input '{type filter hook input priority 0 ;  }'</b> <b>nft add chain inet filter input '{type filter hook input priority 0 ;  }'</b>
  
Ligne 116: Ligne 118:
  
 table inet filter { table inet filter {
 + chain input_ipv4 {
 + type filter hook input priority filter; policy accept;
 + }
 +
 + chain input_ipv6 {
 + type filter hook input priority filter; policy accept;
 + }
 +
  chain input {  chain input {
  type filter hook input priority filter; policy accept;  type filter hook input priority filter; policy accept;
  }  }
 } }
- 
 </pre></html> </pre></html>
 Jusque là, tout va bien;''nft'' a mis par défaut la «policy» "accept". Jusque là, tout va bien;''nft'' a mis par défaut la «policy» "accept".
-==== Ajout d'une règle dans la chaîne ==== +==== Ajout de règles dans la chaîne «input_ipv4» ==== 
-qui va explicitement laisser l'entrée ouverte sur les ports TCP 2280 et 443:+Nous allons ajouter des filtres pour icmp (v4) pour accepter ''icmp-request'', mais avec une limitation sur le débit:
 <html><pre class="code"> <html><pre class="code">
-<b>nft add rule inet filter input  tcp dport {22, 80, 443} accept</b>+<b>nft add rule inet filter input_ipv4  icmp type echo-request limit rate 5/second  accept</b>
  
 <b>nft list ruleset</b> <b>nft list ruleset</b>
  
 table inet filter { table inet filter {
 + chain input_ipv4 {
 + type filter hook input priority filter; policy accept;
 + <span class="hly">icmp type echo-request <b>limit rate 5/second</b> accept</span>
 + }
 +
 + chain input_ipv6 {
 + type filter hook input priority filter; policy accept;
 + }
 +
  chain input {  chain input {
  type filter hook input priority filter; policy accept;  type filter hook input priority filter; policy accept;
- tcp dport { 22, 80, 443 } accept 
  }  }
 } }
 +
 </pre></html> </pre></html>
-Maintenant que nous sommes capables d'utiliser ssh pour la suitenous changeons la politique par défaut du filtre input:+==== Ajout de règles dans la chaîne «input_ipv6» ==== 
 +Iciil faut en plus autoriser les types «nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert» nécessaires à l'auto-configuration IPv6 :
 <html><pre class="code">  <html><pre class="code"> 
-<b>nft chain inet filter input '{policy drop; }'</b> +<b>nft add rule inet filter input_ipv6  icmpv6 type echo-request limit rate 5/second  accept</b> 
 +<b>nft add rule inet filter input_ipv6  icmpv6 type nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert  accept</b>
 <b>nft list ruleset</b> <b>nft list ruleset</b>
  
 table inet filter { table inet filter {
 + chain input_ipv4 {
 + type filter hook input priority filter; policy accept;
 + icmp type echo-request limit rate 5/second accept
 + }
 +
 + chain input_ipv6 {
 + type filter hook input priority filter; policy accept;
 + <span class="hly"><b>icmpv6</b> type echo-request limit rate 5/second accept</span>
 + <span class="hly"><b>icmpv6</b> type { nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept</span>
 + }
 +
  chain input {  chain input {
- type filter hook input priority filter; <span class="bhly">policy drop;</span> + type filter hook input priority filter; policy accept;
- tcp dport { 22, 80, 443 } accept+
  }  }
 } }
 +</pre></html>
 +==== Ajout de règles dans la chaîne «input» ====
 +C'est ici que le destin de notre pare-feu se joue...
 +Concernant l'interface locale:
 +  nft add rule inet filter input iifname "lo" accept
 +Concernant le suivi des connexions :
 +  nft add rule inet filter input ct state vmap { established : accept, related : accept, invalid : drop }
 +Mettre en œuvre les chaînes «input_ipv4» et «input_ipv6»
  
 </pre></html> </pre></html>
Ligne 154: Ligne 191:
   nft add rule inet filter input ct state established, related accept   nft add rule inet filter input ct state established, related accept
 tout laisser entrer par l'interface locale: tout laisser entrer par l'interface locale:
-  nft add rule inet filter input iif lo accept+  Ajout de règles dans la chaîne «input_ipv6»
 autoriser certains signaux icmp: autoriser certains signaux icmp:
   nft add rule inet filter input icmp type {echo-request, destination-unreachable, time-exceeded, parameter-problem} accept   nft add rule inet filter input icmp type {echo-request, destination-unreachable, time-exceeded, parameter-problem} accept
Commencer avec Nftables: Dernière modification le: 27/06/2025 à 14:18 par prof