Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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:

  1. 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);
  2. 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;
  3. Ü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:

  1. 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;
  2. 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).
  3. 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.
  4. 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)
  5. 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).

Video abspielen

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 VPN Load-Balancing-Cluster. 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:

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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).

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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 dem Link

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. VPN Load-Balancing-Cluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Wir 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) – дока hier

!
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.

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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;

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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:

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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:

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

. 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:

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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:

Umsetzung des Konzepts des hochsicheren Remote-Zugangs

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

60GB SSD 8Gb DDR4