Digression Installation parefeu (iptables & ip6tables) "pour les nuls"

Tuto IPv6 : message ajouté à la suite de l’original.
Reste encore un lien à apporter … cet AM.

Tout est fait, si tu peux aller vérifier qu’il n’y a pas d’erreurs, ça n’en sera que mieux.
:wink:

À moi ça me semble correct, on peut attendre l’avis de @PascalHambourg.

La seule chose que j’aurais à suggérer, c’est éventuellement (peut-être à terme, mais pourquoi pas dès maintenant ?) de proposer un script complet IPv4/v6 dans le tuto. La façon dont tu as tourné le message dédié à l’IPv6 m’a fait pensé que tu suggères la création de 2 scripts distincts alors que rien n’empêche d’utiliser un même script pour iptables et ip6tables (ce que j’ai fait).

Oui, c’est ce qu’avait préconisé Pascal mais j’avoue que je n’ai pas cherché plus loin et j’ai laissé les deux voies.
Par contre, pourquoi ne pas le proposer, toi.
Je crois que tu dois pouvoir lier un fil au mien, ainsi, ça restera ta création, au lieu d’écrire à la suite.
Si tu veux, envoie-le ici, on pourra en discuter et ça évitera d’éparpiller plusieurs sujet identiques.
je suis d’ailleurs curieux de voir comment tu as transcrit tout ça.

Dans les éventuels ajustements à faire pour convertir un jeu de règles iptables vers ip6tables, ajouter le remplacement d’icmp par icmpv6. A noter que certains types/codes ICMP changent de nom en ICMPv6 (destination-unreachable/fragmentation-needed -> packet-too-big) voire n’existent plus (source-quench), et d’autres font leur apparition.

Sur une machine faisant office de routeur IPv6, les types ICMPv6 router-advertisement et router-solicitation doivent être intervertis entre INPUT et OUTPUT. La règle MASQUERADE n’a normalement pas lieu d’être, l’un des objectifs d’IPv6 étant de pouvoir allouer des adresses globales à toutes les machines.

PS : le message initial contient des balises de formatage qui ne semblent pas interprétées par le nouveau forum.

Pascal, sur l’ajout que j’ai fait, dis-moi ce qui est à modifier :flushed: ou à ajouter, concrètement.

  • Remplacer “icmp” par “icmpv6”.
  • Attention : certains types/codes ICMP n’existent pas ou changent de nom en IPv6 et vice versa.
  • Sur une machine faisant office de routeur IPv6, remplacer
    ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
    par
    ip6tables -A INPUT -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
  • La cible MASQUERADE n’est normalement pas nécessaire, l’un des objectifs d’IPv6 étant de pouvoir allouer des adresses globales à toutes les machines.

Copié/collé du message 469 sur le tuto, fait.

Je mets mes scripts au propre et je propose ça dans la journée :slight_smile:.

impec, j’attends.
Comment fais-tu pour ajouter le nom du destinataire en H à DR ?

Je clique sur le bouton “Répondre” en bas à droite du message auquel je réponds en particulier, en l’occurrence le tien, donc Discourse estime que je te réponds à toi. Si je clique sur le bouton “Répondre” bleu en bas du fil, là je réponds au fil et non à un message particulier.

Édit : tiens, ça ne marche pas à chaque fois ! Je n’avais pas fait attention !

test2 ----
OK, vu.

Essai avec un message plus haut que le dernier

EDIT :
J’ai l’impression que ça ne fonctionne pas si on répond au dernier message mais que ça marche s’il s’agit d’un message antérieur.
À tester

Ça y’est, j’ai déposé ma prose ici. Un coup d’œil de @ricardo et @PascalHambourg me rendraient plus serein :slight_smile:.

Un parcours complet mais pas vraiment approfondi ne m’a révélé aucune erreur.
Il est possible que je teste ton script dans quelques temps car je suis entrain de revoir complètement mon serveur de video-surveillance.

Sur le script init_firewall :

  • Sauf erreur, je ne vois pas la sauvegarde et la restauration du jeu de règles ip6tables.
  • Attention avec Wheezy : la table nat IPv6 n’existe pas dans le noyau 3.2.

Sur le script config_firewall :

  • En IPv4, je ne vois pas l’utilité d’accepter tous les paquets ICMP.
  • En IPv6, je ne vois pas l’utilité d’accepter tous les paquets ICMPv6.
  • Pourquoi accepter tous les paquets ICMPv6 echo-reply en sortie mais pas en entrée et pas en IPv4 ? Note : ce n’est utile que si l’adresse source de la réponse est différente de l’adresse destination de la requête, ce qui n’est à ma connaissance possible que si cette dernière est une adresse anycast ou multicast. Dans le cas contraire, la réponse est dans l’état ESTABLISHED et donc déjà acceptée par une autre règle.

Sur les paragraphes Vérification et À l’usage :

  • Avis personnel : je trouve que le format de sortie d’ip(6)tables -vL est moins lisible que celui d’ip(6)tables-save d’une part, et rend la comparaison avec le fichier config_parefeu plus difficile d’autre part.

Bonsoir,

Dans la partie Vérification, peut-être informer/rajouter l’option ‘–line-numbers’ qui est bien pratique, non ?!

Dans la partie Configuration, peut-être mettre un laïus plus explicite, sur les ports à ouvrir absolument sur une machine pour qu’elle puisse discuter sur un réseau, et bien-sûr lié à Internet a-fortiori.
Tels que 53 (dns:tcp/udp), 67 & 68 (dhcp:udp), 123 (ntp:udp), 5353 (multicast:udp) - qui ne sont vraiment qu’un minimum … non ?!
Et, pourquoi pas faire un petit rappel, sur ceux liés à la gestion de mails, hkp, cups, samba, bref, les plus courants … ?!

En tout cas, j’aime bien les explications claires, limpides…

Sur une machine non serveur (sauf SSH), est-ce que le port 443 doit être obligatoirement ouvert ?
Si oui : tcp, udp, les deux ?
Merci

Non, excepté DNS dans la plupart des cas.

Non, pas obligatoirement.

Et arrêtez de parler de port “ouvert”, c’est ambigu. Ce sont les sockets qui ouvrent des ports, pas le pare-feu. Celui-ci ne fait qu’autoriser ou bloquer des paquets ou des connexions. D’autre part il faut préciser si c’est en entrée ou en sortie. Un poste client qui fait des connexions HTTPS sortantes n’a pas besoin d’autoriser les paquets entrants à destination du port 443.

1 J'aime

@PascalHambourg : merci, j’intègre tout ça dans la journée !


Je ne connaissais pas, je vais l’ajouter en facultatif.

Comme déjà répondu par PascalHambourg, il ne faut pas confondre l’entrée (INPUT) et la sortie (OUTPUT). Pour une machine de bureau, je propose une stratégie (POLICY) OUTPUT sur ACCEPT. Donc tout est autorisé à sortir de la machine. En revanche, à moins que cette machine ne soit un serveur HTTP(S), DNS, DHCP, NTP ou autre, elle n’a aucune raison d’accepter des requêtes en INPUT sur ces ports-là.