Implementace konceptu vysoce bezpečného vzdáleného přístupu

Pokračování série článků na téma organizace Vzdálený přístup VPN přístup Nemohu se podělit o své zajímavé zkušenosti s nasazením vysoce bezpečná konfigurace VPN. Jeden zákazník předložil netriviální úkol (v ruských vesnicích jsou vynálezci), ale výzva byla přijata a kreativně realizována. Výsledkem je zajímavý koncept s následujícími vlastnostmi:

  1. Několik faktorů ochrany proti záměně koncového zařízení (s přísnou vazbou na uživatele);
    • Posouzení souladu PC uživatele s přiděleným UDID povoleného PC v autentizační databázi;
    • S MFA pomocí PC UDID z certifikátu pro sekundární autentizaci přes Cisco DUO (Můžete připojit jakýkoli kompatibilní se SAML/Radius);
  2. Vícefaktorová autentizace:
    • Uživatelský certifikát s ověřením v terénu a sekundární autentizací proti jednomu z nich;
    • Přihlašovací jméno (neměnné, převzato z certifikátu) a heslo;
  3. Odhad stavu připojujícího se hostitele (pozice)

Použité komponenty řešení:

  • Cisco ASA (VPN brána);
  • Cisco ISE (Autentizace / Autorizace / Účetnictví, Hodnocení stavu, CA);
  • Cisco DUO (Multi-Factor Authentication) (Můžete připojit jakýkoli kompatibilní se SAML/Radius);
  • Cisco AnyConnect (Víceúčelový agent pro pracovní stanice a mobilní OS);

Začněme požadavky zákazníka:

  1. Uživatel musí mít prostřednictvím své autentizace Login/Password možnost stáhnout klienta AnyConnect z brány VPN; všechny potřebné moduly AnyConnect musí být nainstalovány automaticky v souladu se zásadami uživatele;
  2. Uživatel by měl mít možnost automaticky vydávat certifikát (pro jeden ze scénářů je hlavním scénářem ruční vydání a nahrání na PC), ale pro demonstraci jsem implementoval automatické vydání (nikdy není pozdě na jeho odstranění).
  3. Základní autentizace musí probíhat v několika fázích, nejprve je autentizace certifikátem s analýzou potřebných polí a jejich hodnot, poté login/heslo, pouze tentokrát je nutné do přihlašovacího okna vložit uživatelské jméno uvedené v poli certifikátu Název předmětu (CN) bez možnosti editace.
  4. Musíte se ujistit, že zařízení, ze kterého se přihlašujete, je firemní notebook vydaný uživateli pro vzdálený přístup, a ne něco jiného. (Pro splnění tohoto požadavku bylo vytvořeno několik možností)
  5. Stav připojovacího zařízení (v této fázi PC) by měl být posouzen kontrolou celé rozsáhlé tabulky požadavků zákazníka (shrnující):
    • Soubory a jejich vlastnosti;
    • Záznamy v registru;
    • záplaty OS z poskytnutého seznamu (pozdější integrace SCCM);
    • Dostupnost Anti-Virus od konkrétního výrobce a relevance signatur;
    • Činnost určitých služeb;
    • Dostupnost určitých nainstalovaných programů;

Pro začátek navrhuji, abyste se určitě podívali na video ukázku výsledné implementace na Youtube (5 minut).

Nyní navrhuji zvážit detaily implementace, které nejsou zahrnuty ve videoklipu.

Připravíme profil AnyConnect:

Dříve jsem uvedl příklad vytvoření profilu (ve smyslu položky nabídky v ASDM) ve svém článku o nastavení Cluster pro vyrovnávání zatížení VPN. Nyní bych chtěl samostatně poznamenat možnosti, které budeme potřebovat:

V profilu uvedeme bránu VPN a název profilu pro připojení ke koncovému klientovi:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Nakonfigurujeme automatické vydávání certifikátu ze strany profilu s uvedením zejména parametrů certifikátu a charakteristicky věnujte pozornost poli Iniciály (I), kde se ručně zadává konkrétní hodnota UDID testovací stroj (jedinečný identifikátor zařízení, který je generován klientem Cisco AnyConnect).

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Zde chci udělat lyrickou odbočku, protože tento článek popisuje koncept; pro demonstrační účely se UDID pro vydání certifikátu zadává do pole Iniciály profilu AnyConnect. Samozřejmě v reálném životě, pokud to uděláte, pak všichni klienti obdrží certifikát se stejným UDID v tomto poli a nic jim nebude fungovat, protože potřebují UDID svého konkrétního PC. AnyConnect bohužel zatím neimplementuje nahrazení pole UDID do profilu žádosti o certifikát prostřednictvím proměnné prostředí, jak je tomu například u proměnné %UŽIVATEL%.

Stojí za zmínku, že zákazník (tohoto scénáře) zpočátku plánuje samostatně vydávat certifikáty s daným UDID v manuálním režimu na takto chráněná PC, což pro něj není problém. Nicméně pro většinu z nás chceme automatizaci (no, pro mě je to pravda =)).

A to je to, co mohu nabídnout z hlediska automatizace. Pokud AnyConnect ještě není schopen vystavit certifikát automaticky dynamickým nahrazením UDID, pak existuje další způsob, který bude vyžadovat trochu kreativního myšlení a šikovné ruce - řeknu vám koncept. Nejprve se podívejme, jak je UDID generováno v různých operačních systémech agentem AnyConnect:

  • Windows — SHA-256 hash kombinace klíče registru DigitalProductID a Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linux — SHA-256 hash UUID kořenového oddílu.
  • Apple iOS — SHA-256 hash PlatformUUID
  • Android – Viz dokument na odkaz

Podle toho vytvoříme skript pro náš firemní OS Windows, pomocí tohoto skriptu lokálně vypočítáme UDID pomocí známých vstupů a vytvoříme žádost o vydání certifikátu zadáním tohoto UDID do požadovaného pole, mimochodem můžete použít i stroj certifikát vydaný AD (přidáním dvojité autentizace pomocí certifikátu do schématu Vícenásobný certifikát).

Připravme si nastavení na straně Cisco ASA:

Vytvořme TrustPoint pro server ISE CA, bude to ten, který bude vydávat certifikáty klientům. Postup importu Key-Chain nebudu zvažovat, příklad je popsán v mém článku o nastavení Cluster pro vyrovnávání zatížení VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Distribuci podle Tunnel-Group konfigurujeme na základě pravidel v souladu s poli v certifikátu, který se používá k autentizaci. Zde se také konfiguruje profil AnyConnect, který jsme vytvořili v předchozí fázi. Vezměte prosím na vědomí, že používám hodnotu SECUREBANK-RA, k převedení uživatelů s vydaným certifikátem do skupiny tunelů SECURE-BANK-VPN, všimněte si prosím, že toto pole mám ve sloupci Žádost o certifikát profilu 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
!

Nastavení ověřovacích serverů. V mém případě se jedná o ISE pro první fázi autentizace a DUO (Radius Proxy) jako 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
!

Vytváříme zásady skupin a skupiny tunelů a jejich pomocné komponenty:

Skupina tunelů Výchozí skupina WEBVPNG bude sloužit primárně ke stažení klienta AnyConnect VPN a vystavení uživatelského certifikátu pomocí funkce SCEP-Proxy ASA; k tomu máme aktivované odpovídající možnosti jak na tunelové skupině samotné, tak na souvisejících zásadách skupiny AC-Stáhnouta na načteném profilu AnyConnect (pole pro vystavení certifikátu atd.). Také v této zásadě skupiny uvádíme, že je potřeba stáhnout ISE modul držení těla.

Skupina tunelů SECURE-BANK-VPN bude klientem automaticky použito při autentizaci vydaným certifikátem v předchozí fázi, protože v souladu s Mapou certifikátů bude připojení spadat konkrétně na tuto skupinu tunelů. Zde vám řeknu o zajímavých možnostech:

  • sekundární-autentizační-server-skupina DUO # Nastavte sekundární ověřování na serveru DUO (Radius Proxy)
  • uživatelské jméno-z-certifikátuCN # Pro primární autentizaci používáme pole CN certifikátu ke zdědění uživatelského přihlášení
  • sekundární-uživatelské jméno-z-certifikátu I # Pro sekundární autentizaci na serveru DUO používáme extrahované uživatelské jméno a pole Iniciály (I) certifikátu.
  • pre-fill-username client # nechat uživatelské jméno předvyplnit v autentizačním okně bez možnosti změny
  • second-pre-fill-username client hide use-common-password push # Skryjeme okno pro zadání přihlašovacího jména/hesla pro sekundární autentizaci DUO a použijeme metodu upozornění (sms/push/telefon) - dock pro vyžádání autentizace místo pole hesla zde

!
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ále přejdeme k ISE:

Nakonfigurujeme lokálního uživatele (lze použít AD/LDAP/ODBC atd.), pro jednoduchost jsem v samotném ISE vytvořil lokálního uživatele a přiřadil jej v poli popis UDID PC ze kterého má povoleno přihlášení přes VPN. Pokud použiji lokální ověřování na ISE, budu omezen pouze na jedno zařízení, protože polí není mnoho, ale v autentizačních databázích třetích stran taková omezení mít nebudu.

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Podívejme se na autorizační politiku, ta je rozdělena do čtyř fází připojení:

  • Krok 1 — Zásady pro stahování agenta AnyConnect a vydávání certifikátu
  • Krok 2 — Primární autentizační politika Přihlášení (z certifikátu)/Heslo + Certifikát s ověřením UDID
  • Krok 3 — Sekundární autentizace přes Cisco DUO (MFA) s použitím UDID jako uživatelského jména + vyhodnocení stavu
  • Krok 4 — Konečné oprávnění je ve stavu:
    • V souladu;
    • ověření UDID (z certifikátu + vazby přihlášení),
    • Cisco DUO MFA;
    • Autentizace přihlášením;
    • Ověření certifikátu;

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Podívejme se na zajímavou podmínku UUID_VALIDATED, jen to vypadá, že ověřující uživatel skutečně přišel z počítače s povoleným UDID přiřazeným v poli Popis účtu, podmínky vypadají takto:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Autorizační profil použitý ve fázích 1,2,3 je následující:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Můžete přesně zkontrolovat, jak k nám UDID z klienta AnyConnect dorazí, když se podíváte na podrobnosti relace klienta v ISE. Podrobně uvidíme, že AnyConnect prostřednictvím mechanismu ACIDEX odesílá nejen informace o platformě, ale také UDID zařízení jako Cisco-AV-PAIR:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Věnujme pozornost certifikátu vydanému uživateli a oboru Iniciály (I), který se používá jako přihlašovací jméno pro sekundární MFA autentizaci na Cisco DUO:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Na straně DUO Radius Proxy v protokolu můžeme jasně vidět, jak se provádí požadavek na ověření, přichází s použitím UDID jako uživatelského jména:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

Z portálu DUO vidíme úspěšnou autentizační událost:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

A ve vlastnostech uživatele to mám nastavené ALIAS, který jsem použil pro přihlášení, je to zase UDID počítače povoleného pro přihlášení:

Implementace konceptu vysoce bezpečného vzdáleného přístupu

V důsledku toho jsme dostali:

  • Vícefaktorové ověření uživatele a zařízení;
  • Ochrana proti spoofingu zařízení uživatele;
  • Posouzení stavu zařízení;
  • Potenciál pro zvýšenou kontrolu pomocí certifikátu počítače domény atd.;
  • Komplexní ochrana vzdáleného pracoviště s automaticky nasazenými bezpečnostními moduly;

Odkazy na články ze série Cisco VPN:

Zdroj: www.habr.com

Přidat komentář