Implementering af konceptet for højsikret fjernadgang

Fortsættende serien af artikler om emnet organisation Remote-Access VPN af adgang kan jeg ikke lade være med at dele en interessant erfaring med implementering af en højsikkerheds VPN-konfiguration. En udfordrende opgave blev givet af en kunde (der er opfindere i de russiske landsbyer), men Challenge Accepted og kreativt realiseret. Resultatet blev et interessant koncept med følgende karakteristika:

  1. Flere beskyttelsesfaktorer mod ændring af slutbrugerens enhed (strengt knyttet til brugeren);
    • Samsvarsvurdering af brugerens PC til den tildelte UDID for den godkendte PC i autentificeringsdatabasen;
    • Med MFA, der bruger UDID fra certifikatet til sekundær autentificering via Cisco DUO (Kan integreres med alle SAML/RADIUS-kompatible systemer);
  2. Multifaktorautentificering:
    • Bruger certifikat med felttjek og sekundær autentificering baseret på en af dem;
    • Login (uændret, taget fra certifikatet) og adgangskode;
  3. Vurdering af tilstanden for den tilsluttede værtsmaskine (Posture)

Brugte komponenter i løsningen:

  • Cisco ASA (VPN-gateway);
  • Cisco ISE (Autentificering / Autorisation / Regnskab, Tilstandsvurdering, CA);
  • Cisco DUO (Multifaktorautentificering) (Kan integreres med alle SAML/RADIUS-kompatible systemer);
  • Cisco AnyConnect (Multifunktionsagent til stationære og mobile operativsystemer);

Lad os begynde med kundens krav:

  1. Brugeren skal have mulighed for at downloade AnyConnect-klienten fra VPN-gatewayen ved hjælp af sin autentificering Login/Adgangskode, og alle nødvendige AnyConnect-moduler skal automatisk installeres i henhold til brugerens politik;
  2. Brugeren skal have mulighed for automatisk at få udstedt et certifikat (til et af scenarierne, det primære scenarie er manuel udstedelse og upload til PC), men jeg har implementeret automatisk udstedelse til demonstration (det er aldrig for sent at fjerne).
  3. Den primære autentificering skal finde sted i flere trin; først sker autentificeringen af certifikatet med en analyse af de nødvendige felter og deres værdier, derefter login/adgangskode, men denne gang skal brugernavnet, der er angivet i certifikatets felt, indsættes i login-vinduet Subject Name (CN) uden mulighed for redigering.
  4. Det er nødvendigt at sikre, at den enhed, der bruges til adgang, er den udleverede virksomhedslaptop til fjernadgang, og ikke noget andet. (Der er lavet flere varianter for at opfylde dette krav)
  5. Der skal udføres en vurdering af tilslutningsenheden (på dette stadium af PC'en) med kontrol af en hel tabel med kundens krav (sammenfattende):
    • Filer og deres egenskaber;
    • Registreringsposter;
    • OS-opdateringer fra den leverede liste (senere integration af SCCM);
    • Tilstedeværelse af antivirus af en bestemt producent og relevansen af signaturerne;
    • Aktivitet af bestemte tjenester;
    • Tilstedeværelse af bestemte installerede programmer;

For det første vil jeg anbefale, at vi ser en video demonstration af den opnåede implementering på YouTube (5 minutter).

Afspil video

Nu vil jeg foreslå at se på de detaljer ved implementeringen, der ikke blev dækket i videoen.

Lad os forberede AnyConnect-profilen:

Eksemplet på oprettelse af en profil (i menuen i ASDM), jeg tidligere præsenterede i min artikel om indstilling af VPN Load-Balancing cluster. Jeg vil nu gerne fremhæve de muligheder, vi har brug for:

I profilen angiver vi VPN-gatewayen og navnet på profilen til forbindelse på den afsluttende klient:

Implementering af konceptet for højsikret fjernadgang

Vi konfigurerer automatisk udstedelse af certifikater fra profilen ved at angive særligt certifikatparametrene, og bemærk, at vi lægger vægt på feltet Initials (I), hvor en specifik værdi er indtastet manuelt UDID af den testmaskine (Unik enhedsidentifikator, som Cisco AnyConnect-klienten genererer).

Implementering af konceptet for højsikret fjernadgang

Her vil jeg gerne tage et litterært sidespring, da denne artikel beskriver konceptet; for demonstrationsformål er UDID indtastet for udstedelse af certifikat i feltet Initials for AnyConnect-profilen. Selvfølgelig, i det virkelige liv, hvis du gør det, vil alle klienter modtage certifikatet med den samme UDID i dette felt, og de vil ikke kunne fungere, da de har brug for UDID'en for deres specifikke PC. AnyConnect implementerer desværre ikke substitutionsanmodningen til certifikatfeltet UDID gennem miljøvariablen, ligesom den gør med variablen %USER%.

Det er værd at bemærke, at kunden (af dette scenarie) oprindeligt planlægger selv at udstede certifikater med den specificerede UDID manuelt til sådanne beskyttede PC'er, hvilket ikke er et problem for dem. Men for de fleste af os ønsker vi automatisering (for mig, i hvert fald =).

Her er, hvad jeg kan tilbyde i forhold til automatisering. Hvis det ikke er muligt at udstede et certifikat automatisk ved at dynamisk indsætte UDID for AnyConnect, er der en anden måde, som kræver lidt kreativ tænkning og dygtige hænder – jeg vil forklare konceptet. Lad os først se på, hvordan UDID dannes på forskellige operativsystemer af AnyConnect-agenten:

  • Windows — SHA-256 hash af kombinationen af registreringsnøgle DigitalProductID og Machine SID
  • OSX — SHA-256 hash af PlatformUUID
  • Linux — SHA-256 hash af UUID på root partition.
  • Apple iOS — SHA-256 hash af PlatformUUID
  • Android – Se dokumentet om linket

Derfor laver vi et script til vores virksomheders Windows-operativsystemer, med dette script beregner vi UDID lokalt på basis af kendte input og laver en forespørgsel om udstedelse af certifikat ved at indsætte denne UDID i det relevante felt; i øvrigt kan vi også bruge maskincertifikatet udstedt af AD (ved at tilføje dobbelt autentificering med certifikat til schemaet. Multiple Certificate).

Vi forbereder indstillingerne fra Cisco ASA:

Vi opretter et TrustPoint for ISE CA serveren, som vil udstede certifikater til klienterne. Jeg vil ikke gennemgå proceduren for import af Key-Chain, da det er beskrevet i min artikel om konfiguration. VPN Load-Balancing cluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Vi konfigurerer distributionen i Tunnel-Group baseret på regler i overensstemmelse med felterne i certifikatet, som bruges til autentificering. Her konfigureres også AnyConnect-profilen, som vi har lavet i det foregående trin. Jeg vil gerne bemærke, at jeg bruger værdien SECUREBANK-RA, til at flytte brugere med et udstedt certifikat ind i tunnelgruppen SECURE-BANK-VPN, bemærk at dette felt er indsat i forespørgslen om certifikat i AnyConnect-profilerne.

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
!

Vi konfigurerer autentificeringsserverne. I mit tilfælde er det ISE til første fase af autentificering og 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 opretter gruppepolitikker og tunnelgrupper samt deres støttekomponenter:

Tunnelgruppe DefaultWEBVPNGroup vil blive brugt primært til at downloade AnyConnect VPN-klient og udstede brugerens certifikat ved hjælp af SCEP-Proxy-funktionen på ASA, for dette har vi aktiveret de relevante indstillinger både på selve tunnelgruppen og på den tilknyttede gruppepolitik. AC-Download, såvel som på den downloadede AnyConnect-profil (felter til certifikatudstedelse osv.). I denne gruppepolitik angiver vi også behovet for at downloade. ISE Posture Module.

Tunnelgruppe SECURE-BANK-VPN vil automatisk blive brugt af klienten ved autentificering med det udstedte certifikat fra det foregående trin, da forbindelsen i overensstemmelse med Certificate Map vil blive tilknyttet netop denne tunnelgruppe. Jeg vil fortælle om interessante muligheder her:

  • 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) – дока her

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

Lad os gå videre til ISE:

Vi opsætter en lokal bruger (det er muligt at bruge AD/LDAP/ODBC osv.), for nemheds skyld har jeg oprettet en lokal bruger direkte i ISE og angivet i feltet description UDID for PC'en fra hvilken han har adgang til VPN. Ved brug af lokal godkendelse i ISE vil jeg være begrænset til én enhed, da der ikke er mange felter, men i eksterne godkendelsesdatabaser vil jeg ikke have sådanne begrænsninger.

Implementering af konceptet for højsikret fjernadgang

Lad os se på autorisationspolitikken, den er opdelt i fire forbindelsesfaser:

  • Trin 1 — Politikken for download af AnyConnect-agenten og udstedelse af certifikat
  • Trin 2 — Politikken for primær godkendelse Login (fra certifikatet)/Kodeord + Certifikat med UDID-validering
  • Trin 3 — Sekundær godkendelse via Cisco DUO (MFA) med UDID som brugernavn + Statusvurdering
  • Trin 4 — Endelig autorisation i tilstand:
    • Compliant;
    • UDID-validering (fra certifikatet + tilknytning til login),
    • Cisco DUO MFA;
    • Login-godkendelse;
    • Certifikat-godkendelse;

Implementering af konceptet for højsikret fjernadgang

Lad os se på en interessant betingelse UUID_VALIDATED, den kontrollerer netop, om den godkendte bruger virkelig kommer fra en PC med det tilladte UDID, som er associeret i feltet Beskrivelse af kontoen, betingelserne ser således ud:

Implementering af konceptet for højsikret fjernadgang

Autoriseringsprofilen, der anvendes i faserne 1, 2 og 3, ser således ud:

Implementering af konceptet for højsikret fjernadgang

Vi kan tjekke, hvordan UDID ankommer fra klienten AnyConnect ved at se på ISE-sessionens detaljer. I detaljerne ser vi, at AnyConnect via mekanismen ACIDEX sender ikke kun data om platformen, men også UDID'en for enheden som Cisco-AV-PAIR:

Implementering af konceptet for højsikret fjernadgang

Lad os bemærke det udstedte certifikat til brugeren og feltet Initials (I), som bruges til at tage det som login til sekundær MFA-godkendelse på Cisco DUO:

Implementering af konceptet for højsikret fjernadgang

På DUO Radius Proxy-siden ser vi klart, hvordan anmodningen om godkendelse er, den går med brug af UDID som brugernavn:

Implementering af konceptet for højsikret fjernadgang

Fra DUO-portalen ser vi en vellykket godkendelseshændelse:

Implementering af konceptet for højsikret fjernadgang

Og i brugerens egenskaber har jeg angivet ALIAS, som jeg brugte til login, dette er i øvrigt UDID'en der er tilladt for login PC'en:

Implementering af konceptet for højsikret fjernadgang

Som resultat har vi opnået:

  • Multifaktorgodkendelse af bruger og enhed;
  • Beskyttelse mod enhedsforfalskning;
  • Vurdering af enhedens status;
  • Potentiale for at styrke kontrol med domænets maskincertifikat osv.;
  • Omfattende beskyttelse af den remote arbejdsplads med automatisk implementerede sikkerhedsmoduler;

Links til artikler i serien Cisco VPN:

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster