Configuration de base de NAT d’ASA : Serveur Web dans la DMZ dans la version 8.3 d’ASA et plus tard

Introduction

Ce document fournit un exemple simple et direct de la façon configurer la traduction d’adresse réseau (NAT) et les listes de contrôle d’accès (ACL) sur un pare-feu d’ASA afin de permettre la connectivité sortante aussi bien qu’entrante. Ce document a été écrit avec un pare-feu Adaptive Security Appliance (ASA) 5510 qui exécute la version 9 du code ASA.1(1), mais cela peut facilement s’appliquer à toute autre plate-forme de pare-feu ASA. Si vous utilisez une plate-forme telle qu’une ASA 5505, qui utilise des VLAN au lieu d’une interface physique, vous devez modifier les types d’interface selon les besoins.

Prérequis

Exigences

Il n’y a pas d’exigences spécifiques pour ce document.

Composants utilisés

Les informations contenues dans ce document sont basées sur un pare-feu ASA 5510 qui exécute la version 9.1(1) du code ASA.

Les informations contenues dans ce document ont été créées à partir des périphériques d’un environnement de laboratoire spécifique. Tous les périphériques utilisés dans ce document ont commencé avec une configuration effacée (par défaut). Si votre réseau est actif, assurez-vous de bien comprendre l’impact potentiel d’une commande.

Vue d’ensemble

Objectifs

Dans cet exemple de configuration, vous pouvez voir quelle configuration NAT et ACL sera nécessaire pour autoriser l’accès entrant à un serveur Web dans la zone démilitarisée d’un pare-feu ASA et autoriser la connectivité sortante des hôtes internes et DMZ. Cela peut se résumer en deux objectifs:

  1. Autoriser les hôtes à l’intérieur et la connectivité sortante DMZ à Internet.
  2. Autoriser les hôtes sur Internet à accéder à un serveur Web sur la DMZ avec une adresse IP de 192.168.1.100.

Avant de passer aux étapes qui doivent être terminées pour atteindre ces deux objectifs, ce document passe brièvement en revue la façon dont les ACL et NAT fonctionnent sur les versions plus récentes du code ASA (version 8.3 et ultérieure).

Aperçu de la liste de contrôle d’accès

Les listes de contrôle d’accès (listes d’accès ou listes d’accès pour faire court) sont la méthode par laquelle le pare-feu ASA détermine si le trafic est autorisé ou refusé. Par défaut, le trafic qui passe d’un niveau de sécurité inférieur à supérieur est refusé. Cela peut être remplacé par une liste de contrôle d’accès appliquée à cette interface de sécurité inférieure. De plus, l’ASA, par défaut, autorise le trafic des interfaces de sécurité supérieures aux interfaces de sécurité inférieures. Ce comportement peut également être remplacé par un ACL.

Dans les versions antérieures du code ASA (8.2 et antérieures), l’ASA a comparé une connexion entrante ou un paquet contre l’ACL sur une interface sans d’abord décompresser le paquet. En d’autres termes, l’ACL devait autoriser le paquet comme si vous deviez capturer ce paquet sur l’interface. Dans la version 8.3 et le code plus tard, l’ASA décompresse ce paquet avant qu’il vérifie les ACL d’interface. Cela signifie que pour le code 8.3 et ultérieur, et ce document, le trafic vers l’adresse IP réelle de l’hôte est autorisé et non l’adresse IP traduite de l’hôte.

Reportez-vous à la section Configurer les règles d’accès du Livre 2 : Guide de configuration CLI du pare-feu de la série Cisco ASA, 9.1 pour plus d’informations sur les ACL.

Vue d’ensemble du NAT

Le NAT sur l’ASA dans la version 8.3 et ultérieure est divisé en deux types connus sous le nom de NAT automatique (NAT objet) et de NAT manuel (NAT deux fois). Le premier des deux, Object NAT, est configuré dans la définition d’un objet réseau. Un exemple de ceci est fourni plus loin dans ce document. Un avantage principal de cette méthode NAT est que l’ASA ordonne automatiquement les règles de traitement afin d’éviter les conflits. C’est la forme de NAT la plus simple, mais avec cette facilité vient une limitation de la granularité de configuration. Par exemple, vous ne pouvez pas prendre une décision de traduction basée sur la destination dans le paquet comme vous pouvez le faire avec le deuxième type de NAT, le Nat manuel. Le NAT manuel est plus robuste dans sa granularité, mais il nécessite que les lignes soient configurées dans le bon ordre afin qu’il puisse obtenir le comportement correct. Cela complique ce type NAT et, par conséquent, il ne sera pas utilisé dans cet exemple de configuration.

Voir les informations sur la section NAT du livre 2 : Guide de configuration CLI du pare-feu de la série Cisco ASA, 9.1 pour plus d’informations sur NAT.

Configurez

Commencez

La configuration de base de configuration ASA est trois interfaces connectées à trois segments de réseau. Le segment de réseau ISP est connecté à l’interface Ethernet0/0 et étiqueté à l’extérieur avec un niveau de sécurité de 0. Le réseau interne a été connecté à Ethernet0/1 et étiqueté comme interne avec un niveau de sécurité de 100. Le segment DMZ, où réside le serveur Web, est connecté à Ethernet0/2 et étiqueté DMZ avec un niveau de sécurité de 50.

La configuration de l’interface et les adresses IP de l’exemple sont visibles ici:

interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1

Ici vous pouvez voir que l’interface intérieure de l’ASA est placée avec l’adresse IP de 192.168.0.1, et c’est la passerelle par défaut pour les hôtes internes. L’interface extérieure de l’ASA est configurée avec une adresse IP obtenue du FAI. Une route par défaut est en place, qui définit le prochain saut comme étant la passerelle du FAI. Si vous utilisez DHCP, cela est fourni automatiquement. L’interface DMZ est configurée avec l’adresse IP de 192.168.1.1, et c’est la passerelle par défaut pour les hôtes sur le segment de réseau DMZ.

Topologie

Voici un aperçu visuel de la façon dont cela est câblé et configuré:

Étape 1 – Configurez NAT pour permettre aux hôtes de sortir sur Internet

Pour cet exemple, le NAT d’objet, également connu sous le nom d’AutoNAT, est utilisé. La première chose à configurer est les règles NAT qui permettent aux hôtes à l’intérieur et aux segments DMZ de se connecter à Internet. Étant donné que ces hôtes utilisent des adresses IP privées, vous devez les traduire en quelque chose qui est routable sur Internet. Dans ce cas, traduisez les adresses afin qu’elles ressemblent à l’adresse IP de l’interface extérieure de l’ASA. Si votre adresse IP externe change fréquemment (peut-être à cause du DHCP), c’est le moyen le plus simple de le configurer.

Afin de configurer ce NAT, vous devez créer un objet réseau qui représente le sous-réseau intérieur ainsi qu’un qui représente le sous-réseau DMZ. Dans chacun de ces objets, configurez une règle nat dynamique qui portera la traduction d’adresses (PAT) de ces clients lorsqu’ils passent de leurs interfaces respectives à l’interface extérieure.

Cette configuration ressemble à ceci:

object network inside-subnet
subnet 192.168.0.0 255.255.255.0
nat (inside,outside) dynamic interface
!
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
nat (dmz,outside) dynamic interface

Si vous regardez la configuration en cours d’exécution à ce stade (avec la sortie de la commande show run), vous verrez que la définition de l’objet est divisée en deux parties de la sortie. La première partie indique uniquement ce qui se trouve dans l’objet (hôte / sous-réseau, adresse IP, etc.), tandis que la deuxième section montre cette règle NAT liée à cet objet. Si vous prenez la première entrée dans la sortie précédente:

Lorsque des hôtes qui correspondent au sous-réseau 192.168.0.0/24 traversent l’interface interne vers l’interface externe, vous souhaitez les traduire dynamiquement vers l’interface externe.

Étape 2 – Configurez NAT pour accéder au serveur Web à partir d’Internet

Maintenant que les hôtes à l’intérieur et les interfaces DMZ peuvent accéder à Internet, vous devez modifier la configuration afin que les utilisateurs sur Internet puissent accéder à notre serveur Web sur le port TCP 80. Dans cet exemple, la configuration est telle que les internautes puissent se connecter à une autre adresse IP fournie par le FAI, une adresse IP supplémentaire que nous possédons. Pour cet exemple, utilisez 198.51.100.101. Avec cette configuration, les utilisateurs sur Internet pourront accéder au serveur Web DMZ en accédant au 198.51.100.101 sur le port TCP 80. Utilisez l’objet NAT pour cette tâche, et l’ASA traduira le port TCP 80 sur le serveur Web (192.168.1.100) pour ressembler à 198.51.100.101 sur le port TCP 80 à l’extérieur. De la même manière que ce qui a été fait précédemment, définissez un objet et définissez des règles de traduction pour cet objet. Définissez également un deuxième objet pour représenter l’adresse IP vers laquelle vous traduirez cet hôte.

Cette configuration ressemble à ceci:

object network webserver-external-ip
host 198.51.100.101
!
object network webserver
host 192.168.1.100
nat (dmz,outside) static webserver-external-ip service tcp www www

Juste pour résumer ce que signifie cette règle NAT dans cet exemple:

Lorsqu’un hôte correspond à l’adresse IP 192.168.1.100 sur les segments DMZ établit une connexion provenant du port TCP 80 (www) et cette connexion sort de l’interface extérieure, vous souhaitez la traduire en port TCP 80 (www) sur l’interface extérieure et traduire cette adresse IP en 198.51.100.101.

Cela semble un peu étrange…  » provenant du port TCP 80 (www) », mais le trafic Web est destiné au port 80. Il est important de comprendre que ces règles NAT sont de nature bidirectionnelle. En conséquence, vous pouvez retourner le libellé afin de reformuler cette phrase. Le résultat est beaucoup plus logique:

Lorsque des hôtes à l’extérieur établissent une connexion à 198.51.100.101 sur le port TCP de destination 80 (www), vous traduirez l’adresse IP de destination en 192.168.1.100 et le port de destination sera le port TCP 80 (www) et l’enverrez dans la DMZ.

Cela a plus de sens lorsqu’il est formulé de cette façon. Ensuite, vous devez configurer les listes de contrôle d’accès.

Étape 3- Configurez ACLs

NAT est configuré et la fin de cette configuration est proche. Rappelez-vous, les listes de contrôle d’accès sur l’ASA vous permettent de remplacer le comportement de sécurité par défaut qui est le suivant:

  • Le trafic qui va d’une interface de sécurité inférieure est refusé lorsqu’il va vers une interface de sécurité supérieure.
  • Le trafic qui va d’une interface de sécurité supérieure est autorisé lorsqu’il va vers une interface de sécurité inférieure.

Donc sans l’ajout d’ACL à la configuration, ce trafic dans l’exemple fonctionne:

  • Les hôtes à l’intérieur (niveau de sécurité 100) peuvent se connecter aux hôtes sur la DMZ (niveau de sécurité 50).
  • Les hôtes à l’intérieur (niveau de sécurité 100) peuvent se connecter aux hôtes à l’extérieur (niveau de sécurité 0).
  • Les hôtes sur la DMZ (niveau de sécurité 50) peuvent se connecter à des hôtes à l’extérieur (niveau de sécurité 0).

Cependant, ce trafic est refusé:

  • Les hôtes à l’extérieur (niveau de sécurité 0) ne peuvent pas se connecter aux hôtes à l’intérieur (niveau de sécurité 100).
  • Les hôtes à l’extérieur (niveau de sécurité 0) ne peuvent pas se connecter aux hôtes sur la DMZ (niveau de sécurité 50).
  • Les hôtes sur la DMZ (niveau de sécurité 50) ne peuvent pas se connecter aux hôtes à l’intérieur (niveau de sécurité 100).

Parce que le trafic de l’extérieur vers le réseau DMZ est refusé par l’ASA avec sa configuration actuelle, les utilisateurs sur Internet ne peuvent pas atteindre le serveur Web malgré la configuration NAT de l’étape 2. Vous devez autoriser explicitement ce trafic. Dans le code 8.3 et ultérieur, vous devez utiliser l’adresse IP réelle de l’hôte dans l’ACL et non l’adresse IP traduite. Cela signifie que la configuration doit autoriser le trafic destiné à 192.168.1.100 et NON le trafic destiné à 198.51.100.101 sur le port 80. Par souci de simplicité, les objets définis à l’étape 2 seront également utilisés pour cette ACL. Une fois l’ACL créée, vous devez l’appliquer d’entrée sur l’interface extérieure.

Voici à quoi ressemblent ces commandes de configuration:

access-list outside_acl extended permit tcp any object webserver eq www
!
access-group outside_acl in interface outside

La ligne de liste d’accès indique:

Autoriser le trafic de n’importe quel (où) vers l’hôte représenté par le serveur Web d’objets (192.168.1.100) sur le port 80.

Il est important que la configuration utilise le mot clé any ici. Étant donné que l’adresse IP source des clients n’est pas connue lorsqu’elle atteint votre site Web, spécifiez n’importe quelle signification « N’importe quelle adresse IP « .

Qu’en est-il du trafic du segment DMZ destiné aux hôtes du segment réseau interne ? Par exemple, un serveur sur le réseau interne auquel les hôtes de la DMZ doivent se connecter. Comment l’ASA peut-elle autoriser uniquement ce trafic spécifique destiné au serveur interne et bloquer tout le reste destiné au segment interne de la DMZ?

Dans cet exemple, on suppose qu’il existe un serveur DNS sur le réseau interne à l’adresse IP 192.168.0.53 auquel les hôtes de la DMZ doivent accéder pour la résolution DNS. Vous créez l’ACL nécessaire et l’appliquez à l’interface DMZ afin que l’ASA puisse remplacer ce comportement de sécurité par défaut, mentionné précédemment, pour le trafic qui entre dans cette interface.

Voici à quoi ressemblent ces commandes de configuration:

object network dns-server
host 192.168.0.53
!
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
access-group dmz_acl in interface dmz

L’ACL est plus complexe que de simplement autoriser ce trafic vers le serveur DNS sur le port UDP 53. Si tout ce que nous faisions était cette première ligne de « permis », alors tout le trafic serait bloqué de la DMZ vers les hôtes sur Internet. Les ACL ont un « refuser ip any any » implicite à la fin de l’ACL. En conséquence, vos hôtes DMZ ne pourraient pas se connecter à Internet. Même si le trafic de la DMZ vers l’extérieur est autorisé par défaut, avec l’application d’une ACL à l’interface DMZ, ces comportements de sécurité par défaut pour l’interface DMZ ne sont plus en vigueur et vous devez autoriser explicitement le trafic dans l’interface ACL.

Étape 4 – Testez la configuration avec la fonctionnalité de traceur de paquets

Maintenant que la configuration est terminée, vous devez la tester afin de vous assurer qu’elle fonctionne. La méthode la plus simple consiste à utiliser des hôtes réels (s’il s’agit de votre réseau). Cependant, dans l’intérêt de tester cela à partir de la CLI et d’explorer davantage certains des outils de l’ASA, utilisez le traceur de paquets afin de tester et potentiellement déboguer tous les problèmes rencontrés.

Le traceur de paquets fonctionne en simulant un paquet basé sur une série de paramètres et en injectant ce paquet dans le chemin de données de l’interface, de la même manière qu’un paquet réel s’il était capté sur le fil. Ce paquet est suivi à travers la myriade de vérifications et de processus effectués lors de son passage à travers le pare-feu, et packet tracer note le résultat. Simulez la sortie de l’hôte interne vers un hôte sur Internet. La commande ci-dessous indique au pare-feu de ::

Simuler un paquet TCP entrant dans l’interface interne à partir de l’adresse IP 192.168.0.125 sur le port source 12345 destiné à une adresse IP 203.0.113.1 sur le port 80.

ciscoasa# packet-tracer input inside tcp 192.168.0.125 12345 203.0.113.1 80
Phase: 1
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
MAC Access list
Phase: 2
Type: ROUTE-LOOKUP
Subtype: input
Result: ALLOW
Config:Additional Information:
in 0.0.0.0 0.0.0.0 outsidePhase: 3
Type: NAT
Subtype:
Result: ALLOW
Config:
object network inside-subnet
nat (inside,outside) dynamic interface
Additional Information:
Dynamic translate 192.168.0.125/12345 to 198.51.100.100/12345
Phase: 4
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 1, packet dispatched to next module
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow

Le résultat final est que le trafic est autorisé, ce qui signifie qu’il a passé toutes les vérifications NAT et ACL dans la configuration et a été envoyé à l’interface de sortie, à l’extérieur. Notez que le paquet a été traduit dans la phase 3 et les détails de cette phase montrent quelle règle est atteinte. L’hôte 192.168.0.125 est traduit dynamiquement en 198.51.100.100 selon la configuration.

Maintenant, exécutez-le pour une connexion d’Internet au serveur Web. N’oubliez pas que les hôtes sur Internet accéderont au serveur Web en se connectant au 198.51.100.101 sur l’interface extérieure. Encore une fois, cette commande suivante se traduit par:

Simuler un paquet TCP arrivant dans l’interface extérieure à partir de l’adresse IP 192.0.2.123 sur le port source 12345 destiné à une adresse IP de 198.51.100.101 sur le port 80.

ciscoasa# packet-tracer input outside tcp 192.0.2.123 12345 198.51.100.101 80
Phase: 1
Type: UN-NAT
Subtype: static
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
NAT divert to egress interface dmz
Untranslate 198.51.100.101/80 to 192.168.1.100/80
Phase: 2
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group outside_acl in interface outside
access-list outside_acl extended permit tcp any object webserver eq www
Additional Information:
Phase: 3
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 4
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 5
Type: NAT
Subtype: rpf-check
Result: ALLOW
Config:
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
Additional Information:
Phase: 6
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Phase: 7
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Phase: 8
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 3, packet dispatched to next module
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: dmz
output-status: up
output-line-status: up
Action: allow

Encore une fois, le résultat est que le paquet est autorisé. Les ACLs se vérifient, la configuration semble correcte et les utilisateurs sur Internet (à l’extérieur) devraient pouvoir accéder à ce serveur Web avec l’adresse IP externe.

Vérifier

Des procédures de vérification sont incluses dans la configuration d’étape 4-Testing avec la caractéristique de Traceur de paquets.

Dépannage

Aucune information de dépannage spécifique n’est actuellement disponible pour cette configuration.

Conclusion

La configuration d’une ASA pour faire le NAT de base n’est pas si intimidante d’une tâche. L’exemple de ce document peut être adapté à votre scénario spécifique si vous modifiez les adresses IP et les ports utilisés dans les configurations d’exemple. La configuration finale d’ASA pour ceci, une fois combinée, ressemble à ceci pour un ASA 5510:

ASA Version 9.1(1)
!
interface Ethernet0/0
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Ethernet0/1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Ethernet0/2
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1

Sur un ASA 5505, par exemple, avec les interfaces connectées comme indiqué précédemment (extérieur connecté à Ethernet0/0, intérieur connecté à Ethernet0/1 et la DMZ connectée à Ethernet0/2):

ASA Version 9.1(1)
!
interface Ethernet0/0
description Connected to Outside Segment
switchport access vlan 2
!
interface Ethernet0/1
description Connected to Inside Segment
switchport access vlan 1
!
interface Ethernet0/2
description Connected to DMZ Segment
switchport access vlan 3
!
interface Vlan2
nameif outside
security-level 0
ip address 198.51.100.100 255.255.255.0
!
interface Vlan1
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
interface Vlan3
nameif dmz
security-level 50
ip address 192.168.1.1 255.255.255.0
!
object network inside-subnet
subnet 192.168.0.0 255.255.255.0
object network dmz-subnet
subnet 192.168.1.0 255.255.255.0
object network webserver
host 192.168.1.100
object network webserver-external-ip
host 198.51.100.101
object network dns-server
host 192.168.0.53
!
access-list outside_acl extended permit tcp any object webserver eq www
access-list dmz_acl extended permit udp any object dns-server eq domain
access-list dmz_acl extended deny ip any object inside-subnet
access-list dmz_acl extended permit ip any any
!
object network inside-subnet
nat (inside,outside) dynamic interface
object network dmz-subnet
nat (dmz,outside) dynamic interface
object network webserver
nat (dmz,outside) static webserver-external-ip service tcp www www
access-group outside_acl in interface outside
access-group dmz_acl in interface dmz
!
route outside 0.0.0.0 0.0.0.0 198.51.100.1 1

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.