nftables bloque ipV6 mais pas ipV4 Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
olivbarb
Messages : 7
Inscription : 01 mai 2023, 09:31
Status : Hors-ligne

Bonjour,

Voici mon nftables.rules qui fonctionne très bien ... IpV4

Code : Tout sélectionner

table inet filtre_ipV4_V6 {
	chain entree_V4_V6 {
		type filter hook input priority filter; policy accept;
		ct state invalid drop
		ct state established,related accept
		icmp type echo-reply accept
		icmpv6 type echo-reply accept
		drop		
	}

	chain sortie_V4_V6 {
		type filter hook output priority filter; policy accept;
		tcp dport 53 accept
		tcp dport 80 accept
		tcp dport 443 accept
		tcp dport 547 accept
		udp dport 547  accept
		icmp type echo-request accept
		icmpv6 type echo-request accept
		ip daddr 192.168.0.254 accept
		drop
	}
}
mais impossible d'obtenir une ip v6

J'ai tout essayé (enfin sauf ce qui fonctionne :icon_eek: ) mais rien ne marche. Vous pourriez m'expliquer pourquoi ? Et éventuellement me dire comment l'améliorer pour une plus grande sécurité

Pour info je suis derrière une freebox et sous debian Bookworm
Avatar de l’utilisateur
Grhim
Membre très actif
Membre très actif
Messages : 1389
Inscription : 30 mai 2016, 01:00
Localisation : kekparr'par'là
Status : Hors-ligne

Il peu s'inspirer de l'exemple suivant : https://wiki.gentoo.org/wiki/Nftables/Examples
Debian Stable + Testing -.- Parrot OS - Kali Exegol -.- Raspberry IPFire
Avatar de l’utilisateur
diesel
Membre
Membre
Messages : 271
Inscription : 29 oct. 2022, 22:43
Status : Hors-ligne

Ben..., tes chaînes doivent forcement s'appeler "input", "output" ou "forward".

Amicalement.

Jean-Marie
olivbarb
Messages : 7
Inscription : 01 mai 2023, 09:31
Status : Hors-ligne

Sauf si je n'ai pas compris nftables mais ce sont les hook qui doivent s'appeler input, output et forward. En plus ça fonctionnent avec l'ipV4 donc le pb vient d'ailleurs
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Si tu as bien compris, avec nftables : il n'y a pas de tables ou de chaînes pré-construites et le nommage est libre.

@diesel est resté sur ses acquis avec iptables,
mais les choses ont évoluées (depuis déjà un bon moment).

L'embrouille vient qu'une couche de "compatibilité" a été mise en place pour adoucir la transition,
faisant que l'on peut avoir l'impression d'utiliser encore iptables,
alors que c'est nftables qui est utilisé par le jeu des alternatives.

Suivre le jeu de piste pour s'en convaincre :

Code : Tout sélectionner

$ whereis iptables                                            
iptables: /usr/sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz

$ ls -l /usr/sbin/iptables
lrwxrwxrwx 1 root root 26 31 mars   2021 /usr/sbin/iptables -> /etc/alternatives/iptables

....
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
diesel
Membre
Membre
Messages : 271
Inscription : 29 oct. 2022, 22:43
Status : Hors-ligne

Effectivement, j'ai répondu trop vite. Chez moi, j'ai mis la même chaîne de caractères ("input" par exemple) pour la chaîne et le hook correspondant.

Amicalement.

Jean-Marie
olivbarb
Messages : 7
Inscription : 01 mai 2023, 09:31
Status : Hors-ligne

cool, ça confirme le peu de connaissance que j'ai sur nftables. Mais ça ne me dit pas pourquoi ça fonctionne en ipV4 et pas en ipV6 :unknw:
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

Si tu bloques les types ICMPv6 utilisés par NDP ({router,neighbor}-{solicitation,advertisement}), forcément ça va marcher beaucoup moins bien.
olivbarb
Messages : 7
Inscription : 01 mai 2023, 09:31
Status : Hors-ligne

Voici mon nftables.rules qui fonctionne parfaitement en ipv4 ET en ipV6. Merci à vous tous pour vos précieux conseils.

Encore 2 petites questions :
- si j'ai bien compris : la ligne

Code : Tout sélectionner

ip daddr 192.168.0.254 accept
et la ligne

Code : Tout sélectionner

ip6 nexthdr {udp, icmpv6} accept
ont la même fonction ?

- comment peut-on améliorer mon nftables.rules pour plus de sécurité ?

Code : Tout sélectionner

table inet filtre_ipV4_V6 {
	chain entree_V4_V6 {
		type filter hook input priority filter; policy accept;
		ct state invalid drop
		ct state established,related accept
		icmp type echo-reply accept
		ip6 nexthdr {udp, icmpv6} accept
		drop
	}

	chain sortie_V4_V6 {
		type filter hook output priority filter; policy accept;
		tcp dport 53 accept
		tcp dport 80 accept
		tcp dport 443 accept
		tcp dport 67 accept
		icmp type echo-request accept
		ip daddr 192.168.0.254 accept
		ip6 nexthdr {udp, icmpv6} accept
		drop
	}
}
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

olivbarb a écrit : 15 août 2023, 07:02 - si j'ai bien compris : la ligne

Code : Tout sélectionner

ip daddr 192.168.0.254 accept
et la ligne

Code : Tout sélectionner

ip6 nexthdr {udp, icmpv6} accept
ont la même fonction ?
Pas du tout. Qu'est-ce qui te fait penser cela ?
La première accepte les paquets destinés à 192.168.0.254 alors que la seconde accepte les paquets IPv6 UDP et ICMPv6.
olivbarb a écrit : 15 août 2023, 07:02 - comment peut-on améliorer mon nftables.rules pour plus de sécurité ?
On efface tout et on recommence, en commençant par écrire une spécification de besoin claire (autoriser ceci, bloquer cela...).
Avatar de l’utilisateur
zargos
Membre
Membre
Messages : 197
Inscription : 07 juil. 2023, 13:34
Status : Hors-ligne

D'une façon générale, il vaut mieux séparer les règles qui gèrent l'IPV4 de celle qui gèrent IPv6 pour plus de clarté. D'autant que la gestion de l'IPv6 et de l'IPv4 comportent de nombreuses (petites?) différences.
Cela implique parfois des répétitions, mais au moins il est plus facile de s'y retrouver.
Répondre