Реализация на концепцията за високо защитен отдалечен достъп

Продължавайки серията статии по темата за организацията Remote-Access VPN достъпа не мога да не споделя интересен опит по разгръщане високозащитена конфигурация VPN. Задачата не е тривиална и я постави един клиент (има изобретатели в руските села), но предизвикателството е прието и креативно реализирано. В резултат се получи интересна концепция с следните характеристики:

  1. Няколко фактора за защита от подмяна на крайните устройства (с твърда привързаност към потребителя);
    • Оценка на съответствието на компютъра на потребителя с назначеното UDID на разрешения компютър в базата за удостоверяване;
    • С MFA, използваща UDID на компютъра от сертификата за вторично удостоверяване през Cisco DUO (Може да се свърже всяка SAML/RADIUS съвместима);
  2. Многофакторна аутентификация:
    • Сертификат на потребителя с проверка на полетата и вторично удостоверяване по едно от тях;
    • Логин (незаменяем, взет от сертификата) и парола;
  3. Оценка на състоянието на свързващото се устройство (Posture)

Използвани компоненти на решението:

  • Cisco ASA (VPN шлюз);
  • Cisco ISE (Удостоверяване / Авторизация / Отчетност, Оценка на Състоянието, CA);
  • Cisco DUO (Многофакторна Аутентификация) (Може да се свърже всяка SAML/RADIUS съвместима);
  • Cisco AnyConnect (Многоцелеви агент за работни станции и мобилни ОС);

Да започнем с изискванията на клиента:

  1. Потребителят трябва да има възможност да свали клиента AnyConnect от VPN шлюза, използвайки своята аутентикация Логин/Парола, всички необходими модули AnyConnect трябва автоматично да се инсталират в съответствие с политиката на потребителя;
  2. Потребителят трябва да има възможност за автоматично издаване на сертификат (за един от сценарията, основният сценарий е ръчно издаване и зареждане на компютъра), аз реализирах автовипуск за демонстрация (винаги може да се премахне).
  3. Основната аутентификация трябва да преминава в няколко етапа, първо се извършва удостоверение на сертификата с анализ на необходимите полета и техните стойности, след това логин/парола, но този път в прозореца за логин трябва да се подстави името на потребителя, посочено в полето на сертификата Subject Name (CN) без възможност за редактиране.
  4. Необходимо е да се уверим, че устройството, от което се извършва вход, е издаденото на потребителя за достъп до корпоративния лаптоп и не е нищо друго. (Създадени са няколко варианта, за да се удовлетвори това изискване)
  5. Трябва да се проведе оценка на състоянието на свързващото устройство (на този етап компютъра) с проверка на задълбочен списък с изискванията на клиента (обобщавайки):
    • Файлове и техните свойства;
    • Записи в регистра;
    • Кръпки на ОС от предоставения списък (по-нататъшна интеграция с SCCM);
    • Наличие на антивирус от определен производител и актуалност на сигнатурите;
    • Активност на определени услуги;
    • Наличие на определени инсталирани програми;

Първо предлагам да разгледаме задължително видеодемонстрацията на реализираното на Youtube (5 минути).

Пуснете видеото

Сега предлагам да разгледаме детайлите на реализираното, които не са обхванати във видеото.

Ще подготвим профил AnyConnect:

Пример за създаване на профил (в менюто в ASDM) е споменат в моята статия за настройка на VPN Load-Balancing клъстера.. Сега отделно искам да подчертая опциите, които ще ни трябват:

В профила ще укажем шлюза на VPN и името на профила за свързване на клиентското устройство:

Реализация на концепцията за високо защитен отдалечен достъп

Ще направим настройки за автоматично издаване на сертификат от страна на профила, посочвайки, по-специално, параметрите на сертификата и характерно, ще обърнем внимание на полето Initials (I), където ръчно е въведено конкретно значение UDID на тестовото устройство (Уникален идентификатор на устройството, генериран от клиента Cisco AnyConnect).

Реализация на концепцията за високо защитен отдалечен достъп

Тук искам да направя лирично отклонение, тъй като тази статия описва концепцията; за демонстрационни цели, тук е въведен UDID за издаване на сертификат в полето Initials на профила AnyConnect. Разбира се, в реалния живот, ако направите това, всички клиенти ще получат сертификат с еднакъв UDID в това поле и нищо няма да работи, тъй като те имат нужда от UDID, специфичен за техния компютър. За съжаление, AnyConnect в момента не поддържа замяна на поле UDID в профила за запитване на сертификат през променлива на околната среда, както прави например с променливата %USER%.

Трябва да се отбележи, че клиентът (на този сценарий) първоначално планира самостоятелно да издава сертификати с определен UDID в ръчен режим на такива Защитени компютри, което не представлява проблем за него. Обаче, за повечето от нас, желанието е автоматизация (мина така или иначе =).

И ето, что мога да предложа относно автоматизацията. Ако автоматично е нужно да се издаде сертификат с AnyConnect, динамично заместено с UDID, то съществува и друг начин, за който са необходими малко креативно мислене и сръчни ръце – ще разкажа концепцията. Първо нека да разгледаме как се формира UDID на различни операционни системи от агента AnyConnect:

  • Windows — SHA-256 хеш на комбинацията от ключа в регистъра DigitalProductID и Machine SID
  • OSX — SHA-256 хеш на PlatformUUID
  • Linux — SHA-256 хеш на UUID на кореновия дял.
  • Apple iOS — SHA-256 хеш на PlatformUUID
  • Android – Вижте документа по връзка

Съответно, ще създадем скрипт за нашите корпоративни операционни системи Windows. С този скрипт локално пресмятаме UDID по известни входни данни и формулираме заявка за издаване на сертификат, вписвайки този UDID в необходимото поле; между другото, можем да използваме и машинен сертификат, издаден от AD (добавяйки схема с двустранна аутентификация по сертификат) Множествени сертификати).

Подготвяме настройки от страна на Cisco ASA:

Създаваме TrustPoint за ISE CA сървъра, именно той ще издава сертификати на клиентите. Процедурата по импортиране на Key-Chain няма да обсъждам, примерът е описан в моята статия за настройката VPN Load-Balancing клъстера..

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Настройваме разпределението по Tunnel-Group на база правила в съответствие с полетата в сертификата, който се използва за аутентификация. Също така тук се настройва профилът AnyConnect, съставен от нас на предишния етап. Обърнете внимание, че използвам стойността SECUREBANK-RA, за прехвърляне на потребители с издаден сертификат в тунелната група SECURE-BANK-VPN, имайте предвид, че това поле е зададено в колоната за заявка за сертификат на профила 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
!

Настройваме сървърите за аутентификация. В моя случай това е ISE за първата фаза на аутентификация и DUO (Radius Proxy) като 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
!

Създаваме групови политики и тунелни групи, както и техните помощни компоненти:

Тунелна група DefaultWEBVPNGroup ще се използва основно за изтегляне на клиент за AnyConnect VPN и издаване на потребителски сертификат с използване на функцията SCEP-Proxy на ASA, за което са активирани съответните опции както в самата тунелна група, така и в свързаната групова политика AC-Download, така и в изтегления профил на AnyConnect (полета за издаване на сертификат и т.н.). Освен това в тази групова политика посочваме необходимостта от изтегляне ISE Posture Module.

Тунелна група SECURE-BANK-VPN автоматично ще се използва от клиента при удостоверяване с предоставения сертификат на предишния етап, тъй като в съответствие с Certificate Map, връзката ще бъде поставена именно на тази тунелна група. Ще говоря за интересни опции тук:

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

Следващата стъпка е ISE:

Настройваме локален потребител (може да се използва и AD/LDAP/ODBC и т.н.), за опростяване създадох локален потребител в самото ISE и го назначих в полето описание UDID на компютъра от който му е позволен достъп през VPN. В случай на локална автентикация в ISE, ще бъда ограничен само до едно устройство, тъй като полетата не са много, но в независими бази за автентикация нямам такива ограничения.

Реализация на концепцията за високо защитен отдалечен достъп

Нека да погледнем политиката за авторизация, която е разделена на четири етапа на свързване:

  • Етап 1 — Политика за изтегляне на агента AnyConnect и издаване на сертификат
  • Етап 2 — Политика за първоначална автентикация Логин (от сертификата)/Парола + Сертификат с валидация UDID
  • Етап 3 — Втора автентикация през Cisco DUO (MFA) с UDID като потребителско име + Оценка на състоянието
  • Етап 4 — Крайна авторизация в състояние:
    • Съответстващ;
    • валидация на UDID (от сертификата + свързване с логина),
    • Cisco DUO MFA;
    • Автентикация по логин;
    • Автентикация по сертификат;

Реализация на концепцията за високо защитен отдалечен достъп

Нека да разгледаме интересното условие UUID_VALIDATED, което проверява дали автентикираният потребител наистина е дошъл от компютър с разрешен UDID, асоцииран в полето Описание на потребителската сметка, условията изглеждат така:

Реализация на концепцията за високо защитен отдалечен достъп

Профилът за авторизация, използван на етапи 1, 2 и 3, изглежда по следния начин:

Реализация на концепцията за високо защитен отдалечен достъп

Можем да проверим как точно получаваме UDID от клиента AnyConnect, като погледнем в ISE детайлите на клиентската сесия. В детайлите ще видим, че AnyConnect чрез механизма ACIDEX изпраща не само данни за платформата, но и UDID на устройството като Cisco-AV-PAIR:

Реализация на концепцията за високо защитен отдалечен достъп

Нека обърнем внимание на издадения на потребителя сертификат и полето Initials (I), което се използва, за да го вземем в ролята на логин за втора автентикация MFA на Cisco DUO:

Реализация на концепцията за високо защитен отдалечен достъп

От страна на DUO Radius Proxy в лога ясно виждаме по какъв начин идва заявката за автентикация, тя идва с използване на UDID като потребителско име:

Реализация на концепцията за високо защитен отдалечен достъп

От страна на портала DUO виждаме успешно събитие на автентикация:

Реализация на концепцията за високо защитен отдалечен достъп

И в свойствата на потребителя имам установен ALIAS, който използвах за логин, като това е UDID на разрешения за логин компютър:

Реализация на концепцията за високо защитен отдалечен достъп

В резултат получихме:

  • Многофакторна автентикация на потребителя и устройството;
  • Защита срещу подмяна на устройството на потребителя;
  • Оценка на състоянието на устройството;
  • Потенциал за увеличаване на контрола с машинен сертификат на домейна и т.н.;
  • Комплексна защита на отдаленото работно място с автоматично развиващи се модули за сигурност;

Връзки към статии от серията Cisco VPN:

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster