Wir setzen unsere Artikelreihe zur Organisation fort Remote-Access VPN und möchte ein interessantes Erlebnis beim Deployment teilen einer hochsicheren VPN-Konfiguration.Eine herausfordernde Aufgabe kam von einem Kunden (es gibt kreative Köpfe in russischen Dörfern), aber Challenge Accepted, und kreativ umgesetzt. Das Ergebnis ist ein spannendes Konzept mit den folgenden Merkmalen:
- Mehrere Schutzfaktoren gegen die Manipulation des Endgeräts (stark an den Benutzer gebunden);
- Überprüfung der Übereinstimmung des Benutzer-PCs mit der zugewiesenen UDID 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 angebunden werden);;
- Multifaktor-Authentifizierung:
- Benutzerzertifikat mit Validierung der Felder und sekundärer Authentifizierung durch eines davon;
- Login (unveränderlich, aus dem Zertifikat entnommen) und Passwort;
- Zustandsbewertung des sich verbindenden Hosts (Posture);
Verwendete Komponenten der Lösung:
- Cisco ASA (VPN-Gateway);
- Cisco ISE (Authentifizierung / Autorisierung / Abrechnung, Zustandsbewertung, CA);
- Cisco DUO (Multifaktor-Authentifizierung) (Es kann jede SAML/RADIUS-kompatible Lösung angebunden werden);;
- Cisco AnyConnect (Multifunktionaler Agent für Workstations und mobile Betriebssysteme);
Beginnen wir mit den Anforderungen des Kunden:
- Der Benutzer sollte sich mit seiner Authentifizierung (Login/Passwort) den AnyConnect-Client vom VPN-Gateway herunterladen können. Alle erforderlichen AnyConnect-Module sollten automatisch gemäß der Benutzerpolitik installiert werden;
- Der Benutzer muss die Möglichkeit zur automatischen Ausstellung eines Zertifikats haben (für eines der Szenarien; das Hauptszenario ist jedoch die manuelle Ausstellung und das Hochladen auf den PC). Ich habe die automatische Ausstellung zur Demonstration implementiert (es ist nie zu spät, dies zu entfernen).
- Die grundlegende Authentifizierung sollte mehrstufig erfolgen: Zuerst erfolgt die Zertifikatsauthentifizierung mit der Analyse der erforderlichen Felder und deren Werte, danach Login/Passwort. In diesem Fenster sollte diesmal der Benutzername, der im Zertifikat angegeben ist, vorab eingesetzt werden. Subject Name (CN) ohne Möglichkeit zur Bearbeitung.
- Es muss sichergestellt werden, dass das Gerät, von dem der Zugriff erfolgt, das dem Benutzer für den Remote-Zugriff ausgegebene Unternehmensnotebook ist und nichts anderes. (Es wurden mehrere Varianten zur Erfüllung dieser Anforderung erstellt.)
- Es muss eine Bewertung des Zustands des sich anschließenden Geräts (an diesem Punkt PC) unter Berücksichtigung einer umfassenden Liste der Kundenanforderungen durchgeführt werden (um es zusammenzufassen):
- Dateien und deren Eigenschaften;
- Registrierungseinträge;
- Betriebssystem-Patches aus der vorgelegten Liste (zukünftig Integration von SCCM);
- Vorhandensein eines Antivirenprogramms eines bestimmten Herstellers und Aktualität der Signaturen;
- Aktivität bestimmter Dienste;
- Vorhandensein bestimmter installierter Programme;
Zunächst empfehle ich dringend, sich die Video-Demonstration der entstandenen Implementierung auf Youtube (5 Minuten) anzusehen..

Jetzt möchte ich die Details der Implementierung, die im Video nicht behandelt wurden, näher betrachten.
Bereiten wir das AnyConnect-Profil vor:
Ein Beispiel für die Erstellung eines Profils (im Hinblick auf das Menü in ASDM) habe ich bereits in meinem Artikel zur Einrichtung . Jetzt möchte ich besonders auf die Optionen hinweisen, die wir benötigen:
Im Profil geben wir das VPN-Gateway und den Profilnamen für die Verbindung auf dem Endgerät an:

Wir führen die Einstellungen für die automatische Ausstellung des Zertifikats im Profil durch und geben insbesondere die Parameter des Zertifikats an. Dabei achten wir besonders auf das Feld Initials (I), wo ein spezifischer Wert manuell eingegeben wurde UDID der Testmaschine (einzigartiger Geräteidentifier, der vom Cisco AnyConnect Client generiert wird).

Hier möchte ich einen kleinen Exkurs machen, da dieser Artikel das Konzept beschreibt. Zu Demonstrationszwecken wurde hier ein UDID für die Ausstellung des Zertifikats im Feld Initials des AnyConnect-Profils eingetragen. Natürlich, wenn Sie das im echten Leben tun, erhalten alle Clients ein Zertifikat mit demselben UDID in diesem Feld, und bei ihnen wird nichts funktionieren, da sie den UDID ihres spezifischen PCs benötigen. Leider implementiert AnyConnect derzeit noch nicht die Ersetzung im Profil für das Anforderungszertifikatfeld UDID über Umgebungsvariablen, wie es beispielsweise mit der Variable %USER%.
zu beachten ist, dass der Auftraggeber (dieses Szenarios) ursprünglich plant, die Zertifikate mit dem festgelegten UDID manuell auf solche Geschützten PCs auszustellen, was für ihn kein Problem darstellt. Doch die meisten von uns möchten eine Automatisierung (zumindest geht es mir so=) ).
Hier ist, was ich im Hinblick auf die Automatisierung vorschlagen kann. Falls das automatische Ausstellen von Zertifikaten durch AnyConnect mit dynamisch eingefügtem UDID derzeit nicht möglich ist, gibt es dennoch einen anderen Ansatz, der ein wenig kreatives Denken und handwerkliches Geschick erfordert – ich werde die Konzeptidee erläutern. Zunächst betrachten wir, wie UDID in verschiedenen Betriebssystemen durch den AnyConnect-Agenten generiert wird:
- Windows — SHA-256-Hash der Kombination aus dem Schlüssel im Registrierungsordner DigitalProductID und Machine SID
- OSX — SHA-256-Hash des PlatformUUID
- Linux — SHA-256-Hash des UUID der Root-Partition.
- Apple iOS — SHA-256-Hash des PlatformUUID
- Android – Siehe Dokument zu
Dementsprechend erstellen wir ein Skript für unsere Unternehmensbetriebssysteme Windows, mit diesem Skript berechnen wir lokal den UDID anhand bekannter Eingaben und generieren eine Anforderung zur Ausstellung eines Zertifikats, indem wir diesen UDID in das erforderliche Feld eintragen. Übrigens kann auch ein Maschinenzertifikat, das von der AD ausgestellt wurde, hinzugefügt werden (indem wir ein doppeltes Authentifizierungsschema basierend auf dem Zertifikat integrieren). Multiple Certificate).
Lassen Sie uns die Einstellungen auf der Seite von Cisco ASA vorbereiten:
Wir erstellen einen TrustPoint für den ISE CA-Server, der die Zertifikate für die Clients ausstellt. Die Importprozedur der 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 Tunnelgruppenverteilung basierend auf den Regeln gemäß den Feldern im Zertifikat, das zur Authentifizierung verwendet wird. Hier wird auch das AnyConnect-Profil eingerichtet, das wir in der vorherigen Phase erstellt haben. Ich möchte darauf hinweisen, dass ich den Wert verwende SECUREBANK-RA, um Benutzer mit dem ausgestellten Zertifikat in die Tunnelgruppe zu übertragen SECURE-BANK-VPN, beachten Sie, dass dieses Feld in meinem Fall im Antrag auf das AnyConnect-Zertifikat ausgefüllt ist.
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 dies 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 unterstützende Komponenten:
Tunnelgruppe DefaultWEBVPNGroup wird primär für den Download des AnyConnect VPN-Clients und die Ausstellung des Benutzerzertifikats unter Verwendung der SCEP-Proxy-Funktion des ASA verwendet. Dafür haben wir die entsprechenden Optionen sowohl für die Tunnelgruppe als auch für die zugehörige Gruppenrichtlinie aktiviert. AC-Download, als auch im herunterladbaren AnyConnect-Profil (Felder für die Ausstellung des Zertifikats usw.). In dieser Gruppenrichtlinie geben wir ebenfalls die Notwendigkeit des Downloads an. ISE Posture Module.
Tunnelgruppe SECURE-BANK-VPN wird automatisch vom Client bei der Authentifizierung mit dem in der vorherigen Phase ausgestellten Zertifikat verwendet, da gemäß dem Zertifikat-Map die Verbindung genau zu dieser Tunnelgruppe geleitet wird. Hier erkläre ich interessante Optionen:
- 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 erlauben tcp any host 72.163.1.80
access-list posture-redirect extended verweigern ip any any
!
access-list VPN-Filter extended erlauben ip any any
!
ip lokaler pool vpn-pool 192.168.100.33-192.168.100.63 maske 255.255.255.224
!
gruppenrichtlinie SECURE-BANK-VPN intern
gruppenrichtlinie SECURE-BANK-VPN attributen
dns-server wert 192.168.99.155 192.168.99.130
vpn-filter wert VPN-Filter
vpn-tunnel-protokoll ssl-client
split-tunnel-policy tunnelall
standard-domain wert ashes.cc
adress-pools wert vpn-pool
webvpn
anyconnect ssl dtls aktivieren
anyconnect mtu 1300
anyconnect keep-installer installiert
anyconnect ssl keepalive 20
anyconnect ssl rekey zeit keine
anyconnect ssl rekey methode ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl kompression lzs
anyconnect dtls kompression lzs
anyconnect module wert iseposture
anyconnect profile wert SECUREBANK typ benutzer
!
gruppenrichtlinie AC-DOWNLOAD intern
gruppenrichtlinie AC-DOWNLOAD attributen
dns-server wert 192.168.99.155 192.168.99.130
vpn-filter wert VPN-Filter
vpn-tunnel-protokoll ssl-client
split-tunnel-policy tunnelall
standard-domain wert ashes.cc
adress-pools wert vpn-pool
scep-forwarding-url wert http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
webvpn
anyconnect ssl dtls aktivieren
anyconnect mtu 1300
anyconnect keep-installer installiert
anyconnect ssl keepalive 20
anyconnect ssl rekey zeit keine
anyconnect ssl rekey methode ssl
anyconnect dpd-interval client 30
anyconnect dpd-interval gateway 30
anyconnect ssl kompression lzs
anyconnect dtls kompression lzs
anyconnect module wert iseposture
anyconnect profile wert SECUREBANK typ benutzer
!
tunnel-gruppe DefaultWEBVPNGroup allgemeine-attribute
adress-pool vpn-pool
authentifizierung-server-gruppe ISE
accounting-server-gruppe ISE
standard-gruppenrichtlinie AC-DOWNLOAD
scep-eintragung aktivieren
tunnel-gruppe DefaultWEBVPNGroup webvpn-attributen
authentifizierung aaa zertifikat
!
tunnel-gruppe SECURE-BANK-VPN typ remote-access
tunnel-gruppe SECURE-BANK-VPN allgemeine-attribute
adress-pool vpn-pool
authentifizierung-server-gruppe ISE
sekundäre-authentifizierung-server-gruppe DUO
accounting-server-gruppe ISE
standard-gruppenrichtlinie SECURE-BANK-VPN
benutzername-aus-zertifikat CN
sekundärer-benutzername-aus-zertifikat I
tunnel-gruppe SECURE-BANK-VPN webvpn-attributen
authentifizierung aaa zertifikat
vorab-ausfüllen-benutzername client
sekundär-vorab-ausfüllen-benutzername client verstecken_use-common-password push
gruppen-alias SECURE-BANK-VPN aktivieren
dns-gruppe ASHES-DNS
!Kommen wir nun zu ISE:
Wir konfigurieren einen lokalen Benutzer (AD/LDAP/ODBC usw. sind ebenfalls möglich). Zur Vereinfachung habe ich einen lokalen Benutzer direkt im ISE erstellt und ihm im Feld zugewiesen. Beschreibung UDID des PCs von dem aus der Zugriff über VPN erlaubt ist. Bei Verwendung der lokalen Authentifizierung im ISE bin ich nur auf ein Gerät beschränkt, da es nicht viele Felder gibt, aber bei externen Authentifizierungsdatenbanken habe ich keine solchen Einschränkungen.

Werfen wir einen Blick auf die Autorisierungspolitik, die in vier Verbindungsphasen unterteilt ist:
- Phase 1 — Politik zum Herunterladen des AnyConnect-Agenten und Ausstellung des Zertifikats
- Phase 2 — Politik der primären Authentifizierung Login (aus dem Zertifikat)/Passwort + Zertifikat mit UDID-Validierung
- Phase 3 — Sekundäre Authentifizierung über Cisco DUO (MFA) mit UDID als Benutzernamen + Statusbewertung
- Phase 4 — Endgültige Autorisierung im Status:
- Konform;
- UDID-Validierung (aus dem Zertifikat + Bindung an den Login),
- Cisco DUO MFA;
- Authentifizierung über Login;
- Authentifizierung über Zertifikat;

Werfen wir einen Blick auf eine interessante Bedingung UUID_VALIDATED, da es sicherstellt, dass der sich authentifizierende Benutzer tatsächlich von einem PC mit dem erlaubten UDID kommt, der im Feld angegeben ist. Beschreibung Das sieht in Bezug auf das Konto so aus:

Das Authentifizierungsprofil, das in den Phasen 1, 2 und 3 verwendet wird, sieht wie folgt aus:

Um zu prüfen, wie genau uns die UDID vom AnyConnect-Client übermittelt wird, können wir die Details der Client-Sitzung im ISE einsehen. In den Details sehen wir, dass AnyConnect über den Mechanismus ACIDEX nicht nur Plattformdaten sendet, sondern auch die UDID des Geräts als Cisco-AV-PAIR:

Wir achten auf das ausgestellte Zertifikat für den Benutzer und das Feld Initials (I), das verwendet wird, um es als Login 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 Anfrage zur Authentifizierung unter Verwendung der UDID als Benutzername erfolgt:

Auf der DUO-Portal-Seite sehen wir ein erfolgreiches Authentifizierungsereignis:

Und in den Eigenschaften des Benutzers habe ich das ALIAS, das ich für den Login verwendet habe; dies ist auch die UDID des zugelassenen PCs für den Login:

So haben wir erhalten:
- Die Mehrfaktorauthentifizierung des Benutzers und des Geräts;
- Schutz vor der Manipulation des Endgeräts des Benutzers;
- Bewertung des Gerätezustands;
- Potenzial zur Verbesserung der Kontrolle mit einem maschinenlesbaren Domainzertifikat usw.;
- Umfassender Schutz des Remote-Arbeitsplatzes mit automatisch implementierbaren Sicherheitsmodulen;
Links zu Artikelserien über Cisco VPN:
Quelle: habr.com
