Fondamentaux IPv4 (pour sécurité réseau local)

Ceci est un petit tuto sur les fondamentaux réseau en IPv4 (partie 1) et en IPv6 (partie 2). Il permet d’avoir les bases nécessaires pour comprendre les enjeux de la sécurité.

IP

Dans l’ancien monde d’IPv4 chaque machine d’internet avait une adresse publique. Elles pouvaient ainsi échanger directement. On affectait aussi des adresses privées à certaines machines qui ne pouvaient dialoguer qu’entre elles et pas avec les machines ayant des adresses publiques.
Ce mode de fonctionnement a quasiment disparu depuis longtemps.

Box

En IPv4, les box internet ont généralement une adresse publique c’est-à-dire visible sur Internet [1]. N’importe qui peut les joindre et s’y connecter, du moins si des services sont exposés, ce qui n’est pas le cas par défaut.
Cette adresse publique est visible en allant dans l’interface de la box ou des services comme Mon IP.

NAT

Le réseau local derrière la box est défini sur une autre plage d’adresses allouées des adresses privées, c’est-à-dire non visibles sur Internet.
Quand une machine (avec une adresse privée) veut accéder à une adresse (publique) sur Internet, par exemple une page web,

  • la machine envoie un paquet avec l’adresse destination du site web et comme adresse source son adresse privée.
  • La box ré-écrit l’adresse source du paquet, la remplace par l’adresse publique de la box et mémorise l’association entre la machine et ce paquet.
  • Le serveur Web reçoit la requête venant de la box et répond à cette même adresse.
  • La box reçoit cette réponse, consulte sa table de correspondances pour retrouver l’adresse privée ayant envoyé la requête, l’écrit dans l’adresse destination du paquet et transmet le paquet sur le réseau local.
  • La machine reçoit le paquet comme s’il venait directement du serveur Web alors que ce dernier n’a jamais vu la vraie adresse (privée) de la machine, mais uniquement l’adresse publique de la box.

Ce mode de fonctionnement s’appelle NAT ou NAT-PAT et permet aux machines du réseau local de recevoir des réponses alors qu’elles n’ont pas d’adresse publique.

:pushpin: Il faut noter que le serveur Internet (bienveillant ou malveillant) n’a pas connaissance de la vraie adresse (privée) de la machine l’ayant contacté.

Le NAT permet certes aux machines de recevoir des réponses, mais pas d’être contactées directement puisqu’elles n’ont pas d’adresse publique. Comment faire pour que mon serveur soit visible sur Internet ?

Redirection de port

Le service NAT qui gère la table de correspondances permet également de définir des entrées statiques. On définit par exemple que tout le trafic entrant vers le port 443 (https) doit être redirigé vers une machine dont on saisit l’adresse IP privée en dur dans la configuration de la box.
:pushpin: Le ou les services redirigés de notre serveur deviennent visibles sur internet avec l’adresse publique de la box, le serveur conservant son adresse privée.

Bilan (provisoire)

Avec IPv4 aucune des machines (PC, téléphone, imprimante, TV, brosse à dent, SmartXXXX) n’est visible d’internet tout en pouvant malgré tout dialoguer directement.

Si on regarde ceci sous l’œil de la sécurité, on voit que les personnes malveillantes ne peuvent pas accéder à notre réseau IPv4 local puisqu’il n’est pas joignable ni même visible. Il leur faut donc trouver d’autres stratégies, la plus efficace étant de demander à l’utilisateur de le laisser rentrer avec un simple phishing: “Mais j’avais un message indiquant que mon ordinateur est infecté et qu’il fallait que je clique sur le lien pour le réparer…”

Pour chaque machine que l’on veut rendre visible sur Internet il faut aller configurer le NAT de la box. Et donc comme on la rend visible elle devient … visible. Et donc la cible de multiples attaques.

UPnP

Donc on a vu que le NAT isolait notre réseau local du monde hostile d’internet, mais les gamers qui ont besoin d’ouvrir des ports trouvent ça pénible, tout comme certains vendeurs de SmartXXXX.
Pour “remédier” à cela on a le protocole UPnP qui permet à une machine d’aller ouvrir les ports à sa guise sur la box.

Bilan

Si le NAT nous isolait d’Internet, avec UPnp activé sur sa box, il suffit d’avoir un SmartXXXX pour avoir tout ou partie de notre réseau privé exposé.
Vous n’aimez pas ? Attendez de lire la partie sur IPv6. Vous allez encore moins aimer.

CGNAT [1]

Dans l’introduction je disais que “les box internet ont généralement une adresse publique”. Avec le CGNAT ce n’est plus le cas. Les box n’ont plus d’adresse publique mais sont dans un réseau privé de l’opérateur qui est lui à son tour NATé pour aller sur Internet.
Ainsi une machine de notre réseau local est NATée deux fois pour aller sur internet ; une fois par la box puis ensuite par le routeur de l’opérateur.
Par contre il n’est plus possible d’exposer un service sur internet car évidemment nous n’avons pas la main sur la configuration du NAT de l’opérateur.
Dans ce cas il suffit de demander à son opérateur de ne pas être en CGNAT, c’est gratuit.

N’hésitez pas à m’envoyer vos commentaires corrections et je modifierai le post.
Je travaille sur un post beaucoup plus court pour IPv6 : c’est plus simple avec IPv6 c’est open bar :wink:

1 Like

Merci pour ton post. Par contre, il ne s’agit pas d’un tutoriel. En travaillant plus le texte, je verrais ça plus comme un article pour le wiki.

On parle de sécurité réseau, mais il n’y a aucune référence à la notion de pare-feu. Il est également fait mention du NAT qui “isole” d’Internet. Il me semble qu’il y a un gros raccourci qui est fait là, le NAT sert uniquement à la traduction.

Je ne suis pas certain que ce soit la bonne manière d’introduire l’IPv6. Ce n’est pas plus ou moins sécurisé que l’IPv4 quand on a le pare-feu activé dans la box du FAI.

1 Like

Ça dépend de l’opérateur, certains vont vous rediriger vers les offres pro (et donc, pas gratuit du tout).

Pour l’IPv6, c’est important de bien expliquer que ça ne fonctionne pas pareil que l’IPv4 actuelle, et qu’il faut faire gaffe, et que oui, selon les capacités de la box, ça peut être du tout ou rien (l’ensemble des appareils dispo sur Internet en direct IPv6, ou AUCUN)

2 Likes

Bonjour SohKa, merci pour tes remarques, je vais essayer d’adapter mon post.

Tout à fait, la section Tutorials est faite pour ça, les admins de YunoHost n’ont pas prévu de Wiki.

Oui, il faut que j’adapte le titre qui laisse entrevoir un article complet ce qui n’est pas l’objectif. Une idée pour un meilleur titre ?

Si le NAT sert à la traduction, la conséquence est qu’il isole et masque totalement le réseau local, c’est ce que j’ai essayé d’expliquer dans cette première partie. C’est souvent la (mauvaise) surprise quand on active IPv6 en pensant que c’est comme juste IPv4 avec des adresses plus longues.

Si vous avez des infos sur les pratiques des opérateurs, je suis preneur pour compléter le post. J’ai la chance de ne jamais avoir été concerné par le CGNAT.

Tout à fait, mais c’est plus long que prévu :wink:
Je vais essayer de poster au plus vite la partie IPv6 qui est la raison pour laquelle j’ai rédigé cette intro sur IPv4: mettre en évidence toutes les différences en réaction au post de @metyun.

La Freebox fait cela avec son pare-feu qui n’est pas configurable. Quoique je découvre qu’elle propose aussi une délégation de sous-réseau. Je me demande si on peut garder le pare-feu actif et déléguer un sous-réseau à un serveur YunoHost.

2 Likes

J’ai modifié le titre et la phrase d’intro.

1 Like

Je comprends que c’est l’impression que ça peut laisser à cause de la manière dont c’est intégré dans certaines box, mais ce n’est pas le cas. Ce que tu assimiles à une isolation est le fait que tu utilises un subnet d’adresse privée qui est non routable sur internet, ça n’a rien à voir avec le NAT. Je t’invite à faire le test avec un subnet d’IPv4 publique et sans firewall, et tu verras que le NAT n’isole rien du tout.

Pour appuyer mon propos, j’invite à lire ce thread stackoverflow (en anglais).

Le fonctionnement d’IPv6 et d’IPv4 ne sont pas différent à cet égard lorsque les deux stacks sont configurés de la même manière. Ce qui peut poser problème, c’est la box de votre opérateur par contre.

1 Like

Oui ce sujet a été largement étudié et débattu. NAT n’a pas été conçu pour des raisons de sécurité mais pour pallier le manque d’adresses IPv4 sur la planète. Les acteurs mal intentionnés s’attendent à ce que les réseaux internes soient en NAT et la plupart des attaques sont conçues pour contourner ça. Donc attention au faux sentiment de sécurité. NAT complique la gestion du réseau et a souvent été une source de failles de sécurité du fait d’erreurs humaines ou de réglages maladroits.
Par ailleurs il serait utile d’ajouter qu’il existe des plages pour les adresses IPv4 privées :

10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255