Cisco ASA: ¿Por qué la NAT estática bloquea el acceso a través de VPN? [cerrado]

7

TL / DR

Configuré una regla nat estática, de modo que pueda usar mi dirección IP pública de Internet para ingresar directamente en una máquina dedicada en la red interna. Como resultado, ya no puedo ingresar a la máquina dedicada cuando estoy conectado a través de AnyConnect VPN. ¿Por qué? ¿Cómo puedo solucionar esto?

Larga historia:

Tengo un ASA 5512-X que uso para terminar las sesiones de AnyConnect VPN. Esto ha estado funcionando muy bien. Las personas usan AnyConnect para conectarse al ASA, obtienen direcciones IP del grupo de IP especialmente asignado y pueden acceder a todo lo que pongo en las listas de acceso.

Ahora, tengo esta idea de reenviar directamente el puerto 22 a una máquina dedicada en mi red (solo tengo interfaces internas y externas), de modo que pueda SSH en mi dirección IP pública y terminar en la máquina dedicada, sin el requisito de Una conexión VPN.

La configuración parecía bastante simple:

object network MyEndpoint
    host 10.0.0.1
    nat (inside, outside) static interface service tcp ssh ssh
access-list from_outside_inside extended permit tcp any object MyEndpoint eq ssh
access-group from_outside_inside in interface outside

y en realidad funciona Ahora puedo

ssh ssh.mydomain.com

y de hecho obtener una sesión ssh en mi máquina dedicada. Sin embargo, este éxito tiene un costo que ssh 10.0.0.1ya no funciona cuando estoy conectado a mi ASA / red a través de AnyConnect como solía hacerlo, antes de configurar la NAT estática.

Puedo controlar de manera determinista el comportamiento del ASA:

Cuando no tengo la nat (inside,outside)línea en mi configuración,

  • ssh 10.0.0.1 funciona pero
  • ssh ssh.mydomain.com No funciona.

Cuando tengo la nat (inside,outside)regla como parte de la configuración, es al revés:

  • ssh ssh.mydomain.com funciona pero
  • ssh 10.0.0.1 No funciona.

Para investigar configuré una captura en el ASA

capture MyEndpoint type raw-data interface inside
capture MyEndpoint type raw-data interface outside
capture MyEndpoint match tcp host 10.0.0.1 any

Cuando me conecto por primera vez a través de AnyConnect y luego intento ssh 10.0.0.1, la captura no muestra / captura nada, siempre que la nat (inside,outside)regla esté activa. Además, mis intentos de conexión SSH nunca llegan al servidor.

Claramente, el ASA está consumiendo las solicitudes de conexión que se originan en los puntos finales conectados a AnyConnect, cuando la natregla está activa.

Al principio pensé que necesitaba agregar algo a la lista de acceso, pero no pude hacerlo funcionar de esa manera. ¿En qué interfaz ingresa el tráfico VPN al ASA? afuera o adentro? Supongo que en este caso no importa, porque estoy usando un comodín ( any) para la fuente, que, en mi opinión, también incluye el tráfico VPN.

Entonces pensé que el ASA siempre aplicaría el nat, lo que significa que el paquete que lleva el SYN-ACK se conectaría a mi IP externa, lo que interrumpe la conexión, ya que me estoy conectando desde una dirección VPN privada, no desde Internet. Pero los SYN nunca llegan al servidor, por lo tanto, no hay SYN-ACK.

Pasé todo el día deformando mi cabeza alrededor del natcomando "nuevo" . Cuando hago un show naten mi ASA me sale

Auto NAT Policies (Section 2)
1 (inside) to (outside) source static MyEndpoint interface   service tcp ssh ssh 
    translate_hits = 0, untranslate_hits = 0

Hasta donde obtuve hoy, esto solo hace una traducción de la dirección de origen para dejar el tráfico. No tengo idea de cómo / por qué esto implica una traducción de la dirección de destino para el tráfico que se origina en Internet y llega al ASA. ¿Alguien puede explicarme por qué ASA se comporta de esta manera?

Editar 1: packet-tracer

Leyendo a través de las documentaciones me encontré con el comando ASA packet-tracer. Cuando lo hago

packet-tracer input inside tcp 10.100.0.2 31337 10.0.0.1 22

El ASA me dice que se creará un flujo y se aceptará el paquete. Cuando lo hago

packet-tracer input outside tcp 10.100.0.2 31337 10.0.0.1 22

yo obtengo

Phase: 6
Type: WEBVPN-SVC
Subtype: in
Result: DROP
Config:
Additional Information:

Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule

Así que supongo que este es un comportamiento implícitamente deseado, excepto si eres yo.

Edición 2: Buscando horquillas

Encontré algunos artículos que eventualmente me señalaron a este prometedor que contenía la información que podría necesitar una regla nat en la línea de

nat (outside,outside) \
    source static \
        client_vpn_pool client_vpn_pool \
    destination static \
        remote_office_net remote_office_net

Pero no funcionó. Tengo un objeto de red para mi subred de cliente vpn y un objeto de red para la subred de 10.0.0.1. La adaptación de la plantilla anterior no produjo el resultado esperado.

Cuando mi nat (inside,outside)regla está en su lugar, SSH no funciona, pero puedo hacer ping 10.0.0.1 muy bien. Cuando agrego una nat (outside,ouside)regla como lo sugiere el artículo, el ping deja de funcionar. También probé versiones de la regla externa con objetos de red para el host específico y solo el rango de los ip local poolutilizados para clientes vpn. Todos simplemente hacen que el ping se detenga.

Edición 3: no importa

Está funcionando ahora. Literalmente no cambié nada. Me acabo de acostar. Supongo que hubo un estado interno en el ASA que causó este comportamiento y expiró mientras dormía.

Todavía hay algo que cuando uso el packet-tracer input [inside|outside] tcp <my vpn ip> 31337 10.0.0.1 22paquete-trazador siempre dice que el paquete se descartará.

Cuando lo pongo packet-tracer input insidefalla en:

Phase: 6
Type: WEBVPN-SVC
Subtype: in
Result: DROP
Config:
Additional Information:

[...]
Drop-reason: (acl-drop) Flow is denied by configured rule

y cuando lo pongo packet-tracer input outsidefalla en:

Phase: 6
Type: NAT
Subtype: rpf-check
Result: DROP
Config:
object network MyEndpoint
 nat (inside,outside) static interface service tcp ssh ssh 
Additional Information:

[...]
Drop-reason: (acl-drop) Flow is denied by configured rule

Sin embargo, a partir de hoy, hacer ping y SSH a / desde mi computadora portátil conectada a VPN a MyEndpoint (también conocido como 10.0.0.1) funciona de maravilla. ¿Cómo funciona esta cosa ASA?

usuario1129682
fuente
Hola, ¿puedes conectarte en línea? Tengo el mismo ASA y sería bueno hablar de eso, pero no en este hilo porque esto no es un tema ;-) ¡Sería muy bueno!
SystemCookie
¿Lo es? Me preguntaba si Superusuario podría haber sido el mejor lugar, pero allí discutimos principalmente sobre los sistemas operativos y este sitio tiene tantas preguntas sobre ASA ... Me gustaría hablar sobre ello, pero realmente no puedo. ¿Puedo enviarte un mensaje en un par de días?
user1129682
No, tu publicación es completamente correcta. Quiero decir que chatear en una pregunta no es un tema ;-) Sí, puedes enviarme un mensaje; si haces clic en el chat, te enviaré los datos donde puedas encontrarme y podremos hablar sobre ASA 5512-X ;-)
SystemCookie
¿Alguna respuesta te ayudó? Si es así, debe aceptar la respuesta para que la pregunta no siga apareciendo para siempre, buscando una respuesta. Alternativamente, puede proporcionar y aceptar su propia respuesta.
Ron Maupin
" Está funcionando ahora. Literalmente no cambié nada. Simplemente me fui a la cama. Supongo que hubo algún estado interno en el ASA que causó este comportamiento y se agotó el tiempo mientras dormía " . Publique esto como respuesta y acéptelo para que la pregunta no siga apareciendo para siempre, buscando una respuesta.
Ron Maupin

Respuestas:

1

Entonces, si entiendo correctamente, ¿no puede acceder a la interfaz interna de su ASA a través de SSH cuando está conectado a través de VPN? ¿Has intentado emitir el siguiente comando en el ASA:

acceso de gestión dentro

Si su túnel VPN termina en una interfaz, pero desea administrar el ASA accediendo a una interfaz diferente, debe identificar esa interfaz como una interfaz de acceso de administración.

usuario34227
fuente
No, no hay nada de malo en acceder al ASA. Cuando estoy conectado a través de VPN, no puedo ingresar al servidor Linux (llamémoslo Rudolph) que es parte de mi red interna y configuré el NAT estático para. Todo lo demás funciona muy bien. Puedo ingresar a Rudolph desde cualquier otra computadora en la red interna. Puedo ingresar a Rudolph desde Internet. Pero no puedo acceder a Rudolph cuando estoy conectado a través de VPN. Sin embargo, puedo hacer ping a Rudolph cuando estoy conectado a través de VPN. Yo también he management-access insidepuesto.
user1129682
@ user1129682, parece que solo necesita permitir SSH en la VPN. Simplemente modifique la configuración ASA para permitir SSH desde la interfaz del túnel a la interfaz interior.
Ron Maupin
@RonMaupin ¿Cuál es la interfaz del túnel? (los punteros al documento están bien para mí)
usuario1129682
@ user1129682, Eso es lo que creó para su VPN en el ASA.
Ron Maupin
@RonMaupin no lo hice. Encontré la caja en su estado actual y nadie está dispuesto a afirmar que las personas que la instalaron alguna vez existieron. Pero aparentemente el ASA está en uso productivo ... ¿Te refieres a la interfaz en la que está habilitado webvpn? Tengo enabled outsidey enabled inside. Además, está funcionando ahora (ver Edición 3) sin ninguna configuración adicional.
user1129682
1

Tenga en cuenta que al acceder a la VPN SSL basada en la web, NAT y PAT están restringidos en CISCO ASA. Además, el flujo de tráfico debe especificarse utilizando ACL bidireccionales, permitiendo conexiones de retorno desde un host de menor seguridad a un host de mayor seguridad incluso si ya hay una conexión establecida desde el host de nivel superior al host de nivel inferior (ya no tiene estado) )

Espero que esta sea la razón por la que su NAT configurado no funcionó.

El comando "sysopt connection permit-vpn" se usa en el ASA para permitir el tráfico VPN independientemente de las listas de acceso (política exenta al permitir todo el tráfico VPN), sin embargo, puede usar los filtros y políticas VPN para restringir el tráfico.

Suponiendo que el comando esté activo en su firewall y que el atributo de valor de dns-server no esté configurado correctamente en sus políticas de VPN.

Me alegra ver que funcionó para usted sin ningún cambio.

Jey
fuente