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:
- 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);
- 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;
- 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:
- 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;
- 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ť).
- 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.
- 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)
- 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).

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í . 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:

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).

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
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í .
crypto ca trustpoint ISE-CA
enrollment terminal
crl configureNastavujeme 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) – дока
!
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ú.

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;

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:

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

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:

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:

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:

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

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:

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
