Realizácia konceptu vysoko chráneného vzdialeného prístupu

Pokračujúc v sérii článkov na tému organizácie Remote-Access VPN prístupu nemôžem sa nepodeliť o zaujímavú skúsenosť s nasadením vysoko zabezpečenej konfigurácie VPN. Náročnú úlohu mi poskytol jeden zákazník (sú aj vynálezcovia v ruských dedinách), ale Challenge Accepted a bolo to kreatívne zrealizované. Výsledkom je zaujímavý koncept s nasledujúcimi charakteristikami:

  1. Niekoľko ochranných faktorov proti podvádzaniu koncového zariadenia (s prísnou väzbou na používateľa);
    • Hodnotenie zhody PC používateľa s prideleným UDID povoleného PC v autentifikačnej databáze;
    • S MFA, používačou UDID PC z certifikátu pre sekundárnu autentifikáciu cez Cisco DUO (Môže sa pripojiť každý SAML/RADIUS kompatibilný systém);
  2. Viacfaktorová autentifikácia:
    • Certifikát používateľa s overením polí a sekundárnou autentifikáciou podľa jedného z nich;
    • Prihlasovacie údaje (nemenné, prevzaté z certifikátu) a heslo;
  3. Hodnotenie stavu, pripájajúceho sa hostiteľa (Posture)

Použité komponenty riešenia:

  • Cisco ASA (VPN brána);
  • Cisco ISE (Autentifikácia / Autorizačná / Účtovanie, Hodnotenie stavu, CA);
  • Cisco DUO (Viacfaktorová autentifikácia) (Môže sa pripojiť každý SAML/RADIUS kompatibilný systém);
  • Cisco AnyConnect (viacúčelový agent pre pracovné stanice a mobilné OS);

Začnime s požiadavkami zákazníka:

  1. Používateľ by mal mať možnosť stiahnuť klienta AnyConnect z VPN brány pomocou svojej autentifikácie Prihlasovacie údaje/Heslo, všetky potrebné moduly AnyConnect by sa mali automaticky nainštalovať v súlade s politikou používateľa;
  2. Používateľ by mal mať možnosť automaticky si vytvoriť certifikát (pre jeden zo scenárov, hlavným je však manuálna výpíska a nahratie na PC), ja som realizoval automatické vytváranie certifikátu na ukážku (nikdy nie je neskoro ho odstrániť).
  3. Hlavná autentifikácia by mala prebiehať v niekoľkých fázach, najskôr ide o autentifikáciu certifikátu s analýzou potrebných polí a ich hodnôt, následne používateľské meno/heslo, len tentokrát by sa do okna prihlasovania malo automaticky doplniť meno používateľa uvedené v poli certifikátu Subject Name (CN) bez možnosti úpravy.
  4. Je potrebné zabezpečiť, že zariadenie, z ktorého sa vykonáva prihlásenie, je podnikový notebook vydaný používateľovi na vzdialený prístup, a nie niečo iné. (Existuje niekoľko variánt na splnenie tejto požiadavky)
  5. Je potrebné vykonať hodnotenie stavu pripojeného zariadenia (v tomto kroku PC) s kontrolou celej obsiahlej tabuľky požiadaviek zákazníka (zhŕňajúc):
    • Súbory a ich vlastnosti;
    • Záznamy v registri;
    • Opravy OS z poskytnutého zoznamu (následne integrácia SCCM);
    • Prítomnosť antivírusu určitého výrobcu a aktuálnosť podpisov;
    • Aktivita určitých služieb;
    • Prítomnosť určitých nainštalovaných programov;

Na začiatok odporúčam povinne si pozrieť video-demonstráciu vykonanej realizácie na Youtube (5 minút).

Prehrajte video

Teraz navrhujem zvážiť detaily realizácie, ktoré neboli spomenuté vo videu.

Pripravíme profil AnyConnect:

Príklad vytvorenia profilu (v rámci menu v ASDM) som už uviedol vo svojej článku o nastavení VPN Load-Balancing klastru. Teraz chcem osobitne upozorniť na tie možnosti, ktoré budeme potrebovať:

V profile uvedieme bránu VPN a názov profilu na pripojenie na koncovom klientovi:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Urobíme nastavenia automatického vydávania certifikátu zo strany profilu, pričom uvedieme najmä parametre certifikátu a čo je charakteristické, zameriame sa na pole Initials (I), kde je manuálne zadaná konkrétna hodnota UDID testovacieho zariadenia (Jedinečný identifikátor zariadenia, ktorý generuje Cisco AnyConnect klient).

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Tu chcem spraviť lyrické odbočenie, pretože tento článok popisuje koncept, pre demonštračné účely tu bol zadaný UDID na vydávanie certifikátu v poli Initials profilu AnyConnect. Samozrejme, v reálnom živote, ak by ste to takto spravili, všetci klienti by dostali certifikát s rovnakým UDID v tomto poli a nič by im nefungovalo, pretože potrebujú UDID svojho konkrétneho PC. AnyConnect bohužiaľ zatiaľ nerealizuje substitúciu v profile pri žiadosti o certifikát do poľa UDID cez premennú prostredia, ako to napríklad robí s premennou %USER%.

Je potrebné poznamenať, že zákazník (tohto scenára) pôvodne plánuje sám vydávať certifikáty so zadaným UDID manuálne na také Ochranné PC, čo nie je pre neho žiadny problém. Avšak pre väčšinu z nás je dôležitá automatizácia (aspoň pre mňa určite =).

A tu je, čo môžem ponúknuť v oblasti automatizácie. Ak by sa certifikát automaticky generoval s použitím AnyConnect a dynamicky by sa nahradil UDID, existuje aj iný spôsob, ktorý si vyžaduje trochu kreatívneho myslenia a zručných rúk – opíšem vám koncept. Najprv si pozrime, ako sa UDID vytvára na rôznych operačných systémoch agentom AnyConnect:

  • Windows — SHA-256 hash kombinácie kľúča z registri DigitalProductID a Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linux — SHA-256 hash UUID root partície.
  • Apple iOS — SHA-256 hash PlatformUUID
  • Android – Pozri dokumentáciu k odkaze

Na základe toho vytvoríme skript pre naše firemné operačné systémy Windows, ktorý lokálne vypočíta UDID podľa známych vstupných údajov a vytvorí požiadavku na vydanie certifikátu, pričom do potrebného poľa vloží tento UDID, mimochodom, môžete vydať aj strojový certifikát, ktorý bol vydaný AD (pridaním do schémy dvojitej autentifikácie podľa certifikátu Multiple Certificate).

Pripravíme nastavenia zo strany Cisco ASA:

Vytvoríme TrustPoint pre ISE CA server, ktorý bude vydávať certifikáty klientom. Procedúru importu Key-Chain nebudem popisovať, príklad je uvedený v mojom článku o nastavení VPN Load-Balancing klastru.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Nastavujeme rozdelenie podľa Tunnel-Group na základe pravidiel v súlade s polím v certifikáte, podľa ktorého sa vykonáva autentifikácia. Tu sa nastavuje aj profil AnyConnect, ktorý sme vytvorili v predchádzajúcom kroku. Upozorňujem, že používam hodnotu SECUREBANK-RA, pre presun používateľov s vydaným certifikátom do tunelovej skupiny SECURE-BANK-VPN, všimnite si, že toto pole mám nastavené v sekcii požiadavky na 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
!

Nastavujeme autentifikačné servery. V mojom prípade ide o ISE pre prvú fázu autentifikácie a DUO (Radius Proxy) ako 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árame skupinové politiky a tunelové skupiny a pomocné ich komponenty:

Tunelová skupina DefaultWEBVPNGroup bude použit najprv na stiahnutie klienta AnyConnect VPN a na vydanie používateľského certifikátu pomocou funkcie SCEP-Proxy ASA; preto sú aktivované príslušné možnosti na samotnej tunelovej skupine, ako aj na pridruženej skupinovej politike. AC-Download, ako aj na sťahovanom profile AnyConnect (polia pre vydanie certifikátu atď.). V tejto skupinovej politike tiež uvádzame potrebu sťahovania. ISE Posture Module.

Tunelová skupina SECURE-BANK-VPN bude automaticky používaný klientom pri autentifikácii prostredníctvom vydaného certifikátu v predchádzajúcom kroku, keďže v súlade s Certificate Map, pripojenie sa bude realizovať práve na túto tunelovú skupinu. Povieme si o zaujímavých možnostiach tu:

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

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

Ďalej prejdeme k ISE:

Nastavíme lokálneho používateľa (môžeme použiť aj AD/LDAP/ODBC atď.), pre jednoduchšie som vytvoril lokálneho používateľa priamo v ISE a priradil ho do poľa description UDID PC z ktorého má povolený prístup cez VPN. V prípade použitia lokálnej autentifikácie na ISE budem obmedzený len na jedno zariadenie, pretože polí nie je toľko, ale pri externých autentifikačných databázach tieto obmedzenia nebudú.

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Pozrime sa na politiku autorizácie, je rozdelená na štyri fázy pripojenia:

  • Fáza 1 — Politika na stiahnutie agenta AnyConnect a vydanie certifikátu
  • Fáza 2 — Politika primárnej autentifikácie Prihlasovanie (z certifikátu)/Heslo + Certifikát s validáciou UDID
  • Fáza 3 — Sekundárna autentifikácia cez Cisco DUO (MFA) s UDID ako používateľským menom + Hodnotenie stavu
  • Fáza 4 — Konečná autorizácia v stave:
    • Compliant;
    • validáciou UDID (z certifikátu + viazanie na prihlasovanie),
    • Cisco DUO MFA;
    • Autentifikácia podľa prihlasovania;
    • Autentifikácia podľa certifikátu;

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Pozrime sa na zaujímavú podmienku UUID_VALIDATED, táto presne sleduje, či sa autentifikujúci používateľ skutočne pripojil z PC s povoleným UDID asociovaným v poli Description účet, vyzerajú podmienky takto:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Profil autorizácie, používaný v 1,2,3 fázach vyzerá nasledovne:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Skontrolovať, ako konkrétne nám prichádza UDID od klienta AnyConnect môžeme pozrieť v ISE detailoch relácie klienta. V detailoch uvidíme, že AnyConnect prostredníctvom mechanizmu ACIDEX posiela nielen údaje o platforme, ale aj UDID zariadenia ako Cisco-AV-PAIR:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Pozrime sa na certifikát, ktorý bol vydaný používateľovi a pole Initials (I), ktoré sa používa na to, aby sme ho vzali ako prihlasovacie meno pre sekundárnu autentifikáciu MFA na Cisco DUO:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Na strane DUO Radius Proxy v logu jasne vidíme, akým spôsobom ide požiadavka na autentifikáciu, ide s použitím UDID ako používateľského mena:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

Z pohľadu portálu DUO vidíme úspešnú udalosť autentifikácie:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

A v vlastnostiach používateľa mám nastavené ALIAS, ktorý som použil na prihlasovanie, a to je UDID povoleného PC na prihlasovanie:

Realizácia konceptu vysoko chráneného vzdialeného prístupu

V dôsledku toho sme získali:

  • Viacfaktorovú autentifikáciu používateľa a zariadenia;
  • Ochranu pred podvodným zariadením používateľa;
  • Hodnotenie stavu zariadenia;
  • Potenciál na posilnenie kontroly s počítačovým certifikátom domény atď.;
  • Komplexná ochrana vzdialeného pracovného miesta s automaticky nasadzovanými bezpečnostnými modulmi;

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

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster