Fortsetzung der Artikelreihe zum Thema Organisation Remote-Access VPN Ich kann nicht umhin, eine interessante Erfahrung in Bezug auf die Bereitstellung zu teilen einer hochsicheren VPN-Konfiguration. Eine nicht triviale Aufgabe stellte ein Auftraggeber (es gibt kreative Köpfe in russischen Dörfern), aber Challenge Accepted und kreativ umgesetzt. Infolgedessen entstand ein interessantes Konzept mit folgenden Eigenschaften:
- Mehrere Schutzfaktoren gegen Manipulation des Endgeräts (fest an den Benutzer gebunden);
- Überprüfung der Übereinstimmung des PCs des Benutzers mit der zugewiesenen UDID des erlaubten PCs in der Authentifizierungsdatenbank;
- Mit MFA, die die UDID des PCs aus dem Zertifikat für die sekundäre Authentifizierung über Cisco DUO verwendet (Es kann jede SAML/RADIUS-kompatible Lösung angeschlossen werden);
- Mehrfaktor-Authentifizierung:
- Benutzerzertifikat mit Überprüfung der Felder und sekundärer Authentifizierung über eines dieser Felder;
- Login (unveränderlich, aus dem Zertifikat entnommen) und Passwort;
- Überprüfung des Zustands des sich verbindenden Hosts (Posture)
Verwendete Komponenten der Lösung:
- Cisco ASA (VPN-Gateway);
- Cisco ISE (Authentifizierung / Autorisierung / Abrechnung, Zustandsbewertung, CA);
- Cisco DUO (Mehrfaktor-Authentifizierung) (Es kann jede SAML/RADIUS-kompatible Lösung angeschlossen werden);
- Cisco AnyConnect (Multifunktionsagent für Arbeitsstationen und mobile Betriebssysteme);
Lassen Sie uns mit den Anforderungen des Auftraggebers beginnen:
- Der Benutzer muss in der Lage sein, AnyConnect-Clienten vom VPN-Gateway herunterzuladen, indem er seine Authentifizierung mit Login/Passwort verwendet; alle erforderlichen AnyConnect-Module müssen automatisch gemäß den Benutzerrichtlinien installiert werden;
- Der Benutzer muss in der Lage sein, ein Zertifikat automatisch auszustellen (für eines der Szenarien, das Hauptszenario ist jedoch die manuelle Ausstellung und Übertragung auf den PC); ich habe die automatische Ausstellung zur Demonstration umgesetzt (es ist nie zu spät, es zu entfernen).
- Die Hauptauthentifizierung muss mehrstufig erfolgen, zuerst erfolgt die Authentifizierung des Zertifikats mit der Analyse der erforderlichen Felder und deren Werte, dann Login/Passwort, nur dass diesmal im Login-Fenster der Benutzername eingesetzt werden muss, der im Feld Zertifikat angegeben ist Subject Name (CN) ohne Bearbeitungsmöglichkeit.
- Es muss sichergestellt werden, dass das Gerät, von dem aus der Login erfolgt, der dem Benutzer für den Remote-Zugriff zugewiesene Unternehmenslaptop ist und nicht etwas anderes. (Es wurden mehrere Varianten zur Erfüllung dieser Anforderung erstellt)
- Es sollte eine Bewertung des Zustands des sich verbindenden Geräts (an dieser Stelle der PC) durchgeführt werden, mit der Überprüfung einer umfassenden Tabelle der Anforderungen des Kunden (zusammenfassend):
- Dateien und deren Eigenschaften;
- Registrierungseinträge;
- Betriebssystem-Patches aus der bereitgestellten Liste (später Integration mit SCCM);
- Vorhandensein eines Antivirus eines bestimmten Herstellers und Aktualität der Signaturen;
- Aktivität bestimmter Dienste;
- Vorhandensein bestimmter installierter Programme;
Zunächst schlage ich vor, unbedingt die Video-Demonstration der entstandenen Umsetzung auf Youtube (5 Minuten).

Jetzt schlage ich vor, die im Video nicht angesprochenen Umsetzungsdetails zu betrachten.
Bereiten wir das AnyConnect-Profil vor:
Ein Beispiel zur Erstellung des Profils (im Hinblick auf den Menüpunkt in ASDM) habe ich bereits in meinem Artikel zur Konfiguration erwähnt . Jetzt möchte ich ausdrücklich auf die Optionen eingehen, die wir benötigen:
Im Profil geben wir das VPN-Gateway und den Profilnamen für die Verbindung am Endgerät an:

Wir nehmen die Einstellungen zur automatischen Zertifikatausstellung aus dem Profil vor, wobei wir insbesondere die Zertifikatparameter angeben und darauf achten, dass im Feld Initials (I), wo manuell ein konkreter Wert eingegeben wurde UDID des Testgeräts (Eindeutiger Geräteidentifikator, der vom Cisco AnyConnect-Client generiert wird).

Hier möchte ich eine lyrische Abschweifung machen, da dieser Artikel das Konzept beschreibt. Für Demo-Zwecke wurde hier der UDID für die Zertifikatausstellung im Feld Initials des AnyConnect-Profils eingegeben. Natürlich, in der realen Welt, wenn Sie das so machen, erhalten alle Clients ein Zertifikat mit demselben UDID in diesem Feld, und es wird bei ihnen nicht funktionieren, da sie den UDID speziell für ihren PC benötigen. AnyConnect implementiert leider bisher nicht die Möglichkeit zur Substitution im Profil des Zertifikatsfeldes UDID über eine Umgebungsvariable, so wie es beispielsweise mit der Variablen %USER%.
gestellt wird. Es ist zu beachten, dass der Auftraggeber (dieses Szenario) von Anfang an plant, die Zertifikate mit dem angegebenen UDID manuell für solche geschützten PCs auszustellen, was für ihn kein Problem darstellt. Allerdings wünscht sich die Mehrheit von uns Automatisierung (für mich ganz bestimmt =).
Und das kann ich Ihnen im Hinblick auf die Automatisierung anbieten. Wenn es nicht möglich ist, das Zertifikat automatisch mit AnyConnect dynamisch anhand der UDID auszustellen, gibt es einen anderen Weg, der ein wenig kreatives Denken und geschickte Hände erfordert – ich werde das Konzept erklären. Lassen Sie uns zunächst betrachten, wie die UDID auf verschiedenen Betriebssystemen vom AnyConnect-Agenten generiert wird:
- Windows — SHA-256 Hash der Kombination aus dem Registry-Schlüssel DigitalProductID und Machine SID
- OSX — SHA-256 Hash des PlatformUUID
- Linux — SHA-256 Hash UUID der Root-Partition.
- Apple iOS — SHA-256 Hash des PlatformUUID
- Android – Siehe Dokument zu
Dementsprechend erstellen wir ein Skript für unsere Unternehmens-OS Windows, mit diesem Skript berechnen wir lokal die UDID anhand der bekannten Eingaben und generieren eine Anfrage zur Ausstellung eines Zertifikats, indem wir diese UDID in das entsprechende Feld eintragen; übrigens kann es sich auch um ein Maschinenzertifikat handeln, das von AD ausgestellt wurde (indem wir eine doppelte Authentifizierung über das Zertifikat in das Schema einfügen. Multiple Certificate).
Wir bereiten die Einstellungen seitens Cisco ASA vor:
Wir erstellen einen TrustPoint für den ISE CA-Server, der die Zertifikate an die Clients ausstellt. Das Verfahren zum Import von Key-Chain werde ich nicht behandeln, ein Beispiel ist in meinem Artikel zur Konfiguration beschrieben. .
crypto ca trustpoint ISE-CA
enrollment terminal
crl configureWir konfigurieren die Verteilung nach Tunnel-Gruppe basierend auf den Regeln in Übereinstimmung mit den Feldern im Zertifikat, mit dem die Authentifizierung durchgeführt wird. Hier wird auch das von uns im vorherigen Schritt erstellte AnyConnect-Profil konfiguriert. Ich weise darauf hin, dass ich den Wert verwende SECUREBANK-RA, um Benutzer mit einem ausgestellten Zertifikat in die Tunnelgruppe zu übertragen. SECURE-BANK-VPN, bitte beachten Sie, dass dieses Feld bei mir im Antrag auf ein Zertifikat des AnyConnect-Profils eingetragen wurde.
tunnel-group-map enable rules
!
crypto ca certificate map OU-Map 6
subject-name attr ou eq securebank-ra
!
webvpn
anyconnect profiles SECUREBANK disk0:/securebank.xml
certificate-group-map OU-Map 6 SECURE-BANK-VPN
!Wir konfigurieren die Authentifizierungsserver. In meinem Fall ist das ISE für die erste Authentifizierungsstufe und DUO (Radius Proxy) als MFA.
! CISCO ISE
aaa-server ISE protocol radius
authorize-only
interim-accounting-update periodic 24
dynamic-authorization
aaa-server ISE (inside) host 192.168.99.134
key *****
!
! DUO RADIUS PROXY
aaa-server DUO protocol radius
aaa-server DUO (inside) host 192.168.99.136
timeout 60
key *****
authentication-port 1812
accounting-port 1813
no mschapv2-capable
!Wir erstellen Gruppenrichtlinien und Tunnelgruppen sowie deren Hilfskomponenten:
Tunnelgruppe DefaultWEBVPNGroup wird hauptsächlich zum Herunterladen des AnyConnect VPN-Clients und zur Ausstellung des Benutzerzertifikats unter Verwendung der SCEP-Proxy-Funktion von ASA verwendet. Dazu sind die entsprechenden Optionen sowohl in der Tunnelgruppe als auch in der zugehörigen Gruppenrichtlinie aktiviert. AC-Download, sowohl in dem heruntergeladenen Profil von AnyConnect (Felder zur Ausstellung des Zertifikats usw.). Außerdem geben wir in dieser Gruppenrichtlinie an, dass ein Download erforderlich ist. ISE Posture Module.
Tunnelgruppe SECURE-BANK-VPN wird automatisch vom Client verwendet, wenn er sich mit dem in der vorherigen Phase ausgestellten Zertifikat authentifiziert, da gemäß der Zertifikatkarte die Verbindung genau zu dieser Tunnelgruppe geleitet wird. Ich werde hier über interessante Optionen sprechen:
- secondary-authentication-server-group DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
- username-from-certificate CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
- secondary-username-from-certificate I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
- pre-fill-username client # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
- secondary-pre-fill-username client hide use-common-password push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока
!
access-list posture-redirect extended permit tcp any host 72.163.1.80
access-list posture-redirect extended deny ip any any
!
access-list VPN-Filter extended permit ip any any
!
ip local pool vpn-pool 192.168.100.33-192.168.100.63 mask 255.255.255.224
!
group-policy SECURE-BANK-VPN internal
group-policy SECURE-BANK-VPN attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
group-policy AC-DOWNLOAD internal
group-policy AC-DOWNLOAD attributes
dns-server value 192.168.99.155 192.168.99.130
vpn-filter value VPN-Filter
vpn-tunnel-protocol ssl-client
split-tunnel-policy tunnelall
default-domain value ashes.cc
address-pools value vpn-pool
scep-forwarding-url value http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
webvpn
anyconnect ssl dtls enable
anyconnect mtu 1300
anyconnect keep-installer installed
anyconnect ssl keepalive 20
anyconnect ssl rekey time none
anyconnect ssl rekey method ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl compression lzs
anyconnect dtls compression lzs
anyconnect modules value iseposture
anyconnect profiles value SECUREBANK type user
!
tunnel-group DefaultWEBVPNGroup general-attributes
address-pool vpn-pool
authentication-server-group ISE
accounting-server-group ISE
default-group-policy AC-DOWNLOAD
scep-enrollment enable
tunnel-group DefaultWEBVPNGroup webvpn-attributes
authentication aaa certificate
!
tunnel-group SECURE-BANK-VPN type remote-access
tunnel-group SECURE-BANK-VPN general-attributes
address-pool vpn-pool
authentication-server-group ISE
secondary-authentication-server-group DUO
accounting-server-group ISE
default-group-policy SECURE-BANK-VPN
username-from-certificate CN
secondary-username-from-certificate I
tunnel-group SECURE-BANK-VPN webvpn-attributes
authentication aaa certificate
pre-fill-username client
secondary-pre-fill-username client hide use-common-password push
group-alias SECURE-BANK-VPN enable
dns-group ASHES-DNS
!Weiter geht es mit ISE:
Wir richten einen lokalen Benutzer ein (AD/LDAP/ODBC usw. sind ebenfalls möglich), zu Demonstrationszwecken habe ich einen lokalen Benutzer im ISE angelegt und im Feld zugewiesen description UDID des PCs , von dem ihm der Zugang über VPN erlaubt ist. Bei Verwendung der lokalen Authentifizierung im ISE bin ich auf ein Gerät beschränkt, da es nicht so viele Felder gibt, aber in externen Authentifizierungsdatenbanken gibt es keine solchen Einschränkungen.

Schauen wir uns die Autorisierungsrichtlinie an, die in vier Phasen der Verbindung unterteilt ist:
- Etappe 1 — Richtlinie zum Herunterladen des AnyConnect-Agenten und zur Ausstellung eines Zertifikats
- Etappe 2 — Richtlinie zur primären Authentifizierung: Benutzername (aus dem Zertifikat)/Passwort + Zertifikat mit UDID-Validierung
- Schritt 3 — Sekundäre Authentifizierung über Cisco DUO (MFA) mit UDID als Benutzernamen + Statusbewertung
- Phase 4 — Letzte Autorisierung im Status:
- Konform;
- mit UDID-Validierung (aus dem Zertifikat + Bindung an den Benutzernamen),
- Cisco DUO MFA;
- Authentifizierung mit Benutzernamen;
- Authentifizierung mit Zertifikat;

Lassen Sie uns eine interessante Bedingung betrachten: UUID_VALIDATED, die überprüft, ob der sich authentifizierende Benutzer tatsächlich von einem PC mit der genehmigten UDID kommt, die im Feld Beschreibung des Benutzerkontos gespeichert ist. Die Bedingung sieht folgendermaßen aus:

Das für die Phasen 1, 2 und 3 verwendete Autorisierungsprofil sieht folgendermaßen aus:

Wir können überprüfen, wie genau wir die UDID vom AnyConnect-Client erhalten, indem wir die Sitzungsdetails im ISE betrachten. In den Details sehen wir, dass AnyConnect über den Mechanismus ACIDEX nicht nur Daten zur Plattform sendet, sondern auch die UDID des Geräts als Cisco-AV-PAIR:

. Beachten Sie das ausgehändigte Zertifikat des Benutzers und das Feld Initials (I), das verwendet wird, um es als Benutzernamen für die sekundäre MFA-Authentifizierung bei Cisco DUO zu verwenden:

Auf der Seite des DUO Radius Proxy sehen wir im Protokoll deutlich, wie die Authentifizierungsanfrage erfolgt, diese erfolgt unter Verwendung der UDID als Benutzernamen:

Von der DUO-Plattform aus sehen wir ein erfolgreiches Authentifizierungsereignis:

Und in den Eigenschaften des Benutzers ist mein ALIAS, den ich zur Anmeldung verwendet habe, was in der Tat die UDID des genehmigten PCs ist:

Infolgedessen haben wir erhalten:
- Die multifaktorielle Authentifizierung für Benutzer und Gerät;
- Schutz vor Gerätetausch durch den Benutzer;
- Gerätezustandsbewertung;
- Potential zur Verstärkung der Kontrolle mit dem Maschinenzertifikat der Domäne usw.;
- Umfassender Schutz des entfernten Arbeitsplatzes mit automatisch bereitgestellten Sicherheitsmodulen;
Links zu den Artikeln der Cisco VPN-Serie:
Quelle: habr.com
