Implementering av konceptet med mycket säker fjärråtkomst

Fortsätter serien med artiklar om ämnet organisation Fjärråtkomst VPN åtkomst Jag kan inte låta bli att dela med mig av min intressanta implementeringsupplevelse mycket säker VPN-konfiguration. En icke-trivial uppgift presenterades av en kund (det finns uppfinnare i ryska byar), men utmaningen accepterades och implementerades kreativt. Resultatet är ett intressant koncept med följande egenskaper:

  1. Flera skyddsfaktorer mot utbyte av terminalenheten (med strikt bindning till användaren);
    • Bedömning av överensstämmelsen hos användarens PC med det tilldelade UDID för den tillåtna PC:n i autentiseringsdatabasen;
    • Med MFA använder PC UDID från certifikatet för sekundär autentisering via Cisco DUO (Du kan bifoga vilken som helst SAML/Radius-kompatibel);
  2. Multifaktorautentisering:
    • Användarcertifikat med fältverifiering och sekundär autentisering mot en av dem;
    • Inloggning (oföränderlig, hämtad från certifikatet) och lösenord;
  3. Uppskattning av tillståndet för den anslutande värden (Posture)

Lösningskomponenter som används:

  • Cisco ASA (VPN Gateway);
  • Cisco ISE (Autentisering / Auktorisering / Redovisning, State Evaluation, CA);
  • Cisco DUO (Multi-Factor Authentication) (Du kan bifoga vilken som helst SAML/Radius-kompatibel);
  • Cisco AnyConnect (Multi-purpose agent för arbetsstationer och mobilt operativsystem);

Låt oss börja med kundens krav:

  1. Användaren måste, genom sin inloggnings-/lösenordsautentisering, kunna ladda ner AnyConnect-klienten från VPN-gatewayen; alla nödvändiga AnyConnect-moduler måste installeras automatiskt i enlighet med användarens policy;
  2. Användaren ska kunna utfärda ett certifikat automatiskt (för ett av scenarierna är huvudscenariot manuell utfärdande och uppladdning på en PC), men jag implementerade automatiskt utfärdande för demonstration (det är aldrig för sent att ta bort det).
  3. Grundläggande autentisering måste ske i flera steg, först sker certifikatautentisering med analys av nödvändiga fält och deras värden, sedan inloggning/lösenord, endast denna gång måste användarnamnet som anges i certifikatfältet infogas i inloggningsfönstret Ämnesnamn (CN) utan möjlighet att redigera.
  4. Du måste se till att enheten från vilken du loggar in är företagets bärbara dator som utfärdats till användaren för fjärråtkomst, och inte något annat. (Flera alternativ har gjorts för att uppfylla detta krav)
  5. Tillståndet för den anslutande enheten (i detta skede PC) bör bedömas med en kontroll av en hel rejäl tabell över kundkrav (sammanfattning):
    • Filer och deras egenskaper;
    • Registerposter;
    • OS-patchar från den medföljande listan (senare SCCM-integration);
    • Tillgänglighet av Anti-Virus från en specifik tillverkare och relevansen av signaturer;
    • Aktivitet för vissa tjänster;
    • Tillgänglighet för vissa installerade program;

Till att börja med föreslår jag att du definitivt tittar på videodemonstrationen av den resulterande implementeringen Youtube (5 minuter).

Nu föreslår jag att man överväger implementeringsdetaljerna som inte täcks av videoklippet.

Låt oss förbereda AnyConnect-profilen:

Jag gav tidigare ett exempel på att skapa en profil (i termer av ett menyalternativ i ASDM) i min artikel om inställning VPN-belastningsbalanserande kluster. Nu skulle jag vilja notera separat de alternativ som vi behöver:

I profilen kommer vi att ange VPN-gatewayen och profilnamnet för att ansluta till slutklienten:

Implementering av konceptet med mycket säker fjärråtkomst

Låt oss konfigurera den automatiska utfärdandet av ett certifikat från profilsidan, vilket särskilt indikerar certifikatparametrarna och, karakteristiskt, uppmärksamma fältet Initialer (I), där ett specifikt värde skrivs in manuellt DU GJORDE testmaskin (Unik enhetsidentifierare som genereras av Cisco AnyConnect-klienten).

Implementering av konceptet med mycket säker fjärråtkomst

Här vill jag göra en lyrisk utvikning, eftersom den här artikeln beskriver konceptet; för demonstrationsändamål skrivs UDID för att utfärda ett certifikat i Initials-fältet i AnyConnect-profilen. Naturligtvis, i verkliga livet, om du gör detta, kommer alla klienter att få ett certifikat med samma UDID i det här fältet och ingenting kommer att fungera för dem, eftersom de behöver UDID för sin specifika dator. AnyConnect implementerar tyvärr ännu inte substitution av UDID-fältet i certifikatbegäransprofilen via en miljövariabel, som den gör till exempel med en variabel %ANVÄNDARE%.

Det är värt att notera att kunden (av detta scenario) initialt planerar att självständigt utfärda certifikat med en given UDID i manuellt läge till sådana skyddade datorer, vilket inte är ett problem för honom. Men för de flesta av oss vill vi ha automatisering (tja, för mig är det sant =)).

Och detta är vad jag kan erbjuda när det gäller automatisering. Om AnyConnect ännu inte kan utfärda ett certifikat automatiskt genom att dynamiskt ersätta UDID, så finns det ett annat sätt som kommer att kräva lite kreativ tanke och skickliga händer - jag ska berätta för dig konceptet. Låt oss först titta på hur UDID genereras på olika operativsystem av AnyConnect-agenten:

  • Windows — SHA-256-hash av kombinationen av DigitalProductID och Machine SID-registernyckel
  • OSX — SHA-256 hash PlatformUUID
  • Linux — SHA-256-hash för UUID för rotpartitionen.
  • Apple iOS — SHA-256 hash PlatformUUID
  • Android – Se dokument på länk

Följaktligen skapar vi ett skript för vårt företags Windows-operativsystem, med detta skript beräknar vi lokalt UDID med hjälp av kända ingångar och skapar en begäran om att utfärda ett certifikat genom att ange detta UDID i det obligatoriska fältet, förresten, du kan också använda en maskin certifikat utfärdat av AD (genom att lägga till dubbel autentisering med ett certifikat till schemat Flera certifikat).

Låt oss förbereda inställningarna på Cisco ASA-sidan:

Låt oss skapa en TrustPoint för ISE CA-servern, det kommer att vara den som kommer att utfärda certifikat till klienter. Jag kommer inte att överväga nyckelkedjeimportproceduren; ett exempel beskrivs i min artikel om installation VPN-belastningsbalanserande kluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Vi konfigurerar distribution via Tunnel-Group baserat på regler i enlighet med fälten i certifikatet som används för autentisering. AnyConnect-profilen som vi gjorde i föregående steg konfigureras också här. Observera att jag använder värdet SECUREBANK-RA, för att överföra användare med ett utfärdat certifikat till en tunnelgrupp SECURE-BANK-VPN, observera att jag har det här fältet i kolumnen AnyConnect-profilcertifikatbegäran.

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
!

Konfigurera autentiseringsservrar. I mitt fall är detta ISE för det första steget av autentisering och DUO (Radius Proxy) som 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
!

Vi skapar grupppolicyer och tunnelgrupper och deras hjälpkomponenter:

Tunnelgrupp DefaultWEBVPNGroup kommer främst att användas för att ladda ner AnyConnect VPN-klienten och utfärda ett användarcertifikat med SCEP-Proxy-funktionen hos ASA; för detta har vi motsvarande alternativ aktiverade både på själva tunnelgruppen och på den tillhörande grupppolicyn AC-nedladdning, och på den inlästa AnyConnect-profilen (fält för att utfärda ett certifikat, etc.). Även i denna grupppolicy anger vi behovet av att ladda ner ISE Posture Module.

Tunnelgrupp SECURE-BANK-VPN kommer automatiskt att användas av klienten vid autentisering med det utfärdade certifikatet i föregående steg, eftersom, i enlighet med certifikatkartan, anslutningen kommer att falla specifikt på denna tunnelgrupp. Jag ska berätta om intressanta alternativ här:

  • sekundär-autentisering-server-grupp DUO # Ställ in sekundär autentisering på DUO-servern (Radius Proxy)
  • användarnamn-från-certifikatCN # För primär autentisering använder vi CN-fältet i certifikatet för att ärva användarinloggningen
  • sekundärt-användarnamn-från-certifikat I # För sekundär autentisering på DUO-servern använder vi det extraherade användarnamnet och fälten Initialer (I) i certifikatet.
  • pre-fill-användarnamnsklient # gör användarnamnet förifyllt i autentiseringsfönstret utan möjlighet att ändra
  • secondary-pre-fill-username client hide use-common-password push # Vi döljer inloggnings-/lösenordsinmatningsfönstret för sekundär autentisering DUO och använder meddelandemetoden (sms/push/telefon) - docka för att begära autentisering istället för lösenordsfältet här

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

Därefter går vi vidare till ISE:

Vi konfigurerar en lokal användare (du kan använda AD/LDAP/ODBC, etc.), för enkelhetens skull skapade jag en lokal användare i ISE själv och tilldelade den i fältet beskrivning UDID PC varifrån han får logga in via VPN. Om jag använder lokal autentisering på ISE kommer jag att vara begränsad till endast en enhet, eftersom det inte finns många fält, men i tredjeparts autentiseringsdatabaser kommer jag inte att ha sådana begränsningar.

Implementering av konceptet med mycket säker fjärråtkomst

Låt oss titta på auktoriseringspolicyn, den är uppdelad i fyra anslutningssteg:

  • Steg 1 — Policy för att ladda ner AnyConnect-agenten och utfärda ett certifikat
  • Steg 2 — Primär autentiseringspolicy Inloggning (från certifikat)/Lösenord + certifikat med UDID-validering
  • Steg 3 — Sekundär autentisering via Cisco DUO (MFA) med UDID som användarnamn + tillståndsbedömning
  • Steg 4 — Slutligt tillstånd är i staten:
    • Överensstämmer;
    • UDID-validering (från certifikat + inloggningsbindning),
    • Cisco DUO MFA;
    • Autentisering genom inloggning;
    • Certifikatautentisering;

Implementering av konceptet med mycket säker fjärråtkomst

Låt oss titta på ett intressant tillstånd UUID_VALIDATED, det ser bara ut som att autentiseringsanvändaren faktiskt kom från en dator med ett tillåtet UDID kopplat i fältet Beskrivning konto ser villkoren ut så här:

Implementering av konceptet med mycket säker fjärråtkomst

Auktoriseringsprofilen som används i steg 1,2,3 är följande:

Implementering av konceptet med mycket säker fjärråtkomst

Du kan kontrollera exakt hur UDID från AnyConnect-klienten kommer till oss genom att titta på klientsessionsdetaljerna i ISE. I detalj kommer vi att se att AnyConnect genom mekanismen ACIDEX skickar inte bara information om plattformen, utan även UDID för enheten som Cisco-AV-PAIR:

Implementering av konceptet med mycket säker fjärråtkomst

Låt oss vara uppmärksamma på certifikatet som utfärdats till användaren och fältet Initialer (I), som används för att ta det som en inloggning för sekundär MFA-autentisering på Cisco DUO:

Implementering av konceptet med mycket säker fjärråtkomst

På DUO Radius Proxy-sidan i loggen kan vi tydligt se hur autentiseringsbegäran görs, den kommer med UDID som användarnamn:

Implementering av konceptet med mycket säker fjärråtkomst

Från DUO-portalen ser vi en lyckad autentiseringshändelse:

Implementering av konceptet med mycket säker fjärråtkomst

Och i användaregenskaperna har jag det inställt ALIAS, som jag använde för inloggning, i sin tur är detta UDID för datorn som tillåts för inloggning:

Implementering av konceptet med mycket säker fjärråtkomst

Som ett resultat fick vi:

  • Multi-faktor användar- och enhetsautentisering;
  • Skydd mot spoofing av användarens enhet;
  • Bedöma enhetens tillstånd;
  • Potential för ökad kontroll med domänmaskincertifikat etc.;
  • Omfattande skydd på distans på arbetsplatsen med automatiskt utplacerade säkerhetsmoduler;

Länkar till Cisco VPN-seriens artiklar:

Källa: will.com

Lägg en kommentar