Genomförande av konceptet för högskyddad fjärråtkomst

Fortsätter serien av artiklar om ämnet organisering Remote-Access VPN av tillgång kan jag inte undanhålla en intressant erfarenhet av implementeringen av en högsäkerhetskonfiguration av VPN. En utmanande uppgift gavs av en kund (det finns påhittiga personer i ryska byar), men Challenge Accepted och kreativt genomfört. Resultatet blev ett intressant koncept med följande egenskaper:

  1. Flera skyddsfaktorer mot förfalskning av den slutliga enheten (med strikt koppling till användaren);
    • Bedömning av användarens dator mot den tilldelade UDID för den godkända datorn i autentiseringsdatabasen;
    • Med MFA som använder UDID för datorn från certifikatet för sekundär autentisering via Cisco DUO (Kan kopplas till vilket SAML/RADIUS-kompatibelt system som helst);
  2. Multifaktorsautentisering:
    • Användarcertifikat med kontroll av fälten och sekundär autentisering enligt ett av dem;
    • Inloggning (oförändrad, hämtad från certifikatet) och lösenord;
  3. Bedömning av den anslutna värden (Posture)

Använda komponenter i lösningen:

  • Cisco ASA (VPN-gateway);
  • Cisco ISE (Autentisering / Auktorisering / Redovisning, Bedömning av Status, CA);
  • Cisco DUO (Multifaktorsautentisering) (Kan kopplas till vilket SAML/RADIUS-kompatibelt system som helst);
  • Cisco AnyConnect (Mångsidig agent för arbetsstationer och mobila operativsystem);

Låt oss börja med kundens krav:

  1. Användaren ska ha möjlighet att ladda ner AnyConnect-klienten från VPN-gatewayen med sin autentisering av Inloggning/Lösenord, alla nödvändiga AnyConnect-moduler ska automatiskt installeras enligt användarens policy;
  2. Användaren ska ha möjlighet till automatisk utfärdande av certifikat (för ett av scenarierna, huvudsakligen är scenariot manuell utfärdande och uppladdning på datorn), jag har implementerat automatisk utfärdande för demonstration (det är aldrig för sent att ta bort).
  3. Den primära autentiseringen ska ske i flera steg, först ges certifikatets autentisering med analys av nödvändiga fält och deras värden, därefter inloggning/lösenord, fast nu ska användarnamnet som anges i certifikatets fält Subject Name (CN) ställas in utan möjlighet till redigering.
  4. Det är nödvändigt att säkerställa att enheten som används för inloggningen är den företagsbärbara dator som har utfärdats till användaren för fjärråtkomst, och inget annat. (Flera alternativ har skapats för att uppfylla detta krav)
  5. Det ska göras en bedömning av det anslutande enhetens tillstånd (vid detta steg PC) med en kontroll av en heltäckande kravtabell från kunden (för att sammanfatta):
    • Filer och deras egenskaper;
    • Registerposter;
    • Operativsystemspatchar från den angivna listan (i framtiden integration av SCCM);
    • Närvaro av antivirus från en viss tillverkare och aktuell signatur;
    • Aktivitet hos vissa tjänster;
    • Närvaro av vissa installerade program;

Först föreslår jag att vi obligatoriskt tittar på videodemonstrationen av den resulterande implementationen på Youtube (5 minuter).

Spela video

Nu föreslår jag att vi ser på detaljerna i implementationen som inte belyses i videon.

Låt oss förbereda en AnyConnect-profil:

Exempel på hur man skapar en profil (i menypunkt i ASDM) har jag tidigare tagit upp i min artikel om inställning av VPN Load-Balancing kluster. Nu vill jag särskilt nämna de alternativ som vi behöver:

I profilen anger vi VPN-gatewayen och profilnamnet för anslutning på klienten:

Genomförande av konceptet för högskyddad fjärråtkomst

Vi utför inställningar för automatisk utfärdande av certifikat från profilen, där vi anger bland annat certifikatparametrarna, och som är relevant, noterar vi fältet Initials (I), där ett specifikt värde har skrivits in för hand UDID för testmaskinen (Unik enhetsidentifierare som genereras av Cisco AnyConnect-klienten).

Genomförande av konceptet för högskyddad fjärråtkomst

Här vill jag göra en poetisk avvikelse, eftersom denna artikel beskriver konceptet; för demonstrationssyften har UDID angetts för utfärdande av certifikatet i fältet Initials av AnyConnect-profilen. Självklart, i verkliga livet, om du gör så, kommer alla klienter att få certifikatet med samma UDID i detta fält, och inget av dem kommer att fungera, eftersom de behöver UDID specifikt för sin egen PC. Tyvärr implementerar AnyConnect ännu inte ersättning i profilen för certifikatförfrågan i UDID-fältet via miljövariabeln, som den till exempel gör med variabeln %USER%.

Det är värt att notera att kunden (i detta scenario) ursprungligen planerar att själv utfärda certifikat med angiven UDID manuellt till dessa skyddade PC, vilket inte är något problem för honom. Men för de flesta av oss vill vi ha automatisering (åh, för mig i alla fall=).

Och här är vad jag kan erbjuda när det kommer till automatisering. Om man automatiskt skulle utfärda ett certifikat i AnyConnect genom att dynamiskt infoga UDID, vilket inte är möjligt just nu, finns det en annan metod som kräver lite kreativt tänkande och skickliga händer – jag ska förklara konceptet. Låt oss börja med att titta på hur UDID skapas på olika operativsystem av AnyConnect-agenten:

  • Windows — SHA-256 hash av kombinationen av registret DigitalProductID och Machine SID
  • OSX — SHA-256 hash av PlatformUUID
  • Linux — SHA-256 hash av UUID för root-partitionen.
  • Apple iOS — SHA-256 hash av PlatformUUID
  • Android – Se dokumentet om länken

Därför skapar vi ett skript för våra företags-operativsystem Windows, där detta skript lokalt beräknar UDID baserat på kända indata och genererar en begäran om utfärdande av certifikat genom att fylla i UDID i det nödvändiga fältet, förresten kan det också vara ett maskincertifikat som utfärdats av AD (genom att lägga till dubbel autentisering genom certifikat) Multiple Certificate).

Vi förbereder inställningar från Cisco ASA:

Vi skapar TrustPoint för ISE CA-servern, som kommer att utfärda certifikat till klienterna. Jag kommer inte att gå igenom proceduren för att importera Key-Chain, det exemplet beskrivs i min artikel om inställning VPN Load-Balancing kluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Vi konfigurerar distributionen för Tunnel-Group baserat på regler i enlighet med fälten i certifikatet, som används för autentisering. Här konfigurerar vi också profil för AnyConnect, som vi skapade i föregående steg. Jag vill påpeka att jag använder värdet SECUREBANK-RA, för att överföra användare med utfärdat certifikat till tunnelgruppen SECURE-BANK-VPN, observera att detta fält har angetts i begäran om certifikat för profilen AnyConnect.

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 konfigurerar autentiseringstjänster. I mitt fall är det ISE för det första steget i 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 grupprinciper och tunnelgrupper samt deras stödkomponenter:

Tunnelgrupp DefaultWEBVPNGroup kommer primärt att användas för att ladda ner AnyConnect VPN-klienten och utfärda användarcertifikat med SCEP-Proxy-funktionen i ASA. För detta har vi aktiverat motsvarande alternativ både i tunnelgruppen och i den associerade gruppolisen. AC-Nedladdning, samt i den nedladdade AnyConnect-profilen (fälten för certifikatutfärdande osv.). I denna gruppolicy anger vi också behovet av nedladdning. ISE Posture Module.

Tunnelgrupp SECURE-BANK-VPN kommer automatiskt att användas av klienten vid autentisering med det utfärdade certifikatet från föregående steg, eftersom kopplingen enligt Certificate Map kommer att tillhöra just denna tunnelgrupp. Jag kommer att berätta om intressanta alternativ här:

  • secondary-authentication-server-group DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
  • användarnamn-från-certifikat CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
  • sekundärt-användarnamn-från-certifikat I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
  • förifyllda-användarnamn klient # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
  • sekundärt-förifyllt-användarnamn klient göm använd-gemensamt-lösenord push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока ). Ett typiskt exempel på användning:

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

Låt oss gå vidare till ISE:

Vi konfigurerar en lokal användare (AD/LDAP/ODBC etc. kan också användas), för enkelhetens skull har jag skapat en lokal användare i ISE och tilldelat fältet description PC:s UDID från vilken inloggning via VPN är tillåten. Vid användning av lokal autentisering på ISE kommer jag att vara begränsad till en enhet, eftersom det inte finns så många fält, men det kommer inte att finnas några sådana begränsningar i externa autentiseringsdatabaser.

Genomförande av konceptet för högskyddad fjärråtkomst

Låt oss titta på auktoriseringspolicyn, den är uppdelad i fyra faser av anslutning:

  • Steg 1 — Policyn för nedladdning av AnyConnect-agenten och utförande av certifikat
  • Steg 2 — Policyn för primär autentisering 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åndsvärdering
  • Steg 4 — Slutlig auktorisering i tillstånd:
    • Efterlevande;
    • validering av UDID (från certifikat + koppling till inloggning),
    • Cisco DUO MFA;
    • Inloggningsautentisering;
    • Certifikatautentisering;

Genomförande av konceptet för högskyddad fjärråtkomst

Låt oss titta på en intressant villkor UUID_VALIDATED, som just kontrollerar att den autentiserande användaren verkligen kommer från en PC med den godkända UDID kopplad i fältet Beskrivning kontot, villkoren ser ut så här:

Genomförande av konceptet för högskyddad fjärråtkomst

Auktoriseringsprofilen som används i steg 1, 2, 3 ser ut som följer:

Genomförande av konceptet för högskyddad fjärråtkomst

Vi kan kontrollera hur UDID kommer från klienten AnyConnect genom att titta på ISE:s sessionsdetaljer. I detaljerna ser vi att AnyConnect via mekanismen ACIDEX skickar inte bara plattformsdata, utan även UDID för enheten som Cisco-AV-PAIR:

Genomförande av konceptet för högskyddad fjärråtkomst

Låt oss notera det utfärdade certifikatet för användaren och fältet Initials (I), som används för att ta det som inloggningsnamn för sekundär MFA-autentisering på Cisco DUO:

Genomförande av konceptet för högskyddad fjärråtkomst

På DUO Radius Proxy-sidan ser vi tydligt hur autentiseringsförfrågan går, den sker med UDID som användarnamn:

Genomförande av konceptet för högskyddad fjärråtkomst

Från DUO-portalen ser vi en lyckad autentisering:

Genomförande av konceptet för högskyddad fjärråtkomst

Och i användarens egenskaper har jag angett ALIAS, som jag använde för inloggning, och detta är UDID för den godkända inloggnings-PC:n:

Genomförande av konceptet för högskyddad fjärråtkomst

Som ett resultat fick vi:

  • Flerfaktorautentisering för användare och enhet;
  • Skydd mot förfalskning av användarens enhet;
  • Utvärdering av enhetens tillstånd;
  • Potential för ökad kontroll med maskincertifikat för domänen etc.;
  • Omfattande skydd för fjärrarbetsplatsen med automatiskt distribuerade säkerhetsmoduler;

Länkar till artiklar i Cisco VPN-serien:

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster