Page suivante Page précédente Table des matières

3. Je suis troublé ! Routage, camouflage, redirection de ports, ipautofw...

Ce HOWTO a pour sujet le filtrage de paquets. Ce filtrage permet la prise de décision concernant le destin d'un paquet : s'il est autorisé à passer ou non. Cependant, Linux étant le joujou pour bidouilleurs qu'il est, vous voudriez probablement en savoir un peu plus.

Un des problèmes est que le même outil ("ipchains") est utilisé pour contrôler à la fois le camouflage et le cache transparent, alors que ce sont des notions séparées du filtrage de paquets (l'implémentation actuelle de Linux les brouille tous les trois de façon inhabituelle, laissant l'impression qu'ils sont très proches).

Le camouflage et le cachage sont recouverts par des HOWTOs séparés, et les possibilités de redirection automatique et de redirection de ports sont contrôlées par des outils séparés, mais puisque de nombreuses personnes continuent à me harceler à leur propos, je vais ajouter un ensemble de scénarios classiques en indiquant les moments où chacun doit être utilisé. Les mérites de la sécurité de chacun de ces scénarios ne seront néanmoins pas discutés ici.

3.1 Le guide du camouflage en 3 lignes par Rusty

Ces lignes présument que votre interface externe est appellée "ppp0". Utilisez ifconfig pour le vérifier, et ajustez selon votre goût.

# ipchains -P forward DENY
# ipchains -A forward -i ppp0 -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward

3.2 Publicité gratuite : le zèle de WatchGuard

Vous pouvez acheter des pare-feu tout faits. Un excellent est le FireBox de WatchGuard. C'est excellent parce que je l'apprécie, parce qu'il est sécurisé, basé sur Linux, et parce qu'ils financent la maintenance d'ipchains ainsi que du nouveau code pare-feu (prévu pour le 2.3). En bref, WatchGuard me paye à manger lorsque je travaille pour vous. Donc, je vous prierai de prendre leur travail en compte.

http://www.watchguard.com

3.3 Configurations classiques de type pare-feu

Vous êtes petiteboite.com. Vous avez un réseau interne, et une connexion intermittente (PPP) simple à l'Internet (firewall.petiteboite.com a pour IP 1.2.3.4). Vous êtes en Ethernet sur votre réseau local, et votre machine personnelle s'appelle "mamachine".

Cette section illustrera les différents arrangements classiques. Lisez attentivement, car ils sont tous subtilement différents.

Réseaux privés : caches traditionnels

Dans ce scénario, les paquets venant d'un réseau privé ne traversent jamais l'Internet, et vice versa. Les adresses IP du réseau privé doivent être assignées en utilisant les adresses privées réservées par la RFC 1597 (càd 10.*.*.*, 172.16.*.* ou 192.168.*.*).

La seule méthode pour que les choses soient connectés à l'Internet est en se connectant au pare-feu, qui est la seule machine sur les deux réseaux qui sont connectés plus loin. Vous lancez un programme (sur le pare-feu) appellé un proxy pour ce faire (il y a des proxy (caches) pour le FTP, l'accès web, telnet, RealAudio, les News Usenet et autres services). Voyez le Firewall HOWTO.

Tous les services auxquels vous voulez que l'Internet puisse avoir accès doivent être sur le pare-feu (mais voyez Services internes limités plus bas).

Exemple : autoriser l'accès web d'un réseau privé vers l'Internet.

  1. On a assigné les adresses 192.168.1.* au réseau privé, avec mamachine étant 192.168.1.100, et l'interface Ethernet du pare-feu étant assignée à 192.168.1.1.
  2. Un cache web (comme "squid") est installé et configuré sur le pare-feu, disons tournant sur le port 8080.
  3. Netscape sur le réseau privé est configuré pour utiliser le pare-feu port 8080 comme cache.
  4. Le DNS n'a pas besoin d'être configuré sur le réseau privé.
  5. Le DNS doit être configuré sur le pare-feu.
  6. Le réseau privé n'a pas besoin de disposer de route par défaut (passerelle).

Netscape sur mamachine lit http://slashdot.org.

  1. Netscape se connecte sur le port 8080 du pare-feu, en utilisant le port 1050 de mamachine. Il demande la page web de "http://slashdot.org".
  2. Le cache recherche le nom "slashdot.org", et obtient 207.218.152.131. Il ouvre alors une connexion sur cette adresse IP (en utilisant le port 1025 de l'interface externe du pare-feu), et demande la page au serveur web (port 80).
  3. En recevant la page web par sa connexion au serveur web, le pare-feu copie les données vers la connexion de Netscape.
  4. Netscape affiche la page.

C'est-à-dire que du point de vue de slashdot.org, la connexion est réalisée par 1.2.3.4 (interface PPP du pare-feu), port 1025, vers 207.218.152.131 (slashdot.org) port 80. Du point de vue de mamachine, la connexion est faite de 192.168.1.100 (mamachine) port 1050, vers 192.168.1.1 (interface Ethernet du pare-feu), port 8080.

Réseaux privés : caches transparents

Dans ce scénario, les paquets venant du réseau privé ne traversent jamais l'Internet, et vice versa. Les adresses IP du réseau privé doivent être assignées en utilisant les adresses privées réservées par la RFC 1597 (càd 10.*.*.*, 172.16.*.* ou 192.168.*.*).

La seule méthode pour que les choses soient connectées à l'Internet est en se connectant au pare-feu, qui est la seule machine sur les deux réseaux, qui sont connectés plus loin. Vous lancez un programme (sur le pare-feu) appellé un cache transparent pour ce faire ; le noyau envoie les paquets sortants au cache transparent au lieu de les envoyer plus loin (càd qu'il rend bâtard le routage).

Le cachage transparent signifie que les clients n'ont pas besoin de savoir qu'il y a un proxy dans l'histoire.

Tous les services que l'Internet peut utiliser doivent être sur le pare-feu (mais voyez Services internes limités plus bas).

Exemple : autoriser l'accès web du réseau privé vers l'Internet.

  1. On a assigné les adresses 192.168.1.* au réseau privé, avec mamachine étant 192.168.1.100, et l'interface Ethernet du pare-feu étant assignée à 192.168.1.1.
  2. Un proxy web transparent (je présume qu'il existe des correctifs pour squid lui permettant d'opérer de cette façon, sinon, essayez "transproxy") est installé et configuré sur le pare-feu, disons tournant sur le port 8080.
  3. On dit au noyau de rediriger les connexions sur le port 80 du proxy, en utilisant ipchains.
  4. Netscape, sur le réseau privé, est configuré pour se connecter directement.
  5. Le DNS doit être configuré sur le réseau privé (càd que vous devez faire tourner un serveur DNS de la même manière que le proxy sur le pare-feu).
  6. La route par défaut (passerelle) doit être configuré sur le réseau privé, pour envoyer les paquets au pare-feu.

Netscape sur mamachine lit http://slashdot.org.

  1. Netscape recherche le nom "slashdot.org", et obtient 207.218.152.131. Il ouvre alors une connexion vers cette adresse IP, en utilisant le port local 1050, et demande la page au serveur web (port 80).
  2. Comme les paquets venant de mamachine (port 1050) et allant sur slashdot.org (port 80) passent par le pare-feu, ils sont redirigés sur le proxy transparent en attente sur le port 8080. Le cache transparent ouvre alors une connexion (en utilisant le port local 1025) vers 207.218.152.131 port 80 (vers lequel les paquets de départ allaient).
  3. Alors que le cache reçoit la page web par sa connexion avec le serveur web, il copie les données vers la connexion avec Netscape.
  4. Netscape affiche la page.

C'est à dire que du point de vue de slashdot.org, la connexion est réalisée par 1.2.3.4 (interface PPP du pare-feu) port 1025 vers 207.218.152.131 (slashdot.org) port 80. Du point de vue de mamachine, la connexion est faite à partir de 192.168.1.100 (mamachine) port 1050, vers 207.218.152.131(slashdot.org) port 80, mais il parle en fait au proxy transparent.

Réseaux privés : camouflage

Dans ce scénario, les paquets venant du réseau privé ne traversent jamais l'Internet sans traitement spécial, et vice versa. Les adresses IP du réseau privé doivent être assignées en utilisant les adresses privées réservées par la RFC 1597 (càd 10.*.*.*, 172.16.*.* ou 192.168.*.*).

Au lieu d'utiliser un cache, nous utilisons une spécificité spéciale du noyau nommée "camouflage" (masquerading). Le camouflage réécrit les paquets lorsqu'ils passent par le pare-feu, ce qui fait qu'ils semblent toujours venir du pare-feu lui-même. Il réécrit ensuite les réponses afin qu'elles semblent venir du destinataire originel.

Le camouflage dispose de modules séparés afin de gérer les protocoles "étranges", comme FTP, RealAudio, Quake, etc. Pour les protocoles vraiment difficiles à gérer, la spécificité de "redirection automatique" (auto forwarding) peut en gérer quelques-uns en configurant automatiquement la redirection de ports pour un ensemble donné de ports : voyez "ipportfw" (noyaux 2.0) ou "ipmasqadm" (noyaux 2.1 et supérieurs).

Tous les services auxquels vous voulez que l'Internet puisse avoir accès doivent être sur le pare-feu (mais voyez Services internes limités plus bas).

Exemple : autoriser l'accès web du réseau privé sur l'Internet.

  1. On a assigné les adresses 192.168.1.* au réseau privé, avec mamachine étant 192.168.1.100, et l'interface Ethernet du pare-feu étant assignée à 192.168.1.1.
  2. Le pare-feu est configuré pour camoufler tous les paquets venant du réseau privé et allant sur le port 80 d'un hôte sur Internet.
  3. Netscape est configuré pour se connecter directement.
  4. Le DNS doit être configuré correctement sur le réseau privé.
  5. Le pare-feu doit être la route par défaut (passerelle) du réseau privé.

Netscape sur mamachine lit http://slashdot.org.

  1. Netscape recherche le nom "slashdot.org", et obtient 207.218.152.131. Il ouvre alors une connexion vers cette adresse IP, en utilisant le port local 1050, et demande la page au serveur web (port 80).
  2. Comme les paquets venant de mamachine (port 1050) et allant sur slashdot.org (port 80) passent par le pare-feu, ils sont réécrits pour venir de l'interface PPP du pare-feu, port 65000. Le pare-feu a une adresse Internet valide (1.2.3.4), donc les paquets venant de slashdot.org sont routés correctement.
  3. Lorsque les paquets venant de slashdot.org (port 80) sur firewall.petiteboite.com (port 65000) arrivent, ils sont réécrits pour aller sur mamachine, port 1050. La véritable magie du camouflage se trouve ici : il se souvient des paquets sortants réécrits afin de pouvoir réécrire les paquets entrants qui en sont la réponse.
  4. Netscape affiche la page.

C'est à dire que du point de vue de slashdot.org, la connexion est réalisée de 1.2.3.4 (interface PPP du pare-feu), port 65000 vers 207.218.152.131 (slashdot.org) port 80. Du point de vue de mamachine, la connexion est faite entre 192.168.1.100 (mamachine) port 1050, et 207.218.152.131 (slashdot.org) port 80.

Réseaux publics

Dans ce scénario, votre réseau personnel fait partie de l'Internet : les paquets peuvent passer sans avoir à changer de réseau. Les adresses IP du réseau interne doivent être assignées en utilisant un bloc d'adresses IP, de manière à ce que le reste du réseau sache comment vous envoyer des paquets. Ceci implique une connexion permanente.

Dans ce rôle, le filtrage de paquets est utilisé pour restreindre les paquets qui peuvent être redirigés entre votre réseau et le reste de l'Internet, càd pour restreindre le reste de l'Internet à accéder uniquement au serveur web qui se trouve en interne.

Exemple : autoriser l'accès web du réseau privé vers l'Internet.

  1. Votre réseau interne dispose du bloc d'adresses IP que vous avez enregistré, disons 1.2.3.*.
  2. Le pare-feu est configuré pour autoriser tout le trafic.
  3. Netscape est configuré pour se connecter directement.
  4. Le DNS doit être configuré correctement sur votre réseau.
  5. Le pare-feu doit être la route par défaut (passerelle) pour le réseau privé.

Netscape sur mamachine lit http://slashdot.org.

  1. Netscape recherche le nom "slashdot.org", et obtient 207.218.152.131. Il ouvre alors une connexion vers cette adresse IP, en utilisant le port local 1050, et demande la page au serveur web, port 80.
  2. Les paquets passent par votre pare-feu, comme ils passent par d'autres routeurs entre vous et slashdot.org.
  3. Netscape affiche la page.

C'est à dire qu'il n'y a qu'une seule connexion : à partir de 1.2.3.100 (mamachine) port 1050, vers 207.218.152.131 (slashdot.org) port 80.

Services internes limités

Il y a quelques trucs que vous pouvez utiliser pour autoriser l'Internet à accéder à vos services internes, plutôt que de faire tourner vos services internes sur le pare-feu. Ils fonctionneront soit avec un proxy, soit avec une approche type camouflage pour les connexions externes.

L'approche la plus simple est de faire tourner un "redirecteur", qui est un cache de pauvre, attendant une connexion sur un port donné, et ouvrant une connexion sur un hôte et un port interne fixé, et copiant les données entre les deux connexions. Un exemple de ceci est le programme "redir". Du point de vue de l'Internet, la connexion est faite sur votre pare-feu. Du point de vue de votre serveur interne, la connexion est faite par l'interface interne du pare-feu sur le serveur.

Une autre approche (qui nécessite un noyau 2.0 corrigé pour ipportfw, ou un noyau 2.1 ou supérieur) est d'utiliser la redirection des ports du noyau. Il effectue le même travail que "redir" d'une manière différente : le noyau réécrit les paquets lorsqu'ils passent, en changeant leur adresse de destination et le port pour les faire pointer sur un port et un hôte interne. Du point de vue de l'Internet, la connexion est faite sur votre pare-feu. Du point de vue de votre serveur interne, une connexion directe est réalisée entre l'hôte Internet et votre serveur.

3.4 Pour plus d'informations sur le camouflage

David Ranch a écrit un excellent howto tout neuf sur le camouflage, qui en grande partie recouvre ce howto. Vous pouvez le trouver sur http://www.ecst.csuchico.edu/~dranch/LINUX/index-LINUX.html

J'espère pouvoir bientôt le trouver hébergé sous les auspices du LDP (Linux Documentation Project), sur http://www.metalab.unc.edu/LDP.

La page officielle du camouflage se trouve sur http://ipmasq.cjb.net.


Page suivante Page précédente Table des matières