Duke vazhduar serinë e artikujve mbi temën e organizimit VPN për Qasje të Largët të aksesit, nuk mund të mos ndaj një përvojë interesante në implementimin e një konfiguracioni VPN të mbrojtur fort. Një detyrë jo e thjeshtë më dha një klient (kanë imagjinatë në fshatrat Ruse), por Challenge Accepted dhe u realizua kreativisht. Si rezultat, u krijua një koncept interesant me karakteristikat e mëposhtme:
- Disa faktorë mbrojtës nga zëvendësimi i pajisjes përfundimtare (me lidhje të fortë me përdoruesin);
- Vlerësimi i përputhshmërisë së PC-së së përdoruesit me UDID e caktuar të PC-së të lejuar në bazën e autentifikimit;
- Me MFA, që përdor UDID të PC-së nga certifikata për autentifikim të dytë përmes Cisco DUO (Mund të lidhni çdo SAML/RADIUS të përputhshëm);
- Autentifikim shumëfaktorësh:
- Certifikata e përdoruesit me verifikimin e fushave dhe autentifikimin e dytë përmes një prej tyre;
- Identifikimi (i pandryshueshëm, i marra nga certifikata) dhe fjalëkalimi;
- Vlerësimi i gjendjes së hostit që po lidhet (Posture)
Komponentët e përdorur të zgjidhjes:
- Cisco ASA (Porta VPN);
- Cisco ISE (Autentifikim / Autorizim / Aktivitet, Vlerësimi i Gjendjes, CA);
- Cisco DUO (Autentifikimi shumëfaktorësh) (Mund të lidhni çdo SAML/RADIUS të përputhshëm);
- Cisco AnyConnect (Agjenti multifunksional për stacionet e punës dhe sistemet operative mobile);
Të fillojmë me kërkesat e klientit:
- Përdoruesi duhet, me autentifikimin e tij Login/Fjalëkalim, të ketë mundësinë të shkarkojë klientin AnyConnect nga VPN gateway, të gjitha modulët e nevojshëm AnyConnect duhet të instalohen automatikisht sipas politikës së përdoruesit;
- Përdoruesi duhet të ketë mundësinë e rregjistrimit automatik të certifikatës (për një nga skenarët, skenari kryesor është regjistrimi manual dhe ngarkimi në PC), unë realizova regjistrimin automatik për demonstrohen (të heqësh asnjëherë nuk është vonë).
- Autentifikimi kryesor duhet të kalojë në disa etapa, së pari bëhet autentifikimi i certifikatës me analizimin e fushave dhe vlerave të nevojshme, pastaj login/fjalëkalim, vetëm që këtë herë në dritaren e login duhet të vendoset emri i përdoruesit, i përcaktuar në fushën e certifikatës. Subjekti Emri (CN) pa mundësi redaktimi.
- Është e nevojshme të sigurohemi që pajisja nga e cila bëhet hyrja të jetë laptopi i dhënë përdoruesit për qasje të largët korporative, dhe jo diçka tjetër. (Janë bërë disa variante për të përmbushur këtë kërkesë)
- Duhet të bëhet një vlerësim i gjendjes së pajisjes që po lidhet (në këtë fazë PC) me kontrollin e një tabele të shëndoshë kërkesash nga klienti (duke përmbledhur):
- Skedarët dhe pronat e tyre;
- Regjistrimet e regjistrit;
- Patch-et e OS nga lista e ofruar (në vazhdim integrimi i SCCM);
- Prania e Antivirusit nga një prodhues i caktuar dhe aktualiteti i nënshkrimeve;
- Aktiviteti i disa shërbimeve të caktuara;
- Prania e disa programeve të instaluara;
Në fillim, sugjeroj të shikoni patjetër demonstratën video të realizimit të fituar në Youtube (5 minuta).

Tani propozoj të shqyrtojmë detajet e realizimit që nuk u përmendën në videon.
Le të përgatisim profilin AnyConnect:
Shembulli i krijimit të profilit (në lidhje me menunë në ASDM) e kam përmendur më parë në artikullin tim për konfigurimin . Tani dua të theksoj veçanërisht ato opsione që na nevojiten:
Në profil do të tregojmë portin VPN dhe emrin e profilit për lidhen në klientin përfundimtar:

Do të realizojmë cilësimet për automatizimin e lëshimit të certifikatës nga profili, duke treguar, përkatësisht, parametrat e certifikatës dhe, siç është karakteristik, do të kushtojmë vëmendje fushës Initials (I), ku manualisht është futur një vlerë specifike UDID i makinës testuese (Identifikuesi Unik i Pajisjes, i gjeneruar nga klienti Cisco AnyConnect).

Këtu dëshiroj të bëj një shënim lirik, pasi ky artikull përshkruan konceptin, për qëllime demonstrative është futur UDID për lëshimin e certifikatës në fushën Initials të profilit AnyConnect. Sigurisht, në jetë reale, nëse e bëni këtë, të gjithë klientët do të marrin një certifikat me UDID të njëjtë në këtë fushë dhe asgjë nuk do të funksionojë për ta, pasi ata kanë nevojë për UDID-në e PC-së së tyre specifike. AnyConnect fatkeqësisht ende nuk implementon zëvendësimin në profil për kërkesën e certifikatës në fushën UDID përmes variablit të ambientit, ashtu siç e bën, për shembull, me variablin %USER%.
Duhet theksuar se porositësi (i këtij skenari) fillimisht planifikon të lëshojë vetë certifikatat me UDID të caktuar në mënyrë manuale për këto PC të Mbrojtura, që për të nuk është ndonjë problem. Megjithatë, për shumicën e ne, dëshirojmë automatizim (për mua të paktën =)).
Dhe ja çfarë mund t'ju ofroj për automatizimin. Nëse certifikata lëshohet automatikisht AnyConnect duke futur dinamikisht UDID, nuk është gjithçka e mundur, por ka një mënyrë tjetër që kërkon pak kreativitet dhe duar të zhdërvjellta – do t'ju tregoj konceptin. Fillimisht, le të shqyrtojmë si krijohet UDID në sisteme të ndryshme operative nga agjenti AnyConnect:
- macOS — SHA-256 hash i kombinimit të çelësit të regjistrit DigitalProductID dhe Machine SID
- OSX — SHA-256 hash i PlatformUUID
- OpenVPN — SHA-256 hash i UUID të partisioneve kryesore.
- Apple iOS — SHA-256 hash i PlatformUUID
- Fare OS – Shih dokumentin për
Dhe kështu, ne krijojmë një skript për sistemet tona operative Windows, nëpërmjet këtij skripti llogarisim lokalisht UDID sipas të dhënave të njohura dhe krijojmë një kërkesë për lëshimin e certifikatës, duke futur në fushën e duhur këtë UDID, e cila, për faktin, mund të jetë edhe certifikata e makinës, e lëshuar nga AD (duke shtuar në skemë dyfish autentifikim me certifikatën Multiple Certificate).
Të përgatisim konfigurimet nga ana e Cisco ASA:
Të krijojmë TrustPoint për serverin ISE CA, i cili do të lëshojë certifikata për klientët. Procedurën e importit të Key-Chain nuk do ta shqyrtoj, shembulli është i përshkruar në artikullin tim për konfigurimin .
crypto ca trustpoint ISE-CA
enrollment terminal
crl configureKonfigurojmë shpërndarjen në baze të Tunnel-Group sipas rregullave në përputhje me fushat në certifikatën, me të cilën bëhet autentifikimi. Po ashtu, këtu konfiguroni profilin AnyConnect, i prodhuar nga ne në fazën e kaluar. Vërej se po përdor vlerën SECUREBANK-RA, për të transferuar përdoruesit me certifikatën e lëshuar në grupin tunel. SECURE-BANK-VPN, kushtoj vëmendje se kjo fushë është vendosur në kolonën e kërkesës për certifikatën e profilit 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
!Konfigurojmë serverët e autentikimit. Në rastin tim, ky është ISE për fazën e parë të autentikimit dhe DUO (Radius Proxy) si 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
!Krijojmë politika grupore dhe grupe tunelesh, si dhe komponentët e tyre ndihmës:
Grupi tunel DefaultWEBVPNGroup do të përdoret fillimisht për shkarkimin e klientit AnyConnect VPN dhe lëshimin e certifikatës së përdoruesit duke përdorur funksionin SCEP-Proxy të ASA, për këtë kemi aktivizuar opsionet përkatëse si në grupin e tunelit ashtu edhe në politikën grupore të asociuar. AC-Download, si dhe në profilin e shkarkuar AnyConnect (fushat e lëshimit të certifikatës etj.). Gjithashtu në këtë politikë grupi përcaktojmë nevojën për shkarkimin ISE Posture Module.
Grupi tunel SECURE-BANK-VPN do të përdoret automatikisht nga klienti gjatë autentifikimit me certifikatën e lëshuar në fazën e mëparshme, pasi sipas Hartës së Certifikatës, lidhja do të bjerë pikërisht në këtë grup tuneli. Do të flas për opsionet interesante kë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
!Më pas kalojmë në ISE:
Konfigurojmë një përdorues lokal (mund të përdorim gjithashtu AD/LDAP/ODBC etj.), për thjeshtësi kam krijuar një përdorues lokal në ISE dhe e kam caktuar në fushën description UDID i PC-së nga i cili i lejohet hyrja përmes VPN. Në rastin e përdorimit të autentikimit lokal në ISE, do të jem i kufizuar vetëm në një pajisje, pasi nuk ka shumë fusha, por në bazat e të dhënave të jashtme për autentikim, ato kufizime nuk do të kenë.

Të shohim politikën e autorizimit, e cila ndahet në katër faza të lidhjes:
- Faza 1 — Politika për shkarkimin e agentit AnyConnect dhe lëshimin e certifikatës
- Faza 2 — Politika e autentikimit fillestar Login (nga certifikata)/Fjalëkalimi + Certifikata me validimin e UDID
- Faza 3 — Autentikimi dytësor përmes Cisco DUO (MFA) me UDID si emri i përdoruesit + Vlerësimi i gjendjes
- Faza 4 — Autoriza finale në gjendjen:
- E pajtueshme;
- me validimin e UDID (nga certifikata + lidhja me login),
- Cisco DUO MFA;
- Autentikimi me login;
- Autentikimi me certifikatë;

Të shohim një kusht interesant UUID_VALIDATED, pikërisht ajo e verifikon nëse përdoruesi që po autentikohet ka ardhur nga një PC me UDID të lejuar të asociuar në fushën Përshkrimi e llogarisë, duket si kushtet:

Profilin e autorizimit, i përdorur në fazat 1, 2, 3, duket si më poshtë:

Të kontrollojmë si arrin UDID nga klienti AnyConnect duke parë detajet e sesionit të klientit në ISE. Në detajet do të shohim se AnyConnect përmes mekanizmit ACIDEX dërgon jo vetëm të dhënat në lidhje me platformën, por gjithashtu UDID e pajisjes si Cisco-AV-PAIR:

Të vëmë re certifikatën e shkruar për përdoruesin dhe fushën Initials (I), e cila përdoret për ta marrë atë si login për autentifikimin e dytë MFA në Cisco DUO:

Në anën e DUO Radius Proxy në logun e shohim qartë si bëhet kërkesa për autentifikim, ajo bëhet duke përdorur UDID si emrin e përdoruesit:

Nga portali DUO shohim një ngjarje të suksesshme autentifikimi:

Dhe në pronësitë e përdoruesit kam vendosur ALIAS, të cilin e përdora për login, nga ana tjetër kjo është UDID e lejuar për loginin e PC:

Si rezultat morëm:
- Autentifikimin e shumëfaktorit të përdoruesit dhe pajisjes;
- Mbrojtja nga zëvendësimi i pajisjes së përdoruesit;
- Vlerësimi i gjendjes së pajisjes;
- Potenciali për përmirësimin e kontrollit me certifikatën e makinës së domenit etj.;
- Mbrojtja gjithëpërfshirëse e vendit të punës të largët me modula sigurie që shpërndahen automatikisht;
Linket e artikujve të serisë Cisco VPN:
Burimi: habr.com
