6. Notes techniques sur le masquage IPsec et considérations spéciales sur la sécurité

6.1. Limites et faiblesses du masquage IPsec

Le trafic utilisant le protocole AH ne peut pas être masqué. Le protocole AH inclut un contrôleur d'intégrité cryptographique qui couvre les adresses IP, et que la passerelle de masquage ne peut pas régénérer correctement. Donc tout le trafic AH masqué va être rejeté car il aura des contrôleurs d'intégrité non valides.

Le trafic IPsec utilisant le mode de transport ESP ne peut pas non plus être correctement masqué. Le mode de transport ESP crypte tout ce qui se trouve après l'entête IP. Or, par exemple, les contrôleurs d'intégrité de TCP et UDP incluent les adresses IP source et destination, ils se trouvent dans la partie cryptée, et ne peuvent donc pas être recalculés après que la passerelle de masquage ait modifié les adresses IP. L'entête TCP/UDP ne va donc pas passer les contrôles d'intégrité sur la passerelle distante, et le paquet va être rejeté. Les protocoles n'incluant pas les informations sur les adresses IP source ou destination peuvent utiliser le masquage du mode de transport.

Ces limites mises à part, le masquage IPsec est sûr et fiable à condition qu'un seul hôte IPsec soit masqué à un instant donné, ou que chaque hôte masqué communique avec un serveur distant différent. Lorsque plusieurs machines masquées communiquent avec la même machine distante, quelques faiblesses apparaissent :

Pour éviter ces problèmes, le code des noyaux 2.2.x empêche par défaut l'établissement de plusieurs connexions vers la même machine distante. Si vous estimez que la faiblesse liée à plusieurs connexions vers la même machine distante est acceptable, vous pouvez activer les "sessions parallèles".

Il peut être gênant de bloquer pour des raisons de sécurité les sessions parallèles : il n'y a aucun moyen pour le code de masquage IPsec de sniffer la session et de voir quand elle se termine, donc les entrées de la table de masquage vont être conservées pendant leur durée de vie standard, même si la session se termine juste après qu'elle ait été établie. Si l'on empêche les sessions parallèles, cela signifie que le serveur n'acceptera pas d'autre client tant que l'entrée de la table de masquage la plus récente sera présente. Cela peut prendre plusieurs heures.

6.2. Routage correct du trafic crypté entrant

La partie de l'échange de clés ISAKMP où les valeurs SPI d'ESP sont communiquées est cryptée, donc les valeurs SPI d'ESP doivent être déterminées en étudiant le trafic ESP actuel. Le trafic ESP sortant ne contient aucune indication sur ce que sera le SPI entrant. Cela signifie qu'il n'y a aucune méthode fiable pour associer le trafic ESP entrant avec le trafic ESP sortant.

Le masquage IPsec tente d'associer le trafic ESP entrant et sortant en sérialisant le trafic ESP par machine distante. Concrètement :

Il y a plusieurs possibilités pour que l'association de trafic ne se fasse pas proprement :

La meilleure solution est d'avoir un moyen de pré-charger la table de masquage avec les bonnes paires SPI-sortie/SPI-entrée, ou une autre forme d'association machine_distante + SPI_entrée avec la machine_masquée. Cela ne peut pas être fait en suivant l'échange de clés ISAKMP, car il est crypté. Il peut être possible d'utiliser RSIP (également connu en tant que Translation d'Adresse Réseau pour un hôte (NdT : Host-NAT)) pour communiquer avec l'hôte IPsec masqué et demander une notification sur les informations SPI une fois que la négociation a eu lieu. Ce point est à étudier. Si quelque chose est fait pour l'implémenter, ce ne sera pas fait avant les séries 2.3.x, car RSIP est un protocole NAT client/serveur assez complexe.

Quand un paquet ESP entrant avec un nouveau SPI est reçu, le pare-feu de masquage tente de deviner à quel(s) hôte(s) masqué(s) ce trafic entrant est destiné. Si le trafic ESP entrant ne correspond pas à une session établie, ou à une session en cours d'initialisation, alors le paquet est envoyé à la (aux) machine(s) masquée(s) qui a (ont) renouvelé en dernier ses (leurs) clés avec cet hôte distant. Les machines masquées "incorrectement" vont rejeter le trafic comme n'étant pas correctement crypté, et la machine "correctement" masquée va recevoir des données. Lorsque la machine "correctement" masquée répond, le processus normal de sérialisation de l'initialisation ESP a lieu.