Implementierung des Konzepts für hochsicheren Remote-Zugang

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:

  1. 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);;
  2. Multifaktor-Authentifizierung:
    • Benutzerzertifikat mit Validierung der Felder und sekundärer Authentifizierung durch eines davon;
    • Login (unveränderlich, aus dem Zertifikat entnommen) und Passwort;
  3. 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:

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

Video abspielen

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

Implementierung des Konzepts für hochsicheren Remote-Zugang

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

Implementierung des Konzepts für hochsicheren Remote-Zugang

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 über diesen Link verfügbar

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

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

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

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

Implementierung des Konzepts für hochsicheren Remote-Zugang

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;

Implementierung des Konzepts für hochsicheren Remote-Zugang

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:

Implementierung des Konzepts für hochsicheren Remote-Zugang

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

Implementierung des Konzepts für hochsicheren Remote-Zugang

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:

Implementierung des Konzepts für hochsicheren Remote-Zugang

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:

Implementierung des Konzepts für hochsicheren Remote-Zugang

Auf der Seite des DUO Radius Proxy sehen wir im Protokoll deutlich, wie die Anfrage zur Authentifizierung unter Verwendung der UDID als Benutzername erfolgt:

Implementierung des Konzepts für hochsicheren Remote-Zugang

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

Implementierung des Konzepts für hochsicheren Remote-Zugang

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:

Implementierung des Konzepts für hochsicheren Remote-Zugang

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

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster