- Introducción
- Requisitos previos
- Requisitos
- Componentes utilizados
- Descripción general
- Objetivos
- Vista general de la Lista de control de acceso
- Descripción general de NAT
- Configurar
- Empezar
- Topología
- Paso 1-Configurar NAT para Permitir que los Hosts salgan a Internet
- Paso 2-Configurar NAT para acceder al Servidor Web desde Internet
- Paso 3-Configurar ACLs
- Paso 4-Pruebe la configuración con la función Trazador de paquetes
- Verificar
- Solucionar problemas
- Conclusión
Introducción
Este documento proporciona un ejemplo sencillo y directo de cómo configurar la Traducción de direcciones de red (NAT) y las Listas de Control de Acceso (ACL) en un Firewall ASA para permitir la conectividad entrante y saliente. Este documento se escribió con un firewall Adaptive Security Appliance (ASA) 5510 que ejecuta código ASA versión 9.1 (1), pero esto se puede aplicar fácilmente a cualquier otra plataforma de firewall ASA. Si utiliza una plataforma como ASA 5505, que utiliza VLAN en lugar de una interfaz física, debe cambiar los tipos de interfaz según corresponda.
Requisitos previos
Requisitos
Este documento no tiene requisitos específicos.
Componentes utilizados
La información de este documento se basa en un firewall ASA 5510 que ejecuta código ASA versión 9.1(1).
La información de este documento se creó a partir de los dispositivos de un entorno de laboratorio específico. Todos los dispositivos utilizados en este documento comenzaron con una configuración desactivada (predeterminada). Si su red está activa, asegúrese de comprender el impacto potencial de cualquier comando.
Descripción general
Objetivos
En esta configuración de ejemplo, puede ver qué configuración de NAT y ACL se necesitará para permitir el acceso entrante a un servidor web en la zona desmilitarizada de un firewall ASA y permitir la conectividad saliente desde hosts internos y DMZ. Esto se puede resumir en dos objetivos:
- Permitir hosts en el interior y conectividad de salida DMZ a Internet.
- Permite a los hosts de Internet acceder a un servidor web en la zona desmilitarizada con una dirección IP de 192.168.1.100.
Antes de llegar a los pasos que deben completarse para lograr estos dos objetivos, este documento repasa brevemente la forma en que ACL y NAT trabajan en las versiones más recientes del código ASA (versión 8.3 y posteriores).
Vista general de la Lista de control de acceso
Las listas de control de acceso (listas de acceso o ACLs para abreviar) son el método por el cual el firewall ASA determina si el tráfico está permitido o denegado. De forma predeterminada, se deniega el tráfico que pasa de un nivel de seguridad inferior a uno superior. Esto puede ser anulado por una ACL aplicada a esa interfaz de seguridad inferior. Además, el ASA, de forma predeterminada, permite el tráfico de interfaces de seguridad más altas a más bajas. Este comportamiento también se puede anular con un ACL.
En versiones anteriores de código ASA (8.2 y anteriores), ASA comparaba una conexión o paquete entrante con la ACL en una interfaz sin desentraducir primero el paquete. En otras palabras, la ACL tenía que permitir el paquete como si fuera a capturar ese paquete en la interfaz. En la versión 8.3 y código posterior, el ASA no traduce ese paquete antes de comprobar las ACL de la interfaz. Esto significa que para el código 8.3 y posteriores, y este documento, se permite el tráfico a la IP real del host y no a la IP traducida del host.
Consulte la sección Configuración de reglas de acceso del Libro 2: Guía de configuración de CLI de firewall de la serie Cisco ASA, 9.1, para obtener más información sobre las ACLs.
Descripción general de NAT
NAT en el ASA en la versión 8.3 y posteriores se divide en dos tipos conocidos como NAT automático (NAT de objeto) y NAT Manual (Dos veces NAT). El primero de los dos, Objeto NAT, se configura dentro de la definición de un objeto de red. Un ejemplo de esto se proporciona más adelante en este documento. Una de las principales ventajas de este método NAT es que el ASA ordena automáticamente las reglas de procesamiento para evitar conflictos. Esta es la forma más fácil de NAT, pero con esa facilidad viene una limitación en la granularidad de la configuración. Por ejemplo, no puede tomar una decisión de traducción basada en el destino en el paquete como podría hacerlo con el segundo tipo de NAT, Nat manual. NAT manual es más robusto en su granularidad, pero requiere que las líneas se configuren en el orden correcto para que pueda lograr el comportamiento correcto. Esto complica este tipo NAT, y como resultado no se utilizará en este ejemplo de configuración.
Consulte la sección Información sobre NAT del Libro 2: Guía de configuración de CLI de firewall de la serie Cisco ASA, 9.1 para obtener más información sobre NAT.
Configurar
Empezar
La configuración básica de la configuración ASA es de tres interfaces conectadas a tres segmentos de red. El segmento de red ISP está conectado a la interfaz Ethernet0/0 y etiquetado en el exterior con un nivel de seguridad de 0. La red interna se ha conectado a Ethernet0 / 1 y se ha etiquetado como inside con un nivel de seguridad de 100. El segmento DMZ, donde reside el servidor web, está conectado a Ethernet0 / 2 y etiquetado como DMZ con un nivel de seguridad de 50.
La configuración de la interfaz y las direcciones IP para el ejemplo se ven aquí:
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
Aquí puede ver que la interfaz interna de ASA está configurada con la dirección IP de 192.168.0.1, y es la puerta de enlace predeterminada para los hosts internos. La interfaz externa de ASA está configurada con una dirección IP obtenida del ISP. Hay una ruta predeterminada en su lugar, que establece que el siguiente salto sea la puerta de enlace ISP. Si utiliza DHCP, esto se proporciona automáticamente. La interfaz DMZ está configurada con la dirección IP de 192.168.1.1 y es la puerta de enlace predeterminada para los hosts del segmento de red DMZ.
Topología
Aquí hay una mirada visual de cómo se cablea y configura:
Paso 1-Configurar NAT para Permitir que los Hosts salgan a Internet
Para este objeto de ejemplo se usa NAT, también conocido como AutoNAT. Lo primero que hay que configurar son las reglas NAT que permiten a los hosts de los segmentos interior y DMZ conectarse a Internet. Debido a que estos hosts usan direcciones IP privadas, debe traducirlas a algo que se pueda enrutar en Internet. En este caso, traduzca las direcciones para que parezcan la dirección IP de la interfaz externa de ASA. Si su IP externa cambia con frecuencia (quizás debido a DHCP), esta es la forma más sencilla de configurarlo.
Para configurar este NAT, debe crear un objeto de red que represente la subred interna, así como uno que represente la subred DMZ. En cada uno de estos objetos, configure una regla nat dinámica que traslade Direcciones de puerto (PAT) a estos clientes a medida que pasan de sus respectivas interfaces a la interfaz externa.
Esta configuración es similar a esta:
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 observa la configuración en ejecución en este punto (con la salida del comando show run), verá que la definición del objeto se divide en dos partes de la salida. La primera parte solo indica lo que hay en el objeto (host/subred, dirección IP, etc.), mientras que la segunda sección muestra la regla NAT vinculada a ese objeto. Si toma la primera entrada de la salida anterior:
Cuando los hosts que coinciden con la subred 192.168.0.0/24 pasan de la interfaz interna a la interfaz externa, desea traducirlos dinámicamente a la interfaz externa.
Paso 2-Configurar NAT para acceder al Servidor Web desde Internet
Ahora que los hosts en el interior y las interfaces DMZ pueden salir a Internet, debe modificar la configuración para que los usuarios en Internet puedan acceder a nuestro servidor web en el puerto TCP 80. En este ejemplo, la configuración es para que las personas en Internet puedan conectarse a otra dirección IP proporcionada por el ISP, una dirección IP adicional que poseemos. Para este ejemplo, utilice 198.51.100.101. Con esta configuración, los usuarios de Internet podrán acceder al servidor web DMZ accediendo a 198.51.100.101 en el puerto TCP 80. Utilice Object NAT para esta tarea, y el ASA traducirá el puerto TCP 80 en el servidor web (192.168.1.100) para que se vea como 198.51.100.101 en el puerto TCP 80 en el exterior. De manera similar a lo que se hizo anteriormente, defina un objeto y defina reglas de traducción para ese objeto. Además, defina un segundo objeto para representar la IP a la que traducirá este host.
Esta configuración es similar a esta:
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
Solo para resumir lo que significa esa regla NAT en este ejemplo:
Cuando un host coincide con la dirección IP 192.168.1.100 en los segmentos DMZ establece una conexión proveniente del puerto TCP 80 (www) y esa conexión sale de la interfaz externa, desea traducir que sea el puerto TCP 80 (www) en la interfaz externa y traducir que la dirección IP sea 198.51.100.101.
Eso parece un poco extraño… «procedente del puerto TCP 80 (www)», pero el tráfico web está destinado al puerto 80. Es importante entender que estas reglas NAT son de naturaleza bidireccional. Como resultado, puede cambiar la redacción para reformular esta oración. El resultado tiene mucho más sentido:
Cuando los hosts externos establecen una conexión a 198.51.100.101 en el puerto TCP de destino 80 (www), traducirá la dirección IP de destino a 192.168.1.100 y el puerto de destino será el puerto TCP 80 (www) y lo enviará a la DMZ.
Esto tiene más sentido cuando se expresa de esta manera. A continuación, debe configurar las ACLs.
Paso 3-Configurar ACLs
NAT está configurado y el final de esta configuración está cerca. Recuerde, las ACL en el ASA le permiten anular el comportamiento de seguridad predeterminado, que es el siguiente:
- El tráfico que va desde una interfaz de seguridad inferior se deniega cuando va a una interfaz de seguridad superior.
- El tráfico que va desde una interfaz de seguridad más alta se permite cuando va a una interfaz de seguridad más baja.
Por lo tanto, sin la adición de ACLs a la configuración, este tráfico en el ejemplo funciona:
- Los hosts en el interior (nivel de seguridad 100) se pueden conectar a los hosts en la zona desmilitarizada (nivel de seguridad 50).
- Los hosts en el interior (nivel de seguridad 100) pueden conectarse a los hosts en el exterior (nivel de seguridad 0).
- Los hosts de la zona desmilitarizada (nivel de seguridad 50) pueden conectarse a hosts externos (nivel de seguridad 0).
Sin embargo, este tráfico es denegado:
- Los hosts externos (nivel de seguridad 0) no pueden conectarse a los hosts internos (nivel de seguridad 100).
- Los hosts externos (nivel de seguridad 0) no pueden conectarse a los hosts de la zona desmilitarizada (nivel de seguridad 50).
- Los hosts de la zona desmilitarizada (nivel de seguridad 50) no pueden conectarse a los hosts internos (nivel de seguridad 100).
Debido a que el tráfico desde el exterior a la red DMZ es denegado por el ASA con su configuración actual, los usuarios en Internet no pueden llegar al servidor web a pesar de la configuración NAT en el paso 2. Es necesario permitir explícitamente este tráfico. En el código 8.3 y posteriores, debe usar la IP real del host en la ACL y no la IP traducida. Esto significa que la configuración debe permitir el tráfico destinado a 192.168.1.100 y NO el tráfico destinado a 198.51.100.101 en el puerto 80. Por simplicidad, los objetos definidos en el paso 2 también se utilizarán para esta ACL. Una vez que se crea el ACL, debe aplicarlo de entrada en la interfaz externa.
Aquí está cómo se ven esos comandos de configuración:
access-list outside_acl extended permit tcp any object webserver eq www
!
access-group outside_acl in interface outside
Los estados de la línea de lista de acceso:
Permita el tráfico desde cualquier lugar al host representado por el servidor web de objetos (192.168.1.100) en el puerto 80.
Es importante que la configuración utilice la palabra clave any aquí. Debido a que la dirección IP de origen de los clientes no se conoce a medida que llega a su sitio web, especifique cualquier significado de «Cualquier dirección IP».
¿Qué pasa con el tráfico del segmento DMZ destinado a hosts en el segmento de red interna? Por ejemplo, un servidor de la red interna al que los hosts de la zona desmilitarizada necesitan conectarse. ¿Cómo puede el ASA permitir solo ese tráfico específico destinado al servidor interno y bloquear todo lo demás destinado al segmento interno desde la zona desmilitarizada?
En este ejemplo se asume que hay un servidor DNS en la red interna en la dirección IP 192.168.0.53 al que los hosts en la zona desmilitarizada necesitan acceder para la resolución DNS. Cree la ACL necesaria y aplíquela a la interfaz DMZ para que el ASA pueda anular ese comportamiento de seguridad predeterminado, mencionado anteriormente, para el tráfico que entra en esa interfaz.
Aquí está cómo se ven esos comandos de configuración:
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
El ACL es más complejo que simplemente permitir ese tráfico al servidor DNS en el puerto UDP 53. Si todo lo que hiciéramos es la primera línea de ‘permiso’, entonces todo el tráfico sería bloqueado desde la zona desmilitarizada a los hosts en Internet. Las ACL tienen un ‘deny ip any any’ implícito al final de la ACL. Como resultado, sus hosts DMZ no podrían salir a Internet. Aunque el tráfico desde la zona desmilitarizada hacia el exterior está permitido de forma predeterminada, con la aplicación de una ACL a la interfaz de la zona desmilitarizada, esos comportamientos de seguridad predeterminados para la interfaz de la zona desmilitarizada ya no están en vigor y debe permitir explícitamente el tráfico en la ACL de la interfaz.
Paso 4-Pruebe la configuración con la función Trazador de paquetes
Ahora que la configuración se ha completado, debe probarla para asegurarse de que funciona. El método más sencillo es usar hosts reales (si esta es su red). Sin embargo, en el interés de probar esto desde la CLI y explorar más a fondo algunas de las herramientas de ASA, use el trazador de paquetes para probar y potencialmente depurar cualquier problema encontrado.
Packet tracer funciona simulando un paquete basado en una serie de parámetros e inyectando ese paquete a la ruta de datos de la interfaz, de manera similar a como lo haría un paquete de la vida real si fuera recogido del cable. Este paquete es seguido a través de la miríada de comprobaciones y procesos que se realizan a medida que pasa a través del firewall, y el trazador de paquetes toma nota del resultado. Simule el host interno que sale a un host en Internet. El siguiente comando le indica al firewall que::
Simule un paquete TCP que entra en la interfaz interna desde la dirección IP 192.168.0.125 en el puerto de origen 12345 destinado a una dirección IP de 203.0.113.1 en el puerto 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
El resultado final es que el tráfico está permitido, lo que significa que pasó todas las comprobaciones NAT y ACL en la configuración y se envió la interfaz de salida, fuera. Tenga en cuenta que el paquete se tradujo en la Fase 3 y los detalles de esa fase muestran qué regla se ha alcanzado. El anfitrión 192.168.0.125 se traduce dinámicamente a 198.51.100.100 según la configuración.
Ahora, ejecútelo para una conexión de Internet al servidor web. Recuerde, los hosts en Internet accederán al servidor web conectándose a 198.51.100.101 en la interfaz externa. De nuevo, el siguiente comando se traduce como:
Simule un paquete TCP que entra en la interfaz externa desde la dirección IP 192.0.2.123 en el puerto de origen 12345 destinado a una dirección IP de 198.51.100.101 en el puerto 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
de Nuevo, el resultado es que el paquete está permitido. Las ACLs se comprueban, la configuración se ve bien y los usuarios de Internet (externos) deberían poder acceder a ese servidor web con la IP externa.
Verificar
Los procedimientos de verificación se incluyen en el Paso 4 – Configuración de prueba con la función Rastreador de paquetes.
Solucionar problemas
Actualmente no hay información específica de solución de problemas disponible para esta configuración.
Conclusión
La configuración de un ASA para hacer NAT básico no es una tarea desalentadora. El ejemplo de este documento se puede adaptar a su escenario específico si cambia las direcciones IP y los puertos utilizados en las configuraciones de ejemplo. La configuración ASA final para esto, cuando se combina, es similar a la de 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
En un ASA 5505, por ejemplo, con las interfaces conectadas como se muestra anteriormente (conectadas por fuera a Ethernet0 / 0, conectadas por dentro a Ethernet0 / 1 y la DMZ conectada a 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