Folytatva a szervezési témában írt cikkek sorozatát Remote-Access VPN hozzáférésről nem tudok nem megosztani egy érdekes tapasztalatot a telepítésről magas biztonságú VPN konfigurációról. Egy érdekes feladatot dobott nekem az egyik megrendelő (vannak kreatív emberek az orosz falvakban), de elvállaltam a kihívást és kreatívan megvalósítottam. Ennek eredményeként egy érdekes koncepció született a következő jellemzőkkel:
- Több védelmi tényező a végberendezés hamisításának megakadályozására (szigorú felhasználói kötődéssel);
- A felhasználó PC-jének megfelelősége az engedélyezett PC UDID-jához az autentikálási adatbázisban;
- MFA-val, amely a második autentikációhoz a tanúsítványból származó PC UDID-t használja a Cisco DUO-n keresztül (Bármilyen SAML/RADIUS-kompatibilis megoldás is csatlakoztatható);
- Többfaktoros autentikációval:
- Felhasználói tanúsítvány mezőinek ellenőrzésével és az egyikük alapján végzett második autentikációval;
- Felhasználónév (nem módosítható, a tanúsítványból kinyert) és jelszó;
- A csatlakozó host állapotának értékelésével (Posture)
A megoldásban használt összetevők:
- Cisco ASA (VPN átjáró);
- Cisco ISE (Autentikáció / Engedélyezés / Számlázás, Állapotértékelés, CA);
- Cisco DUO (Többfaktoros autentikáció) (Bármilyen SAML/RADIUS-kompatibilis megoldás is csatlakoztatható);
- Cisco AnyConnect (Többcélú ügynök munkaállomásokhoz és mobil operációs rendszerekhez);
Kezdjük a megrendelő követelményeivel:
- A felhasználónak a belépési azonosító/jelszó alapján lehetőséget kell adnia arra, hogy letöltse az AnyConnect klienst a VPN átjáróról, minden szükséges AnyConnect modult automatikusan telepíteni kell a felhasználó politikájának megfelelően;
- A felhasználónak lehetőséget kell biztosítani a tanúsítvány automatikus kiadására (az egyik forgatókönyvhez, a fő forgatókönyv pedig a kézi kiadás és a PC-re való feltöltés), én viszont demonstráció céljából automatikus kiadást valósítottam meg (soha nem késő eltávolítani).
- A fő autentikációnak több lépésben kell zajlania, először a tanúsítvány autentikációja történik a szükséges mezők és azok értékeinek elemzésével, majd a felhasználónév/jelszó következik, de ezúttal a bejelentkezési ablakban a tanúsítvány mezőjében megadott felhasználónevet kell megjeleníteni Subject Name (CN) szerkesztési lehetőség nélkül.
- Biztosítani kell, hogy az a készülék, ahonnan a bejelentkezés történik, az a vállalat által kiadott laptop legyen, amely a felhasználónak távoli hozzáférést biztosít, és nem egyéb eszköz (több megoldás készült ennek a követelménynek a teljesítésére)
- A device condition assessment (at this stage the PC) must be conducted, verifying a comprehensive checklist of the client's requirements (in summary):
- Files and their attributes;
- Registry entries;
- OS patches from the provided list (subsequent integration with SCCM);
- Presence of antivirus from a specific vendor and the relevance of signatures;
- Activity of specific services;
- Presence of specific installed programs;
To begin, I suggest we mandatory watch a video demonstration of the resulting implementation on YouTube (5 minutes).

Now, I suggest we consider the implementation details not covered in the video.
Let's prepare the AnyConnect profile:
I previously provided an example of creating a profile (in terms of the menu item in ASDM) in my article on setting up Now, I want to specifically highlight the options we will need:
In the profile, we will specify the VPN gateway and the profile name for the client connection:

We will configure automatic certificate issuance from the profile, specifying, in particular, the certificate parameters, and notably, we will focus on the field Initials (I), where a specific value has been manually entered UDID of the test machine (Unique Device Identifier, generated by the Cisco AnyConnect client).

Here, I want to make a lyrical digression, as this article describes the concept. For demonstration purposes, the UDID is entered for certificate issuance in the Initials field of the AnyConnect profile. In real life, if you do this, all clients will receive the certificate with the same UDID in this field, and nothing will work for them, since they need the UDID specific to their PCs. Unfortunately, AnyConnect does not yet implement profile substitution for the certificate request in the UDID field through an environment variable, as it does with the variable %USER%.
It is worth noting that the client (in this scenario) initially plans to issue certificates with the specified UDID manually for such Protected PCs, which is not a problem for them. However, for most of us, automation is desirable (well, at least for me =).
És itt van, amit az automatizálás terén fel tudok ajánlani. Ha a tanúsítványt automatikusan, az AnyConnect alkalmazás dinamikusan behelyettesítve az UDID-t, akkor van egy másik módszer is, ami igényel egy kis kreatív gondolkodást és ügyes kezeket – elmondom a koncepciót. Először nézzük meg, hogyan képződik az UDID különböző operációs rendszereken az AnyConnect ügynök által:
- Windows — SHA-256 kombinációs hash a DigitalProductID rendszerregisztrációs kulcs és a Machine SID alapján
- OSX — SHA-256 hash a PlatformUUID alapján
- Linux — SHA-256 hash a root partíció UUID alapján.
- Apple iOS — SHA-256 hash a PlatformUUID alapján
- Android – Nézd meg a dokumentumot a
Ennek megfelelően készítünk egy scriptet a vállalati Windows OS-ekhez, ezzel a scriptel helyben számoljuk ki az UDID-t a megadott bemenetek alapján, és kérelmet készítünk a tanúsítvány kiadására az UDID-t a megfelelő mezőbe beírva, egyébként a gépi tanúsítvány is használható, amit az AD adott (dupla hitelesítést is hozzáadva a tanúsítvány alapján Több Tanúsítvány).
Készítsük el a Cisco ASA oldali beállításokat:
Hozzunk létre egy TrustPoint-ot az ISE CA szerverhez, ez fogja kiadni a tanúsítványokat az ügyfeleknek. A Key-Chain importálás eljárását nem fogom tárgyalni, a példa le van írva a beállításokra vonatkozó cikkemben. .
crypto ca trustpoint ISE-CA
enrollment terminal
crl configureBeállítjuk a Tunnel-Group elosztását a tanúsítványban szereplő mezők alapján történő hitelesítési szabályok szerint. Itt kerül beállításra az AnyConnect profil is, amit az előző lépésben készítettünk. Felhívom a figyelmet, hogy az értéket használom SECUREBANK-RA, a kiadott tanúsítvánnyal rendelkező felhasználók átvitelére a tunnel csoportba. SECURE-BANK-VPN, kérlek, vedd észre, hogy ez a mező nálam a kérés mezőjében van feltüntetve az AnyConnect profilnál.
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
!Beállítjuk a hitelesítési szervereket. Az én esetemben ez ISE az első hitelesítési szakaszhoz, és a DUO (Radius Proxy) mint 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
!Csoportos politikák és tunnel csoportok, valamint kiegészítő komponenseik létrehozása:
Tunnel csoport DefaultWEBVPNGroup Elsődlegesen az AnyConnect VPN kliens letöltésére és a felhasználói tanúsítvány kiadására fogják használni a ASA SCEP-Proxy funkciójával. Ehhez az ehhez szükséges opciók aktiválva vannak mind a tunneling csoportban, mind az ahhoz társított csoportos szabályzatban. AC-Download, valamint az AnyConnect letöltési profilján (tanúsítványkiadási mezők stb.). Ezen a csoportos szabályzaton belül jelezzük, hogy szükséges a letöltés. ISE Posture Module.
Tunnel csoport SECURE-BANK-VPN automatikusan használva lesz a kliens által, amikor a korábban kiadott tanúsítvánnyal történik az azonosítás, mivel a tanúsítványtérkép szerint a kapcsolat pontosan erre a tunneling csoportra épül. Különböző izgalmas opciókról fogok itt beszélni:
- 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
!Tovább lépünk az ISE-hez:
Beállítjuk a helyi felhasználót (használható AD/LDAP/ODBC stb. is), egyszerűség kedvéért én a legjobb megoldást választottam a helyi felhasználó létrehozásával az ISE-ben, és az alábbi mezőben állítottam be: leírás PC UDID amelyről engedélyezve van a VPN-hez való hozzáférés. Ha az ISE-n helyi hitelesítést használok, akkor csak egy eszközre leszek korlátozva, mivel nem sok mező áll rendelkezésemre, de harmadik fél által biztosított hitelesítési adatbázisok esetén nem lesznek ilyen korlátozások.

Nézzük meg a hitelesítési politikát, amely négy lépésre oszlik:
- 1. lépés — Politika az AnyConnect ügynök letöltésére és a tanúsítvány kiadására
- 2. lépés — Elsődleges hitelesítési politika: Bejelentkezés (tanúsítvány alapján)/Jelszó + UDID érvényesítésével
- 3. lépés — Másodlagos hitelesítés a Cisco DUO (MFA) révén, UDID mint felhasználónév + Állapotértékelés
- 4. lépés — Végső hitelesítés állapota:
- Megfelelő;
- UDID érvényesítése (tanúsítványból + bejelentkezéshez való hozzárendelés),
- Cisco DUO MFA;
- Bejelentkezés szerinti hitelesítés;
- Tanúsítvány szerinti hitelesítés;

Nézzük meg az érdekes feltételt UUID_VALIDATED, amely pontosan ellenőrzi, hogy a hitelesítésre váró felhasználó tényleg egy engedélyezett UDID-del rendelkező PC-ről érkezett a mező szerint Leírás a felhasználói fiókjában, a feltétel a következőképpen néz ki:

A 1., 2. és 3. lépéseknél használt hitelesítési profil a következőképpen néz ki:

Megvizsgálhatjuk, hogy pontosan hogyan érkezik a UDID a AnyConnect klienstől, ha megnézzük az ISE klienssession részleteit. A részletekben látni fogjuk, hogy az AnyConnect az ACIDEX mechanizmuson keresztül nemcsak a platform adatait küldi, hanem a készülék UDID-ját is mint Cisco-AV-PAIR:

Figyeljük meg a felhasználónak kiadott tanúsítványt és a mezőt Initials (I), amely arra szolgál, hogy ezt használjuk a Cisco DUO másodlagos hitelesítési MFA bejelentkezésként:

A DUO Radius Proxy oldalán a naplóban világosan látjuk, hogy hogyan történik a hitelesítési kérés, amely UDID-t használ felhasználónévként:

A DUO portál oldaláról egy sikeres hitelesítési eseményt látunk:

A felhasználó tulajdonságaiban látom, hogy van beállítva ALIAS, amelyet a bejelentkezéshez használtam, ráadásul ez a jóváhagyott UDID a bejelentkezési PC-hez:

Ennek eredményeképpen megkaptuk:
- A felhasználó és az eszköz többlépcsős hitelesítése;
- A felhasználói eszköz hamisításának védelme;
- Az eszköz állapotának értékelése;
- Lehetőség a domain gépi tanúsítványának és egyebeknek a megerősítésére;
- Teljes körű védelem a távoli munkahely számára automatikusan telepíthető biztonsági modulokkal;
Cikkek a Cisco VPN sorozatról:
Forrás: habr.com
