Différences
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 | ||
130netfilter:50-commencer_avec_nftables [le 24/06/2025 à 17:46] – [Vérifier le travail] prof | 130netfilter:50-commencer_avec_nftables [le 28/06/2025 à 12:31] (Version actuelle) – [Ajout de règles dans la chaîne «input_ipv6»] prof | ||
---|---|---|---|
Ligne 102: | Ligne 102: | ||
pour faire table rase. Puis nous (re)créons une table «inet filter»: | pour faire table rase. Puis nous (re)créons une table «inet filter»: | ||
nft add table inet filter | nft add table inet filter | ||
- | <note warning> | + | <note warning> |
Ceci étant dit, allons-y quand même. | Ceci étant dit, allons-y quand même. | ||
- | ==== Créer | + | |
- | Dans cette table, ajoutons une chaîne: | + | 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' |
+ | |||
+ | ==== Créer | ||
| | ||
< | < | ||
+ | < | ||
+ | < | ||
< | < | ||
Ligne 113: | 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; | ||
} | } | ||
} | } | ||
- | |||
</ | </ | ||
Jusque là, tout va bien;'' | Jusque là, tout va bien;'' | ||
- | ==== Ajout d'une règle | + | ==== Ajout de règles |
- | qui va explicitement laisser l'entrée ouverte sur les ports TCP 22, 80 et 443: | + | Nous allons ajouter des filtres pour icmp (v4) pour accepter '' |
< | < | ||
- | < | + | < |
< | < | ||
table inet filter { | table inet filter { | ||
+ | chain input_ipv4 { | ||
+ | type filter hook input priority filter; policy accept; | ||
+ | <span class=" | ||
+ | } | ||
+ | |||
+ | 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 | ||
} | } | ||
} | } | ||
+ | |||
</ | </ | ||
- | Maintenant que nous sommes capables d' | + | ==== Ajout de règles dans la chaîne «input_ipv6» ==== |
+ | Ici, il faut en plus autoriser les types «nd-neighbor-solicit, | ||
< | < | ||
- | < | + | < |
+ | < | ||
< | < | ||
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=" | ||
+ | <span class=" | ||
+ | } | ||
+ | |||
chain input { | chain input { | ||
- | type filter hook input priority filter; | + | type filter hook input priority filter; policy accept; |
- | tcp dport { 22, 80, 443 } accept | + | |
} | } | ||
} | } | ||
+ | </ | ||
+ | ==== Ajout de règles dans la chaîne «input» ==== | ||
+ | C'est ici que le destin de notre pare-feu se joue... | ||
+ | Concernant l' | ||
+ | nft add rule inet filter input iifname " | ||
+ | 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» | ||
</ | </ | ||
Ligne 151: | Ligne 191: | ||
nft add rule inet filter input ct state established, | nft add rule inet filter input ct state established, | ||
tout laisser entrer par l' | tout laisser entrer par l' | ||
- | | + | |
autoriser certains signaux icmp: | autoriser certains signaux icmp: | ||
nft add rule inet filter input icmp type {echo-request, | nft add rule inet filter input icmp type {echo-request, | ||
Ligne 195: | Ligne 235: | ||
</ | </ | ||
===== Vérifier le travail ===== | ===== Vérifier le travail ===== | ||
- | depuis le poste d' | ||
- | Oui mais... | ||
- | < | ||
- | < | ||
- | |||
- | user sshd pts/1 | ||
- | </ | ||
- | **who**((commande qui permet d' | ||
- | |||
- | Fermeture de la connexion et ré-ouverture en appelant explicitement l' | ||
- | < | ||
- | < | ||
- | |||
- | <span class=" | ||
- | </ | ||
- | Il est pourtant bien dit dans la [[https:// | ||
Après de nombreux essais, voici une solution efficiente, mais pas évidente: | Après de nombreux essais, voici une solution efficiente, mais pas évidente: | ||
Ligne 228: | Ligne 252: | ||
chain input_ipv6 { | chain input_ipv6 { | ||
icmpv6 type { nd-neighbor-solicit, | icmpv6 type { nd-neighbor-solicit, | ||
- | icmpv6 type echo-requestlimit | + | icmpv6 type echo-request limit rate 5/second accept |
} | } | ||
Commencer avec Nftables: Dernière modification le: 24/06/2025 à 17:46 par prof