Implementatie van het concept van zeer veilige toegang op afstand

Voortzetting van de serie artikelen over het onderwerp organisatie VPN voor toegang op afstand toegang Ik kan het niet laten om mijn interessante implementatie-ervaring te delen uiterst veilige VPN-configuratie. Eén klant stelde een niet-triviale taak voor (er zijn uitvinders in Russische dorpen), maar de uitdaging werd aanvaard en op creatieve wijze geïmplementeerd. Het resultaat is een interessant concept met de volgende kenmerken:

  1. Verschillende beschermingsfactoren tegen vervanging van het eindapparaat (met strikte verplichtingen voor de gebruiker);
    • Het beoordelen van de overeenstemming van de pc van de gebruiker met de toegewezen UDID van de toegestane pc in de authenticatiedatabase;
    • Bij MFA wordt de PC UDID uit het certificaat gebruikt voor secundaire authenticatie via Cisco DUO (U kunt elke SAML/Radius-compatibele versie aansluiten);
  2. Multi-factor authenticatie:
    • Gebruikerscertificaat met veldverificatie en secundaire authenticatie tegen een van hen;
    • Login (onveranderlijk, overgenomen van het certificaat) en wachtwoord;
  3. De status van de verbindende host schatten (houding)

Gebruikte oplossingscomponenten:

  • Cisco ASA (VPN-gateway);
  • Cisco ISE (authenticatie / autorisatie / boekhouding, staatsevaluatie, CA);
  • Cisco DUO (multifactorauthenticatie) (U kunt elke SAML/Radius-compatibele versie aansluiten);
  • Cisco AnyConnect (multifunctionele agent voor werkstations en mobiele besturingssystemen);

Laten we beginnen met de eisen van de klant:

  1. De gebruiker moet via zijn login/wachtwoordauthenticatie de AnyConnect-client kunnen downloaden van de VPN-gateway; alle benodigde AnyConnect-modules moeten automatisch worden geïnstalleerd in overeenstemming met het beleid van de gebruiker;
  2. De gebruiker zou automatisch een certificaat moeten kunnen uitgeven (voor een van de scenario's is het hoofdscenario handmatige uitgifte en uploaden op een pc), maar ik heb een automatische uitgifte geïmplementeerd ter demonstratie (het is nooit te laat om het te verwijderen).
  3. Basisauthenticatie moet in verschillende fasen plaatsvinden, eerst is er certificaatauthenticatie met analyse van de benodigde velden en hun waarden, vervolgens login/wachtwoord, maar deze keer moet de gebruikersnaam die is opgegeven in het certificaatveld in het inlogvenster worden ingevoegd Onderwerpnaam (CN) zonder de mogelijkheid om te bewerken.
  4. U moet ervoor zorgen dat het apparaat waarop u inlogt de bedrijfslaptop is die aan de gebruiker is verstrekt voor externe toegang, en niet iets anders. (Er zijn verschillende opties gemaakt om aan deze eis te voldoen)
  5. De staat van het verbindende apparaat (in dit stadium de pc) moet worden beoordeeld aan de hand van een hele flinke tabel met klantvereisten (samenvattend):
    • Bestanden en hun eigenschappen;
    • Registervermeldingen;
    • OS-patches uit de verstrekte lijst (latere SCCM-integratie);
    • Beschikbaarheid van antivirus van een specifieke fabrikant en relevantie van handtekeningen;
    • Activiteit van bepaalde diensten;
    • Beschikbaarheid van bepaalde geïnstalleerde programma's;

Om te beginnen stel ik voor dat je zeker naar de videodemonstratie van de resulterende implementatie kijkt YouTube (5 minuten).

Nu stel ik voor om de implementatiedetails te overwegen die niet in de videoclip worden behandeld.

Laten we het AnyConnect-profiel voorbereiden:

Ik gaf eerder een voorbeeld van het aanmaken van een profiel (in termen van een menu-item in ASDM) in mijn artikel over instellen VPN-taakverdelingscluster. Nu zou ik afzonderlijk de opties willen noteren die we nodig hebben:

In het profiel geven we de VPN-gateway en de profielnaam aan voor verbinding met de eindklant:

Implementatie van het concept van zeer veilige toegang op afstand

Laten we de automatische uitgifte van een certificaat vanaf de profielzijde configureren, waarbij we in het bijzonder de certificaatparameters aangeven en, typisch, aandacht besteden aan het veld Initialen (I), waarbij een specifieke waarde handmatig wordt ingevoerd U DEED testmachine (unieke apparaat-ID die wordt gegenereerd door de Cisco AnyConnect-client).

Implementatie van het concept van zeer veilige toegang op afstand

Hier wil ik een lyrische uitweiding maken, aangezien dit artikel het concept beschrijft; voor demonstratiedoeleinden wordt de UDID voor het uitgeven van een certificaat ingevoerd in het veld Initialen van het AnyConnect-profiel. Als u dit in het echte leven doet, ontvangen alle clients natuurlijk een certificaat met dezelfde UDID op dit gebied en niets zal voor hen werken, aangezien ze de UDID van hun specifieke pc nodig hebben. AnyConnect implementeert helaas nog niet de vervanging van het UDID-veld in het certificaataanvraagprofiel via een omgevingsvariabele, zoals bijvoorbeeld gebeurt met een variabele %GEBRUIKER%.

Het is vermeldenswaard dat de klant (van dit scenario) in eerste instantie van plan is om zelfstandig certificaten met een bepaalde UDID in handmatige modus uit te geven aan dergelijke beschermde pc's, wat voor hem geen probleem is. Voor de meesten van ons willen we echter automatisering (nou ja, voor mij is het waar =)).

En dit is wat ik kan bieden op het gebied van automatisering. Als AnyConnect nog niet in staat is automatisch een certificaat uit te geven door de UDID dynamisch te vervangen, dan is er een andere manier die een beetje creatief nadenken en bekwame handen vereist - ik zal je het concept vertellen. Laten we eerst eens kijken hoe de UDID op verschillende besturingssystemen wordt gegenereerd door de AnyConnect-agent:

  • Dakramen en raamkozijnen — SHA-256-hash van de combinatie van de registersleutel DigitalProductID en Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linux — SHA-256-hash van de UUID van de rootpartitie.
  • Apple iOS — SHA-256 hash PlatformUUID
  • Android – Zie document op link

Dienovereenkomstig maken we een script voor ons zakelijke Windows-besturingssysteem, met dit script berekenen we lokaal de UDID met behulp van bekende invoer en vormen we een verzoek voor de afgifte van een certificaat door deze UDID in het vereiste veld in te voeren. U kunt overigens ook een machine gebruiken certificaat uitgegeven door AD (door dubbele authenticatie met behulp van een certificaat aan het schema toe te voegen Meerdere certificaat).

Laten we de instellingen aan de Cisco ASA-kant voorbereiden:

Laten we een TrustPoint maken voor de ISE CA-server. Dit zal degene zijn die certificaten aan klanten zal uitgeven. Ik zal de importprocedure voor sleutelhangers niet overwegen; een voorbeeld wordt beschreven in mijn artikel over het instellen VPN-taakverdelingscluster.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

We configureren de distributie per Tunnel-Group op basis van regels in overeenstemming met de velden in het certificaat dat wordt gebruikt voor authenticatie. Het AnyConnect-profiel dat we in de vorige fase hebben gemaakt, wordt hier ook geconfigureerd. Houd er rekening mee dat ik de waarde gebruik SECUREBANK-RA, om gebruikers met een uitgegeven certificaat over te dragen naar een tunnelgroep VEILIGE BANK-VPNHoud er rekening mee dat ik dit veld in de kolom AnyConnect-profielcertificaataanvraag heb staan.

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
!

Authenticatieservers instellen. In mijn geval is dit ISE voor de eerste fase van authenticatie en 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
!

We creëren groepsbeleid en tunnelgroepen en hun hulpcomponenten:

Tunnelgroep StandaardWEBVPNGroep zal voornamelijk worden gebruikt om de AnyConnect VPN-client te downloaden en een gebruikerscertificaat uit te geven met behulp van de SCEP-Proxy-functie van de ASA; hiervoor hebben we de bijbehorende opties zowel op de tunnelgroep zelf als op het bijbehorende groepsbeleid geactiveerd AC-downloaden op het geladen AnyConnect-profiel (velden voor het uitgeven van een certificaat, enz.). Ook in dit groepsbeleid geven we de noodzaak aan om te downloaden ISE-houdingsmodule.

Tunnelgroep VEILIGE BANK-VPN wordt automatisch door de client gebruikt bij authenticatie met het uitgegeven certificaat in de vorige fase, omdat, in overeenstemming met de Certificate Map, de verbinding specifiek op deze tunnelgroep zal vallen. Ik vertel je hier over interessante opties:

  • secundaire-authenticatie-server-groep DUO # Secundaire authenticatie instellen op de DUO-server (Radius Proxy)
  • gebruikersnaam-van-certificaatCN # Voor primaire authenticatie gebruiken we het CN-veld van het certificaat om de gebruikersaanmelding over te nemen
  • secundaire-gebruikersnaam-van-certificaat I # Voor secundaire authenticatie op de DUO-server gebruiken we de geëxtraheerde gebruikersnaam en de Initialen (I)-velden van het certificaat.
  • client voor vooraf invullen gebruikersnaam # zorg ervoor dat de gebruikersnaam vooraf is ingevuld in het authenticatievenster zonder de mogelijkheid om deze te wijzigen
  • secundaire-pre-fill-gebruikersnaam client verberg gebruik-algemeen-wachtwoord push # We verbergen het login-/wachtwoordinvoervenster voor secundaire authenticatie DUO en gebruiken de notificatiemethode (sms/push/telefoon) - dock om authenticatie aan te vragen in plaats van het wachtwoordveld 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
!

Vervolgens gaan we verder met ISE:

We configureren een lokale gebruiker (u kunt AD/LDAP/ODBC enz. gebruiken). Voor de eenvoud heb ik in ISE zelf een lokale gebruiker aangemaakt en deze in het veld toegewezen beschrijving UDID-pc van waaruit hij via VPN mag inloggen. Als ik lokale authenticatie op ISE gebruik, ben ik beperkt tot slechts één apparaat, aangezien er niet veel velden zijn, maar in authenticatiedatabases van derden heb ik dergelijke beperkingen niet.

Implementatie van het concept van zeer veilige toegang op afstand

Laten we eens kijken naar het autorisatiebeleid, het is verdeeld in vier verbindingsfasen:

  • Stage 1 — Beleid voor het downloaden van de AnyConnect-agent en het uitgeven van een certificaat
  • Stage 2 — Primair authenticatiebeleid Login (vanaf certificaat)/Wachtwoord + Certificaat met UDID-validatie
  • Stage 3 — Secundaire authenticatie via Cisco DUO (MFA) met UDID als gebruikersnaam + statusbeoordeling
  • Stage 4 — De definitieve autorisatie bevindt zich in de staat:
    • Meewerkend;
    • UDID-validatie (van certificaat + login-binding),
    • Cisco DUO MFA;
    • Authenticatie door inloggen;
    • Certificaatverificatie;

Implementatie van het concept van zeer veilige toegang op afstand

Laten we eens kijken naar een interessante toestand UUID_VALIDATED, lijkt het erop dat de authenticerende gebruiker daadwerkelijk afkomstig is van een pc waaraan een toegestane UDID in het veld is gekoppeld Omschrijving account, de voorwaarden zien er als volgt uit:

Implementatie van het concept van zeer veilige toegang op afstand

Het autorisatieprofiel dat in fase 1,2,3 wordt gebruikt, is als volgt:

Implementatie van het concept van zeer veilige toegang op afstand

U kunt precies controleren hoe de UDID van de AnyConnect-client bij ons binnenkomt door naar de clientsessiedetails in ISE te kijken. In detail zullen we zien dat AnyConnect via het mechanisme ACIDEX verzendt niet alleen informatie over het platform, maar ook de UDID van het apparaat Cisco-AV-PAAR:

Implementatie van het concept van zeer veilige toegang op afstand

Laten we aandacht besteden aan het certificaat dat aan de gebruiker en het veld is uitgegeven Initialen (I), dat wordt gebruikt om het te gebruiken als login voor secundaire MFA-authenticatie op Cisco DUO:

Implementatie van het concept van zeer veilige toegang op afstand

Aan de DUO Radius Proxy-kant in het log kunnen we duidelijk zien hoe het authenticatieverzoek wordt gedaan, het komt met UDID als gebruikersnaam:

Implementatie van het concept van zeer veilige toegang op afstand

Vanuit het DUO-portaal zien we een succesvolle authenticatiegebeurtenis:

Implementatie van het concept van zeer veilige toegang op afstand

En in de gebruikerseigenschappen heb ik het ingesteld ALIAS, die ik heb gebruikt om in te loggen, dit is op zijn beurt de UDID van de pc die is toegestaan ​​om in te loggen:

Implementatie van het concept van zeer veilige toegang op afstand

Als resultaat kregen we:

  • Multi-factor gebruikers- en apparaatauthenticatie;
  • Bescherming tegen spoofing van het apparaat van de gebruiker;
  • Het beoordelen van de staat van het apparaat;
  • Potentieel voor meer controle met domeinmachinecertificaat, enz.;
  • Uitgebreide bescherming van de werkplek op afstand met automatisch geïmplementeerde beveiligingsmodules;

Links naar artikelen uit de Cisco VPN-serie:

Bron: www.habr.com

Voeg een reactie