Cisco ASA: Warum blockiert statisches NAT den Zugriff über VPN? [geschlossen]


7

TL / DR

Ich habe eine statische Nat-Regel eingerichtet, damit ich meine öffentliche Internet-IP-Adresse verwenden kann, um direkt in einen dedizierten Computer im internen Netzwerk zu ssh. Infolgedessen kann ich nicht mehr auf den dedizierten Computer zugreifen, wenn eine Verbindung über AnyConnect VPN besteht. Warum? Wie behebe ich das?

Lange Geschichte:

Ich habe einen ASA 5512-X, mit dem ich AnyConnect-VPN-Sitzungen beenden kann. Das hat sehr gut funktioniert. Die Benutzer verwenden AnyConnect, um eine Verbindung zum ASA herzustellen, IP-Adressen aus dem speziell zugewiesenen IP-Pool abzurufen und auf alles zuzugreifen, was ich in die Zugriffslisten aufgenommen habe.

Jetzt habe ich die Idee, Port 22 direkt an einen dedizierten Computer in meinem Netzwerk weiterzuleiten (ich habe nur interne und externe Schnittstellen), damit ich SSH in meine öffentliche IP-Adresse eingeben und auf dem dedizierten Computer landen kann, ohne dass dies erforderlich ist eine VPN-Verbindung.

Das Setup schien einfach zu sein:

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

und es funktioniert tatsächlich. Jetzt kann ich

ssh ssh.mydomain.com

und tatsächlich eine SSH-Sitzung auf meinem dedizierten Computer erhalten. Dieser Erfolg geht jedoch zu ssh 10.0.0.1Lasten der Kosten, die nicht mehr funktionieren, wenn ich wie früher über AnyConnect mit meinem ASA / Netzwerk verbunden bin, bevor ich statisches NAT einrichte.

Ich kann das Verhalten der ASA deterministisch steuern:

Wenn ich nicht über die nat (inside,outside)Linie in meiner Konfiguration,

  • ssh 10.0.0.1 funktioniert aber
  • ssh ssh.mydomain.com funktioniert nicht.

Wenn ich habe die nat (inside,outside)Regel als Teil der Konfiguration ist es umgekehrt:

  • ssh ssh.mydomain.com funktioniert aber
  • ssh 10.0.0.1 funktioniert nicht.

Zur Untersuchung habe ich eine Erfassung auf der ASA eingerichtet

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

Wenn ich mich zuerst über AnyConnect verbinde und es dann versuche ssh 10.0.0.1, zeigt / erfasst das Capture nichts, solange die nat (inside,outside)Regel aktiv ist. Außerdem erreichen meine SSH-Verbindungsversuche niemals den Server.

Es ist klar, dass der ASA die Verbindungsanforderungen von AnyConnect-verbundenen Endpunkten verarbeitet, wenn die natRegel aktiv ist.

Zuerst dachte ich, ich brauche eine Ergänzung zur Zugriffsliste, aber ich konnte es nicht so machen. Auf welcher Schnittstelle gelangt der VPN-Verkehr überhaupt in den ASA? außen oder innen? Ich nehme an, dass dies in diesem Fall keine Rolle spielt, da ich einen Platzhalter ( any) für die Quelle verwende, der meiner Meinung nach auch VPN-Verkehr enthält.

Dann dachte ich, der ASA würde immer das nat anwenden, was bedeutet, dass das Paket, das das SYN-ACK trägt, an meine externe IP-Adresse angeschlossen wird, wodurch die Verbindung unterbrochen wird, da ich eine Verbindung von einer privaten VPN-Adresse herstelle, nicht vom Internet. Die SYNs gelangen jedoch nie zum Server, daher gibt es keine SYN-ACKs.

Ich verbrachte den ganzen Tag damit, meinen Kopf um den "neuen" natBefehl zu drehen . Wenn ich einen show natauf meinem ASA mache, bekomme ich

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

Soweit ich heute gekommen bin, wird nur eine Quelladressübersetzung durchgeführt, um den Verkehr zu verlassen. Ich habe keine Ahnung, wie / warum dies eine Übersetzung der Zieladresse für Datenverkehr aus dem Internet impliziert, der bei der ASA ankommt. Kann mir jemand erklären, warum sich die ASA so verhält?

Bearbeiten 1: packet-tracer

Beim Lesen der Dokumentationen stieß ich auf den ASA-Befehl packet-tracer. Wenn ich es tue

packet-tracer input inside tcp 10.100.0.2 31337 10.0.0.1 22

Der ASA teilt mir mit, dass ein Datenfluss erstellt und das Paket akzeptiert wird. Wenn ich es tue

packet-tracer input outside tcp 10.100.0.2 31337 10.0.0.1 22

Ich bekomme

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

Ich denke, dies ist ein implizit gewünschtes Verhalten, außer wenn Sie ich sind.

Edit 2: Suche nach Haarnadeln

Ich fand einige Artikel, die mich schließlich auf diesen vielversprechenden hinwiesen, der die Informationen enthielt , für die ich möglicherweise eine natürliche Regel benötige

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

aber es hat nicht funktioniert. Ich habe ein Netzwerkobjekt für mein VPN-Client-Subnetz und ein Netzwerkobjekt für das Subnetz 10.0.0.1. Das Anpassen der obigen Vorlage ergab nicht das erwartete Ergebnis.

Wenn meine nat (inside,outside)Regel vorhanden ist, funktioniert SSH nicht, aber ich kann 10.0.0.1 problemlos anpingen. Wenn ich eine nat (outside,ouside)Regel hinzufüge, wie im Artikel vorgeschlagen, funktioniert der Ping nicht mehr. Ich habe auch Versionen der externen Regel mit Netzwerkobjekten für den jeweiligen Host und nur dem Bereich der ip local poolfür VPN-Clients verwendeten versucht. Sie alle lassen den Ping einfach aufhören.

Edit 3: Macht nichts

Es funktioniert jetzt. Ich habe buchstäblich nichts geändert. Ich bin gerade ins Bett gegangen. Ich denke, es gab einen internen Zustand in der ASA, der dieses Verhalten verursacht hat, und es trat eine Zeitüberschreitung auf, während ich schlief.

Es gibt immer noch die Sache, dass, wenn ich packet-tracer input [inside|outside] tcp <my vpn ip> 31337 10.0.0.1 22Packet-Tracer benutze, immer gesagt wird, dass das Paket verworfen werden würde.

Wenn ich packet-tracer input insidees sage, schlägt es fehl bei:

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

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

und wenn ich packet-tracer input outsidees sage, schlägt es fehl bei:

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

Ab heute funktioniert Ping und SSH von / zu meinem mit VPN verbundenen Laptop zu MyEndpoint (auch bekannt als 10.0.0.1) wie ein Zauber. Wie funktioniert diese ASA-Sache ???


Hallo, kannst du im Chat online gehen? Ich habe die gleiche ASA und es wäre schön darüber zu sprechen, aber nicht in diesem Thread, weil dies offtopisch ist ;-) Wäre sehr schön!
SystemCookie

Ist es? Ich habe mich gefragt, ob Superuser der bessere Ort gewesen sein könnte, aber dort diskutieren wir hauptsächlich über Betriebssysteme und diese Seite hat so viele Fragen zu ASAs ... Ich würde gerne darüber sprechen, aber ich kann es wirklich nicht. Darf ich Ihnen in ein paar Tagen eine Nachricht senden?
user1129682

Nein, dein Beitrag ist völlig korrekt. Ich meine, das Chatten in einer Frage ist offtopisch ;-) Ja, Sie können mir eine Nachricht senden - wenn Sie auf Chat klicken, sende ich Ihnen die Daten, wo Sie mich finden können, und wir können über ASA 5512-X sprechen ;-)
SystemCookie

Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

" Es funktioniert jetzt. Ich habe buchstäblich nichts geändert. Ich bin gerade ins Bett gegangen. Ich denke, es gab einen internen Zustand in der ASA, der dieses Verhalten verursacht hat, und es lief ab, während ich schlief. " Bitte poste dies als Antwort und Akzeptiere es, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht.
Ron Maupin

Antworten:


1

Wenn ich das richtig verstehe, können Sie nicht über SSH auf die interne Schnittstelle Ihres ASA zugreifen, wenn Sie über VPN verbunden sind? Haben Sie versucht, den folgenden Befehl auf dem ASA auszugeben:

Management-Zugang im Inneren

Wenn Ihr VPN-Tunnel auf einer Schnittstelle endet, Sie den ASA jedoch durch Zugriff auf eine andere Schnittstelle verwalten möchten, müssen Sie diese Schnittstelle als Verwaltungszugriffsschnittstelle identifizieren.


Nein, am Zugriff auf die ASA ist nichts auszusetzen. Wenn ich über VPN verbunden bin, kann ich nicht auf den Linux-Server (nennen wir ihn Rudolph) zugreifen, der Teil meines internen Netzwerks ist, und ich habe das statische NAT für eingerichtet. Alles andere funktioniert super. Ich kann von jedem anderen Computer im internen Netzwerk aus auf Rudolph zugreifen. Ich kann aus dem Internet in Rudolph ssh. Aber ich kann nicht in Rudolph ssh, wenn über VPN verbunden. Ich kann jedoch Rudolph anpingen, wenn ich über VPN verbunden bin. Ich habe auch management-access insidegesetzt.
user1129682

@ user1129682, es hört sich so an, als müssten Sie nur SSH im VPN zulassen. Ändern Sie einfach die ASA-Konfiguration, um SSH von der Tunnelschnittstelle zur internen Schnittstelle zuzulassen.
Ron Maupin

@ RonMaupin Was ist die Tunnelschnittstelle? (Zeiger auf doc sind in Ordnung für mich)
user1129682

@ user1129682, Das haben Sie für Ihr VPN auf dem ASA erstellt.
Ron Maupin

@ RonMaupin habe ich nicht. Ich habe die Box in ihrem aktuellen Zustand gefunden und niemand ist bereit zu behaupten, dass die Leute, die sie eingerichtet haben, überhaupt existiert haben. Aber anscheinend wird der ASA produktiv verwendet ... Meinen Sie die Schnittstelle, auf der webvpn aktiviert ist? Ich habe enabled outsideund enabled inside. Außerdem funktioniert es jetzt (siehe Bearbeiten 3) ohne weitere Konfiguration.
user1129682

1

Bitte beachten Sie, dass beim Zugriff auf webbasiertes SSL-VPN NAT und PAT in CISCO ASA eingeschränkt sind. Außerdem muss der Verkehrsfluss mithilfe bidirektionaler ACLs angegeben werden, indem Rückverbindungen von einem Host mit niedrigerer Sicherheit zu einem Host mit höherer Sicherheit zugelassen werden, selbst wenn bereits eine Verbindung vom Host höherer Ebene zum Host niedrigerer Ebene besteht (nicht mehr statusbehaftet) ).

Hoffe, dies ist der Grund dafür, dass Ihr konfiguriertes NAT nicht funktioniert hat.

Der Befehl "sysopt connection allow-vpn" wird in der ASA verwendet, um den VPN-Verkehr unabhängig von Zugriffslisten zuzulassen (ausgenommene Richtlinie durch Zulassen des gesamten VPN-Verkehrs). Sie können jedoch die VPN-Filter und -Richtlinien zum Einschränken des Verkehrs verwenden.

Angenommen, der Befehl ist in Ihrer Firewall aktiv und das Attribut dns-server value ist in Ihren VPN-Richtlinien nicht ordnungsgemäß konfiguriert.

Schön zu sehen, dass es bei Ihnen ohne Änderungen funktioniert hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.