Рэалізацыя канцэпцыі высокаабароненага выдаленага доступу

Працягваючы серыю артыкулам па тэме арганізацыі Remote-Access VPN доступу не магу не падзяліцца цікавым вопытам разгортвання высокаабароненай канфігурацыі VPN. Задачу нетрывіяльную падкінуў адзін заказчык (ёсць выдумшчыкі ў Рускіх паселішчах), але Challenge Accepted і творча рэалізаваны. У выніку атрымаўся цікавы канцэпт са наступнымі характарыстыкамі:

  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 у ручным рэжыме на такія Абароненыя ПК, што не з'яўляецца для яго нейкай праблемай. Аднак для большасці з нас жадаецца аўтаматызацыі (ну для мяне так сапраўды=) ).

І вось што я магу прапанаваць у плане аўтаматызацыі. Калі выпісаць сертыфікат аўтаматычна AnyСonnect дынамічна падставіўшы UDID пакуль не ў стане, гэта значыць і іншы спосаб, які запатрабуе трохі творчай думкі і ўмелых рук - распавяду канцэпцыю. Для пачатку давайце разгледзім, як фармуецца UDID на розных аперацыйных сістэмах агентам AnyConnect:

  • Windows - SHA-256 хэш камбінацыі ключа рэестра DigitalProductID і Machine SID
  • OSX - SHA-256 хэш PlatformUUID
  • Linux - SHA-256 хэш UUID root партіціі.
  • Apple, IOS - SHA-256 хэш PlatformUUID
  • Android - Глядзі дакумент па спасылцы

Адпаведна вырабляем скрыпт для нашых карпаратыўных АС Windows, гэтым скрыптам лакальна вылічаем UDID па вядомых уступных і фармуем запыт на выдачу сертыфіката упісваючы ў патрэбнае поле гэты UDID, дарэчы можна і машыннага сертыфіката, выдадзенага AD (дадаўшы ў схему падвойную аўтэнтыку Multiple Certificate).

Падрыхтуем наладкі з боку 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.

Тунэльная група 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 бачым удалую падзею аўтэнтыфікацыі:

Рэалізацыя канцэпцыі высокаабароненага выдаленага доступу

І ва ўласцівасцях карыстальніка ў мяне ўсталяваны ПСЕВЕМІІ, які я і выкарыстоўваў для лагіна, у сваю чаргу гэта і ёсць UDID дазволенага для лагіна ПК:

Рэалізацыя канцэпцыі высокаабароненага выдаленага доступу

У выніку мы атрымалі:

  • Шматфактарную аўтэнтыфікацыю карыстальніка і прылады;
  • Абарону ад падмены прылады карыстальніка;
  • Ацэнку стану прылады;
  • Патэнцыял на ўзмацненне кантролю з машынным сертыфікатам дамена і г.д.;
  • Комплексную абарону выдаленага працоўнага месца з аўтаматычна разгортваемымі модулямі бяспекі;

Спасылкі на артыкулы серыі Cisco VPN:

Крыніца: habr.com

Дадаць каментар