In diesem Artikel möchte ich eine Schritt-für-Schritt-Anleitung präsentieren, wie man schnell das derzeit am besten skalierbare Schema bereitstellen kann. Remote-Access VPN Zugriff basierend auf AnyConnect und Cisco ASA – VPN Load Balancing Cluster.
Einführung: Viele Unternehmen weltweit setzen aufgrund der aktuellen Situation mit COVID-19 Maßnahmen, um ihre Mitarbeiter auf Remote-Arbeit umzustellen. Durch die massenhafte Umstellung auf Remote-Arbeit steigt die Belastung der vorhandenen VPN-Gateways der Unternehmen erheblich, und es besteht ein dringender Bedarf an einer schnellen Skalierung. Andererseits müssen viele Unternehmen hastig lernen, was Remote-Arbeit bedeutet.
Um den Unternehmen zu helfen, in kürzester Zeit einen bequemen, sicheren und skalierbaren VPN-Zugang für ihre Mitarbeiter bereitzustellen, bietet Cisco für bis zu 13 Wochen Lizenzen für den multifunktionalen SSL-VPN-Client AnyConnect an. .
.
Ich habe eine Schritt-für-Schritt-Anleitung für eine einfache Bereitstellung des VPN Load-Balancing-Clusters vorbereitet, da dies die am besten skalierbare VPN-Technologie ist.
Das folgende Beispiel wird in Bezug auf die verwendeten Authentifizierungs- und Autorisierungsalgorithmen ziemlich einfach sein, aber es ist eine gute Option für einen schnellen Einstieg (was viele derzeit dringend benötigen) mit der Möglichkeit, eine tiefere Anpassung während der Bereitstellung vorzunehmen.
Kurze Informationen: Die Technologie des VPN Load Balancing Cluster ist kein Failover und keine Funktionalität der Clusterbildung im herkömmlichen Sinne, sondern ermöglicht die Kombination völlig unterschiedlicher ASA-Modelle (mit bestimmten Einschränkungen), um die Last der Remote-Access-VPN-Verbindungen zu verteilen. Es gibt keine Synchronisation der Sessions und Konfigurationen zwischen den Knoten eines solchen Clusters, aber es ist möglich, die Last der VPN-Verbindungen automatisch zu verteilen und die Verfügbarkeit der VPN-Verbindungen sicherzustellen, solange mindestens ein aktiver Knoten im Cluster vorhanden ist. Die Last im Cluster wird automatisch in Abhängigkeit von der Belastung der Knoten in Bezug auf die Anzahl der VPN-Sessions verteilt.
Um die Ausfallsicherheit bestimmter Knoten im Cluster zu gewährleisten (falls erforderlich), kann ein Failover-Mechanismus eingesetzt werden, wodurch die aktive Verbindung von der Primärknoten des Failover-Mechanismus verarbeitet wird. Ein Failover-Mechanismus ist keine zwingende Voraussetzung für die Gewährleistung der Ausfallsicherheit innerhalb eines Load-Balancing-Clusters; der Cluster selbst wird im Falle eines Knotenausfalls die Benutzersitzung auf einen anderen aktiven Knoten umschalten, jedoch ohne den Verbindungsstatus zu speichern, was durch den Failover-Mechanismus bereitgestellt wird. Daher können diese beiden Technologien bei Bedarf kombiniert werden.
Ein VPN-Load-Balancing-Cluster kann mehr als zwei Knoten enthalten.
Ein VPN-Load-Balancing-Cluster wird auf ASA 5512-X und höher unterstützt.
Da jede ASA innerhalb des VPN-Load-Balancing-Clusters eine unabhängige Einheit in Bezug auf die durchgeführten Einstellungen darstellt, werden alle Konfigurationsschritte individuell auf jedem einzelnen Gerät durchgeführt.
Logische Topologie des gegebenen Beispiels:

Erstbereitstellung:
Wir implementieren Instanzen von ASAv aus den benötigten Vorlagen (ASAv5/10/30/50).
Schnittstellen INSIDE/OUTSIDE werden auf identische VLANs zugewiesen (Outside in seinem VLAN, INSIDE in seinem, aber gemeinsam im Rahmen des Clusters, siehe Topologie). Es ist wichtig, dass Schnittstellen desselben Typs im gleichen L2-Segment sind.
Lizenzen:
- Zu dem Zeitpunkt, an dem ASAv installiert wird, wird es keine Lizenzen haben und die Leistung ist auf 100 kbit/s beschränkt.
- Um die Lizenz zu installieren, müssen Sie ein Token in Ihrem Smart-Account generieren: -> Smart Software Lizenzierung
- Im sich öffnenden Fenster drücken Sie die Taste Neues Token

- Stellen Sie sicher, dass im sich öffnenden Fenster ein aktives Feld vorhanden ist und das Kästchen gesetzt ist Exportkontrollierte Funktionalität erlauben… Ohne dieses aktive Feld können Sie starke Verschlüsselungsfunktionen und damit VPN nicht verwenden. Wenn dieses Feld nicht aktiv ist, wenden Sie sich bitte an Ihr Account-Team mit der Bitte um Aktivierung.

- Nach dem Drücken der Taste Token erstellen, wird ein Token erstellt, das wir zur Erlangung der Lizenz für ASAv verwenden werden, kopieren wir es:

- Wiederholen Sie die Schritte C,D,E für jede bereitgestellte ASAv.
- Um das Kopieren des Tokens zu erleichtern, erlauben wir vorübergehend Telnet. Wir konfigurieren jede ASA (das Beispiel unten veranschaulicht die Einstellungen an ASA-1). Telnet von outside funktioniert nicht; falls unbedingt erforderlich, ändern Sie den Sicherheitslevel auf 100 für outside und setzen Sie ihn danach wieder zurück.
! ciscoasa(config)# int gi0/0 ciscoasa(config)# nameif outside ciscoasa(config)# ip address 192.168.31.30 255.255.255.0 ciscoasa(config)# no shut ! ciscoasa(config)# int gi0/1 ciscoasa(config)# nameif inside ciscoasa(config)# ip address 192.168.255.2 255.255.255.0 ciscoasa(config)# no shut ! ciscoasa(config)# telnet 0 0 inside ciscoasa(config)# username admin password cisco priv 15 ciscoasa(config)# ena password cisco ciscoasa(config)# aaa authentication telnet console LOCAL ! ciscoasa(config)# route outside 0 0 192.168.31.1 ! ciscoasa(config)# wr !- Um das Token im Smart-Account-Cloud zu registrieren, muss ASA Zugriff auf das Internet gewährt werden. .
Kurz gesagt, wird ASA benötigt:
- Zugriff auf das Internet über HTTPS;
- Zeit Synchronisation (am besten über NTP);
- ein konfigurierter DNS-Server;
- Wir melden uns per telnet bei unseren ASAs an und konfigurieren die Einstellungen zur Aktivierung der Lizenz über das Smart-Account.
! ciscoasa(config)# clock set 19:21:00 Mar 18 2020 ciscoasa(config)# clock timezone MSK 3 ciscoasa(config)# ntp server 192.168.99.136 ! ciscoasa(config)# dns domain-lookup outside ciscoasa(config)# DNS server-group DefaultDNS ciscoasa(config-dns-server-group)# name-server 192.168.99.132 ! ! Überprüfen wir die DNS-Funktion: ! ciscoasa(config-dns-server-group)# ping ya.ru Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 87.250.250.242, timeout is 2 seconds: !!!!! ! ! Überprüfen wir die NTP-Synchronisation: ! ciscoasa(config)# show ntp associations address ref clock st when poll reach delay offset disp *~192.168.99.136 91.189.94.4 3 63 64 1 36.7 1.85 17.5 * master (synced), # master (unsynced), + selected, - candidate, ~ configured ! ! Konfigurieren wir unsere ASAv für Smart-Licensing (gemäß Ihrem Profil, in meinem Fall 100M als Beispiel) ! ciscoasa(config)# license smart ciscoasa(config-smart-lic)# feature tier standard ciscoasa(config-smart-lic)# throughput level 100M ! ! Bei Bedarf kann der Internetzugang über einen Proxy eingerichtet werden, verwenden Sie den folgenden Befehlsblock: !call-home ! http-proxy ip_address port port ! ! Dann fügen wir das aus dem Smart-Account-Portal kopierte Token (<token>) ein und registrieren die Lizenz ! ciscoasa(config)# end ciscoasa# license smart register idtoken <token>- Überprüfen wir, ob das Gerät die Lizenz erfolgreich registriert hat und die Verschlüsselungsoptionen verfügbar sind:


Konfigurieren Sie ein grundlegendes SSL-VPN auf jedem Gateway
- Als nächstes richten wir den Zugriff über SSH und ASDM ein:
ciscoasa(config)# ssh ver 2 ciscoasa(config)# aaa authentication ssh console LOCAL ciscoasa(config)# aaa authentication http console LOCAL ciscoasa(config)# hostname vpn-demo-1 vpn-demo-1(config)# domain-name ashes.cc vpn-demo-1(config)# cry key gen rsa general-keys modulus 4096 vpn-demo-1(config)# ssh 0 0 inside vpn-demo-1(config)# http 0 0 inside ! ! Aktivieren wir den HTTPS-Server für ASDM auf Port 445, um Konflikte mit dem SSL-VPN-Portal zu vermeiden ! vpn-demo-1(config)# http server enable 445 !- Für die Verwendung von ASDM muss es zuerst von der Website cisco.com heruntergeladen werden, in meinem Fall ist dies die folgende Datei:

- Für die Verwendung des AnyConnect-Clients muss ein Abbild für jedes verwendete Desktop-Betriebssystem (geplante Verwendung Linux/Windows/MAC) auf jede ASA geladen werden, benötigt wird eine Datei mit Headend Deployment Package im Namen:

- Die heruntergeladenen Dateien können beispielsweise auf einen FTP-Server hochgeladen und auf jede einzelne ASA heruntergeladen werden:

- Konfigurieren Sie ASDM und ein selbstsigniertes Zertifikat für SSL-VPN (im Produktivbetrieb wird empfohlen, ein vertrauenswürdiges Zertifikat zu verwenden). Der installierte FQDN des virtuellen Cluster-Standorts (vpn-demo.ashes.cc) sowie jeder FQDN, der mit der externen Adresse jeder Cluster-Knoten assoziiert ist, muss in der externen DNS-Zone auf die IP-Adresse des OUITSIDE-Interfaces (oder auf die gemappte Adresse, falls der Port udp/443 (DTLS) oder tcp/443 (TLS) weitergeleitet wird) aufgelöst werden. Detaillierte Informationen zu den Zertifikatsanforderungen finden Sie im Abschnitt Zertifikatsüberprüfung der Dokumentation.
! vpn-demo-1(config)# crypto ca trustpoint SELF vpn-demo-1(config-ca-trustpoint)# enrollment self vpn-demo-1(config-ca-trustpoint)# fqdn vpn-demo.ashes.cc vpn-demo-1(config-ca-trustpoint)# subject-name cn=*.ashes.cc, ou=ashes-lab, o=ashes, c=ru vpn-demo-1(config-ca-trustpoint)# serial-number vpn-demo-1(config-ca-trustpoint)# crl configure vpn-demo-1(config-ca-crl)# cry ca enroll SELF % Der vollständig qualifizierte Domainname im Zertifikat wird sein: vpn-demo.ashes.cc Selbstsigniertes Zertifikat generieren? [ja/nein]: ja vpn-demo-1(config)# ! vpn-demo-1(config)# sh cry ca certificates Zertifikat Status: Verfügbar Zertifikatsseriennummer: 4d43725e Zertifikat-Nutzung: Allgemeiner Zweck Öffentlicher Schlüsseltpy: RSA (4096 Bit) Signaturalgorithmus: SHA256 mit RSA-Verschlüsselung Issuer Name: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Betreffsname: serialNumber=9A439T02F95 hostname=vpn-demo.ashes.cc cn=*.ashes.cc ou=ashes-lab o=ashes c=ru Gültigkeitsdatum: Startdatum: 00:16:17 MSK 19. März 2020 Enddatum: 00:16:17 MSK 17. März 2030 Speicherort: config Zuordnung von Vertrauensstellen: SELF CA-Zertifikat Status: Verfügbar Zertifikatsseriennummer: 0509 Zertifikat-Nutzung: Allgemeiner Zweck Öffentlicher Schlüsseltpy: RSA (4096 Bit) Signaturalgorithmus: SHA1 mit RSA-Verschlüsselung Issuer Name: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Betreffsname: cn=QuoVadis Root CA 2 o=QuoVadis Limited c=BM Gültigkeitsdatum: Startdatum: 21:27:00 MSK 24. November 2006 Enddatum: 21:23:33 MSK 24. November 2031 Speicherort: config Zuordnung von Vertrauensstellen: _SmartCallHome_ServerCA- Um die Funktionalität von ASDM zu überprüfen, vergessen Sie nicht, den Port anzugeben, zum Beispiel:

- Wir führen die grundlegenden Tunnelkonfigurationen durch:
- Wir machen das Unternehmensnetzwerk über das Tunnel verfügbar und leiten das Internet direkt weiter (nicht die sicherste Methode, wenn keine Schutzmaßnahmen auf dem verbundenen Host vorhanden sind, eventuell Eindringen über einen infizierten Host und Abfluss von Unternehmensdaten, Option split-tunnel-policy tunnelall leitet den gesamten Host-Traffic ins Tunnel. Dennoch Split-Tunnel gibt die Möglichkeit, das VPN-Gateway zu entlasten und den Internet-Traffic des Hosts nicht zu verarbeiten)
- Wir vergeben Hosts im Tunnel Adressen aus dem Subnetz 192.168.20.0/24 (Bereich von 10 bis 30 Adressen (für Knoten #1)). Jeder Knoten des VPN-Clusters sollte seinen eigenen Pool haben.
- Wir führen eine grundlegende Authentifizierung mit einem lokal erstellen Benutzer auf der ASA durch (dies wird nicht empfohlen, da es die einfachste Methode ist), besser ist die Authentifizierung über LDAP/RADIUS, besser noch verbinden mit Multi-Factor Authentication (MFA), zum Beispiel Cisco DUO.
! vpn-demo-1(config)# ip local pool vpn-pool 192.168.20.10-192.168.20.30 mask 255.255.255.0 ! vpn-demo-1(config)# access-list split-tunnel standard permit 192.168.0.0 255.255.0.0 ! vpn-demo-1(config)# group-policy SSL-VPN-GROUP-POLICY internal vpn-demo-1(config)# group-policy SSL-VPN-GROUP-POLICY attributes vpn-demo-1(config-group-policy)# vpn-tunnel-protocol ssl-client vpn-demo-1(config-group-policy)# split-tunnel-policy tunnelspecified vpn-demo-1(config-group-policy)# split-tunnel-network-list value split-tunnel vpn-demo-1(config-group-policy)# dns-server value 192.168.99.132 vpn-demo-1(config-group-policy)# default-domain value ashes.cc vpn-demo-1(config)# tunnel-group DefaultWEBVPNGroup general-attributes vpn-demo-1(config-tunnel-general)# default-group-policy SSL-VPN-GROUP-POLICY vpn-demo-1(config-tunnel-general)# address-pool vpn-pool ! vpn-demo-1(config)# username dkazakov password cisco vpn-demo-1(config)# username dkazakov attributes vpn-demo-1(config-username)# service-type remote-access ! vpn-demo-1(config)# ssl trust-point SELF vpn-demo-1(config)# webvpn vpn-demo-1(config-webvpn)# enable outside vpn-demo-1(config-webvpn)# anyconnect image disk0:/anyconnect-win-4.8.03036-webdeploy-k9.pkg vpn-demo-1(config-webvpn)# anyconnect enable !- (OPTIONAL): Im obigen Beispiel haben wir einen lokalen Benutzer auf dem MCE verwendet, um Remote-Benutzer zu authentifizieren, was natürlich abgesehen von einem Labor nicht empfehlenswert ist. Ich werde ein Beispiel geben, wie man die Einstellungen schnell für die Authentifizierung auf RADIUS Servern anpassen kann, als Beispiel verwenden wir Cisco Identity Services Engine:
vpn-demo-1(config-aaa-server-group)# dynamic-authorization vpn-demo-1(config-aaa-server-group)# interim-accounting-update vpn-demo-1(config-aaa-server-group)# aaa-server RADIUS (outside) host 192.168.99.134 vpn-demo-1(config-aaa-server-host)# key cisco vpn-demo-1(config-aaa-server-host)# exit vpn-demo-1(config)# tunnel-group DefaultWEBVPNGroup general-attributes vpn-demo-1(config-tunnel-general)# authentication-server-group RADIUS !Diese Integration ermöglicht nicht nur eine schnelle Integration des Authentifizierungsprozesses mit dem AD-Katalogdienst, sondern auch die Unterscheidung der Zugehörigkeit des angeschlossenen Computer zum AD, um zu verstehen, ob es sich um ein Unternehmensgerät oder ein persönliches handelt und den Zustand des angeschlossenen Geräts zu bewerten.


- Wir werden Transparent NAT einrichten, damit der Datenverkehr zwischen dem Client und den Ressourcen des Unternehmensnetzwerks nicht NAT-iert wird:
vpn-demo-1(config-network-object)# subnet 192.168.20.0 255.255.255.0 ! vpn-demo-1(config)# nat (inside,outside) source static any any destination static vpn-users vpn-users no-proxy-arp- (OPTIONAL): Um unsere Clients über die ASA ins Internet zu bringen (bei Verwendung von tunnelall Um Optionen) unter Verwendung von PAT zu nutzen und auch über dasselbe OUTSIDE-Interface herauszukommen, von wo sie verbunden sind, sind die folgenden Einstellungen erforderlich.
vpn-demo-1(config-network-object)# nat (outside,outside) source dynamic vpn-users interface vpn-demo-1(config)# nat (inside,outside) source dynamic any interface vpn-demo-1(config)# same-security-traffic permit intra-interface !- Es ist äußerst wichtig, bei der Verwendung eines Clusters dem internen Netzwerk zu ermöglichen, zu verstehen, auf welke ASA der Rückverkehr zu den Benutzern geleitet werden soll. Dazu ist es notwendig, die Umverteilung der Route der /32-Adressen, die an die Clients zugewiesen werden, zu konfigurieren.
Derzeit haben wir den Cluster noch nicht konfiguriert, aber wir haben bereits funktionierende VPN-Gateways, die über FQDN oder IP einzeln verbunden werden können.

Wir sehen den verbundenen Client in der Routing-Tabelle der ersten ASA:

Damit unser gesamter VPN-Cluster und das gesamte Unternehmensnetzwerk die Route zu unserem Kunden kennt, werden wir das Kundenpräfix in das Protokoll der dynamischen Routenweiterleitung, z. B. OSPF, umverteilen:
! vpn-demo-1(config)# route-map RMAP-VPN-REDISTRIBUTE permit 1 vpn-demo-1(config-route-map)# match ip address VPN-REDISTRIBUTE ! vpn-demo-1(config)# router ospf 1 vpn-demo-1(config-router)# network 192.168.255.0 255.255.255.0 area 0 vpn-demo-1(config-router)# log-adj-changes vpn-demo-1(config-router)# redistribute static metric 5000 subnets route-map RMAP-VPN-REDISTRIBUTEJetzt haben wir die Route zum Client vom zweiten Gateway ASA-2, und Benutzer, die sich mit verschiedenen VPN-Gateways im Cluster verbinden, können z. B. über die Unternehmenssoftware direkt kommunizieren, und der Rückverkehr von den angeforderten Ressourcen des Benutzers wird an das benötigte VPN-Gateway gesendet:

Wir gehen zur Konfiguration des Load-Balancing des Clusters über.
Die Adresse 192.168.31.40 wird als Virtual IP (VIP – alle VPN-Clients werden zunächst mit ihr verbunden) verwendet. Von dieser Adresse aus wird der Master des Clusters eine REDIRECT an den weniger belasteten Knoten des Clusters durchführen. Vergessen Sie nicht, eine direkte und umgekehrte DNS-Eintragung sowohl für jede externe Adresse/FQDN jedes Knotens des Clusters als auch für das VIP vorzunehmen.
vpn-demo-1(config)# vpn load-balancing vpn-demo-1(config-load-balancing)# interface lbpublic outside vpn-demo-1(config-load-balancing)# interface lbprivate inside vpn-demo-1(config-load-balancing)# priority 10 vpn-demo-1(config-load-balancing)# cluster ip address 192.168.31.40 vpn-demo-1(config-load-balancing)# cluster port 4000 vpn-demo-1(config-load-balancing)# redirect-fqdn enable vpn-demo-1(config-load-balancing)# cluster key cisco vpn-demo-1(config-load-balancing)# cluster encryption vpn-demo-1(config-load-balancing)# cluster port 9023 vpn-demo-1(config-load-balancing)# participate vpn-demo-1(config-load-balancing)#- Wir überprüfen die Funktion des Clusters mit zwei verbundenen Clients:

- Wir machen die Kundenerfahrung bequemer mit einem automatisch geladenen AnyConnect-Profil über ASDM.

Wir benennen das Profil sinnvoll und assoziieren unsere Gruppenrichtlinie damit:

Nach dem nächsten Verbindungsaufbau wird dieses Profil automatisch heruntergeladen und im AnyConnect-Client installiert, sodass es bei Bedarf einfach aus der Liste ausgewählt werden kann:

Da wir dieses Profil mit ASDM nur auf einer ASA erstellt haben, vergessen Sie nicht, die Schritte auf den anderen ASAs des Clusters zu wiederholen.
Ausgabe: So haben wir schnell ein Cluster aus mehreren VPN-Gateways mit automatischer Lastverteilung bereitgestellt. Neue Knoten zum Cluster hinzuzufügen, ist einfach, wodurch horizontale Skalierung durch die Bereitstellung neuer ASAv-virtueller Maschinen oder durch den Einsatz von Hardware-ASA möglich ist. Der multifunktionale AnyConnect-Client kann die Möglichkeiten der sicheren Remote-Verbindung erheblich erweitern mit der Funktion Posture (Zustandsbewertung), die am effektivsten in Verbindung mit einem zentralisierten Kontrolldienst und Zugangsberichterstattung eingesetzt wird Identity Services Engine.
Quelle: habr.com


















