|
Introduction
Les traducteurs d'adresses réseau, ou NAT,
permettent aux ordinateurs de réseaux privés d'accéder à des ressources
Internet sans être directement accessibles par Internet. Les NAT
permettent la réutilisation de l'espace d'adresses IPv4 privées
(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) de réseaux privés, évitant
l'utilisation d'adresses IPv4 publiques pour chaque nœud souhaitant
accéder aux ressources Internet. Bien que l'utilisation des NAT apporte
son lot d'avantages, elle comporte également des inconvénients.
À
l'origine, Internet était conçu pour un espace d'adresses uniques
globales. Toutes les interfaces qui se connectent à Internet possèdent
une adresse unique basée sur le sous-réseau auquel l'interface était
reliée. Quel que soit le mode de regroupement des sous-réseaux sur les
réseaux privés directement reliés à Internet, l'interface est toujours
accessible via son adresse unique globale.
L'utilisation de NAT
et de l'espace d'adresses privées constitue une violation d'un espace
d'adresses uniques globales. L'espace d'adresses privées est réutilisé
pour chaque réseau utilisant un NAT. Cela signifie que plusieurs
interfaces connectées à différents réseaux peuvent présenter la même
adresse. Bien que ces réseaux adressés de manière privée ne soient pas
visibles depuis Internet, ils peuvent l'être entre eux, et combiner
plusieurs réseaux privés en un seul réseau peut entraîner des conflits
d'adresses (plusieurs sous-réseaux présentant le même préfixe d'adresse
ou des entrées de table de routage ambiguës).
Par exemple, la
Société A et la Société B utilisent l'espace d'adresses
privées 10.0.0.0/8. Si les Sociétés A et B fusionnent, il est fort
probable que des conflits d'adresses surviennent. La société fusionnée
doit alors renuméroter une partie du réseau combiné, ce qui entraîne
une perte de temps et d'argent. Dans ce cas, l'utilisation du protocole
DHCP (Dynamic Host Configuration Protocol) est une solution pour la
plupart des nœuds IP basés sur des hôtes, mais les nœuds configurés de
façon statique, tels que les serveurs, doivent être reconfigurés
manuellement et l'infrastructure de routage doit être repensée.
Fonctionnement des NAT
Un NAT de base, fonctionne comme suit :
| • |
Pour
les paquets sortants, le NAT transforme l'adresse source privée en
adresse source publique et définit la valeur du numéro de port TCP
(Transmission Control Protocol) ou UDP (User Datagram Protocol) source.
Pour les paquets entrants, il modifie l'adresse publique de destination
en lui donnant la valeur de l'adresse privée d'origine et rétablit la
valeur d'origine du numéro de port TCP ou UDP de destination.
|
Sur
le NAT, une table de traduction facilite le mappage entre les adresses
publiques et privées et les numéros de port TCP/UDP. Le NAT rejette
tout trafic entrant non destiné à une adresse qui lui est attribuée et
ne correspondant à aucune entrée de la table de traduction.
Lorsqu'un
ordinateur situé derrière un NAT, c'est-à-dire connecté à un
sous-réseau séparé d'Internet par le NAT, établit une communication
avec un nœud sur Internet, le NAT crée automatiquement l'entrée de
table de traduction appropriée pour permettre le transfert du trafic de
réponse vers cet ordinateur. C'est le cas, par exemple, lorsqu'un
client Internet navigue sur le Web. Le trafic DNS (Domain Name System)
et HTTP (Hypertext Transfer Protocol) initié par l'ordinateur client
crée automatiquement des entrées de table de traduction, permettant à
cet ordinateur d'accéder à des ressources Internet sans connexion
directe accessible via Internet. Par conséquent, les ordinateurs
clients utilisant un NAT peuvent généralement accéder sans problèmes à
des ordinateurs serveur directement accessibles sur Internet.
Pour
que des ordinateurs serveur situés derrière un NAT soient accessibles
depuis Internet, vous devez configurer le NAT avec des entrées de table
de traduction statiques.
NAT et sécurité
Dans
la mesure où les NAT rejettent tout trafic ne correspondant à aucune
entrée de table de traduction, ils sont considérés comme des
périphériques de sécurité. Toutefois, ils ne remplacent pas les
pare-feu. Il existe généralement deux ensembles de ports TCP et UDP
ouverts sur le NAT :
| • |
L'ensemble
des ports correspondant au trafic traduit, comme spécifié dans la table
de traduction, c'est-à-dire les ports dynamiques ouverts par des
clients situés derrière le NAT et les ports statiques configurés pour
des serveurs situés derrière le NAT.
|
| • |
L'ensemble des ports correspondant aux applications et services s'exécutant sur le NAT.
|
Les
ports statiques configurés pour des serveurs situés derrière le NAT et
les ports correspondant aux applications et services s'exécutant sur le
NAT rendent le NAT vulnérable aux attaques. Les ports dynamiques ne
sont pas aussi dangereux parce qu'il est difficile pour un intrus de
prévoir leur ouverture. Si le NAT est un ordinateur, et non un
périphérique dédié tel qu'une passerelle Internet, il est vulnérable
aux attaques.
Par conséquent, il est recommandé d'utiliser un NAT
conjointement avec un pare-feu, et il est préférable que les clients du
réseau privé utilisent également des pare-feu basés sur des hôtes pour
empêcher la propagation de logiciels malveillants sur ce réseau.
Problèmes liés à l'utilisation d'un serveur derrière un NAT
Comme
décrit précédemment dans cet article, les ordinateurs clients utilisant
un NAT qui accèdent à des ordinateurs serveur connectés à Internet ne
rencontrent généralement aucun problème. Toutefois, des problèmes
peuvent survenir lorsque des serveurs sont situés derrière un NAT dans
les situations suivantes :
| • |
Applications multi-utilisateurs
|
| • |
Applications d'homologue à homologue
|
| • |
NAT-T IPSec
|
Applications multi-utilisateurs
Les
applications multi-utilisateurs mettent en œuvre plusieurs ordinateurs
qui acceptent de communiquer entre eux à des fins spécifiques via un
serveur central. Il peut s'agir, par exemple, d'une application
informatique de collaboration ou d'un jeu réseau à plusieurs
participants. Lorsque le serveur central et certains des clients sont
situés derrière le NAT, l'utilisation d'adresses privées peut entraîner
des problèmes de configuration.
Par exemple, un serveur
informatique de collaboration est situé derrière un NAT et certains
clients sont situés derrière le même NAT alors que d'autres se trouvent
sur Internet. Puisque l'espace d'adresses privées utilisé et le serveur
se situent derrière le NAT, vous devez configurer les éléments
suivants :
| • |
Les
entrées de table de traduction statiques qui mappent les adresses
publiques du NAT et des numéros de port de l'application serveur à
l'adresse privée du serveur et des numéros de port de l'application
serveur.
|
| • |
Pour
que les clients connectés à Internet accèdent au serveur à l'aide de
son nom DNS, vous devez ajouter des entrées au DNS Internet pour que le
nom du serveur (par exemple : collabsrv.exemple.com) puisse être résolu
en l'adresse publique du NAT.
|
| • |
Pour
que les clients connectés au réseau privé accèdent au serveur à l'aide
de son nom DNS, vous devez ajouter des entrées au DNS du réseau privé
pour que le nom du serveur puisse être résolu en l'adresse privée du
serveur.
|
La configuration du DNS est
inutile si vous utilisez l'adresse publique ou privée en cours du
serveur lorsque les ordinateurs clients établissent la connexion.
Toutefois, l'utilisation d'adresses IPv4 pour les connexions aux
serveurs est complexe pour les utilisateurs finaux, et vous devez
demander aux clients Internet d'utiliser l'adresse publique et aux
clients derrière le NAT d'utiliser l'adresse privée.
Même lorsque
cette configuration est en place, les clients derrière le NAT et ceux
connectés à Internet ne s'entendent pas sur les adresses IPv4 du
serveur. Si l'application informatique de collaboration doit utiliser,
pour le serveur, la même adresse IPv4 pour la configuration, la
synchronisation ou la sécurité, des problèmes de communication peuvent
survenir.
Applications d'homologue à homologue
Les NAT
entraînent également des problèmes au niveau des applications
d'homologue à homologue. Dans le modèle de communication d'homologue à
homologue, les homologues peuvent agir en tant que client ou serveur et
communiquer en s'envoyant directement des paquets. Si un homologue se
situe derrière un NAT, deux adresses lui sont associées : l'adresse
privée et l'adresse publique. Supposons une configuration simple dans
laquelle des NAT peuvent provoquer des problèmes au niveau des
applications d'homologue à homologue. La figure suivante illustre un
réseau privé bordé par un NAT.
Dans
une application d'homologue à homologue s'exécutant sur tous les
homologues, Homologue 1 peut démarrer une session avec Homologue 2
(accessible directement sur son sous-réseau) et Homologue 3. Toutefois,
Homologue 1 ne peut pas informer Homologue 3 de l'adresse publique
d'Homologue 2 car il ne la connaît pas. En outre, Homologue 3 ne peut
pas démarrer de session avec Homologue 1 ou Homologue 2 sans configurer
manuellement le NAT à l'aide d'une entrée de table de traduction
statique afin de traduire les paquets de demandes de connexion entrants
envoyés à l'adresse privée et au port d'Homologue 1 ou Homologue 2.
Même avec l'entrée de table de traduction statique, Homologue 3 ne peut
pas démarrer de session avec Homologue 1 et Homologue 2 simultanément
parce que les deux hôtes utilisent la même adresse IPv4 publique et le
même numéro de port d'application.
Pire, il arrive souvent que
des homologues Internet soient situés derrière deux NAT différents. Par
exemple, dans la figure précédente, Homologue 3 est également situé
derrière un NAT. Pour garantir que l'application d'homologue à
homologue puisse fonctionner dans n'importe quelle configuration
utilisant un NAT, elle doit être modifiée pour devenir compatible NAT,
ce qui la rend plus complexe.
NAT-T IPSec
NAT-T (NAT
traversal) IPSec (Internet Protocol security) permet aux homologues
IPSec situés derrière des NAT de détecter la présence de NAT, de
négocier des associations de sécurité (AS) IPSec et d'envoyer des
données protégées par ESP (Encapsulating Security Payload) même en cas
de modification des adresses des paquets IPv4 protégés par IPSec.
NAT-T
IPSec est pris en charge par Microsoft® Windows Server™ 2003,
Service Pack 2 Windows XP (SP2), Service Pack 1 Windows® XP et
Windows 2000. Toutefois, en raison du comportement d'IPSec et des NAT,
Windows XP SP2, par défaut, ne prend plus en charge l'établissement
d'AS NAT-T IPSec avec des serveurs situés derrière des NAT afin
d'éviter tout risque pour la sécurité. La figure ci-dessous fournit un
exemple de configuration.
Pour
garantir que Serveur 1 est accessible derrière le NAT pour le trafic
IPSec, vous devez configurer le NAT avec des entrées de traduction
statiques qui mappent le trafic IKE (Internet Key Exchange) (à l'aide
du port UDP 500) et NAT-T IPSec (à l'aide du port UDP 4500) à Serveur 1.
Dans cette configuration, la situation suivante se produit :
|
1.
|
Client 1,
situé sur Internet, utilise NAT-T IPSec pour établir des AS
bidirectionnelles avec Serveur 1. Le NAT transmet le trafic IKE et
NAT-T IPSec entre Serveur 1 et Client 1 en raison des entrées de table
de traduction statiques configurées manuellement.
|
|
2.
|
Client 2
utilise NAT-T IPSec pour établir des AS bidirectionnelles avec
Client 1. Lorsque Client 2 établit une communication avec Client 1, le
NAT crée un ensemble d'entrées de table de traduction dynamiques,
permettant l'échange du trafic IKE et NAT-T IPSec entre Client 2 et
Client 1.
|
|
3.
|
Si
le NAT supprime les entrées de table de traduction dynamiques créées
par Client 2 et que Client 1 se voit obligé de rétablir les AS avec
Client 2, la situation suivante peut se produire :
Client 1
envoie le trafic IKE à l'adresse IP publique du NAT et au port UDP 500.
Puisque ce trafic correspond à l'entrée de table de traduction statique
du trafic IKE vers Serveur 1, le NAT transmet le trafic IKE au
Serveur 1 et non à Client 2. Dans la mesure où Client 1 rétablit les
AS, il débute la négociation de mode principal IPSec et pourrait finir
par établir des AS avec Serveur 1 plutôt qu'avec Client 2. Le risque
pour la sécurité réside dans le fait que Client 1 peut établir des AS
bidirectionnelles avec un homologue non souhaité.
|
Cette
situation n'est pas courante, mais pour l'éviter, le comportement par
défaut des ordinateurs exécutant Windows XP avec SP2 est d'éviter
d'établir toute AS basée sur NAT-T IPSec avec des serveurs situés
derrière un NAT.
Pour modifier le comportement de NAT-T IPSec
sur un ordinateur exécutant Windows XP avec SP2, vous devez créer et
définir la valeur de Registre AssumeUDPEncapsulationContextOnSendRule.
Toutefois, vous devez au préalable contacter l'administrateur réseau ou
le personnel chargé de la sécurité.
Pour ajouter et configurer la valeur de Registre AssumeUDPEncapsulationContextOnSendRule, procédez comme suit :
|
1.
|
À partir du Bureau de Windows XP, cliquez sur Démarrer, puis sur Exécuter. Tapez regedit.exe, puis cliquez sur OK.
|
|
2.
|
Dans
l'arborescence de la console de l'Éditeur du Registre, ouvrez la clé de
Registre suivante :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSEC
|
|
3.
|
Dans le menu Edition, cliquez sur Ajouter une valeur, puis ajoutez la valeur suivante :
Value Name: AssumeUDPEncapsulationContextOnSendRule
Data Type: REG_DWORD
Data Value: 0, 1, or 2
| • |
0 = aucune AS ne peut être établie avec des serveurs situés derrière des NAT (valeur par défaut)
|
| • |
1
= des AS peuvent être établies avec des serveurs situés derrière des
NAT à condition que le client possède une adresse publique
|
| • |
2
= des AS peuvent être établies si le client et les serveurs sont situés
derrière des NAT (comportement pour Windows XP avec Service Pack 1 et
Windows XP sans Service Pack)
|
|
|
Remarque : La valeur AssumeUDPEncapsulationContextOnSendRule respecte la casse.
|
Vous devez redémarrer Windows XP avec SP2 pour que la configuration prenne effet.
Définir
la valeur AssumeUDPEncapsulationContextOnSendRule sur 1 ou 2 permet à
un ordinateur exécutant Windows XP avec SP2 de se connecter à un
serveur situé derrière un NAT, notamment un serveur de réseau privé
virtuel (VPN, Virtual Private Network) exécutant Windows Server 2003.
Résumé
Les
NAT représentent un moyen de fortune pour allonger la durée de vie de
l'espace d'adresses IPv4 publiques et ne constituent en aucune façon
une solution au problème de cet espace. Ils conviennent davantage à la
réutilisation de l'espace d'adresses privées pour les ordinateurs
clients. La plupart des ordinateurs serveur requièrent encore des
adresses publiques non ambiguës. Les homologues d'une communication
d'homologue à homologue peuvent être placés derrière un NAT. Toutefois,
pour son utilisation générale, il convient de modifier l'application
d'homologue à homologue lorsqu'il existe plusieurs homologues derrière
un seul NAT ou lorsque des homologues sont séparés par plusieurs NAT,
et ce, à des fins de compatibilité NAT. Un serveur peut être placé
derrière un NAT. Cependant, le NAT doit être configuré manuellement à
l'aide d'une entrée de table de traduction statique pour traduire les
paquets de demandes de connexion entrants en port et adresse privée du
serveur. Pour NAT-T IPSec, cette entrée de table de traduction statique
peut provoquer des résultats non souhaités dans certaines
configurations.
|