Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Kontynuując serię artykułów na temat organizacji VPN z dostępem zdalnym dostępu muszę podzielić się interesującym doświadczeniem wdrożenia wysoko zabezpieczonej konfiguracji VPN. Złożone zadanie zaproponował jeden klient (są wynalazcy w rosyjskich wioskach), ale Challenge Accepted i kreatywnie zrealizowane. W rezultacie powstał interesujący koncept z następującymi cechami:

  1. Kilka czynników ochrony przed fałszowaniem urządzenia końcowego (sztywne powiązanie z użytkownikiem);
    • Ocena zgodności komputera użytkownika z przypisanym UDID dozwolonego komputera w bazie autoryzacji;
    • Z MFA, wykorzystującą UDID PC z certyfikatu do wtórnej autoryzacji przez Cisco DUO (Można podłączyć dowolne zgodne z SAML/RADIUS);
  2. Wieloskładnikową autoryzację:
    • Certyfikat użytkownika z weryfikacją pól i wtórną autoryzacją na jednym z nich;
    • Login (niemodyfikowalny, pochodzący z certyfikatu) oraz hasło;
  3. Oceną stanu łączącego się hosta (Postura)

Wykorzystywane komponenty rozwiązania:

  • Cisco ASA (Brama VPN);
  • Cisco ISE (Autoryzacja / Uwierzytelnianie / Księgowość, Ocena Stanu, CA);
  • Cisco DUO (Wieloskładnikowa Autoryzacja) (Można podłączyć dowolne zgodne z SAML/RADIUS);
  • Cisco AnyConnect (wielofunkcyjny agent dla stacji roboczych i mobilnych OS);

Zacznijmy od wymagań klienta:

  1. Użytkownik powinien mieć możliwość pobrania klienta AnyConnect z bramy VPN przy uwierzytelnieniu Login/Hasło, wszystkie niezbędne moduły AnyConnect powinny być automatycznie instalowane zgodnie z polityką użytkownika;
  2. Użytkownik powinien mieć możliwość automatycznej wydania certyfikatu (w jednym ze scenariuszy, główny scenariusz to ręczne wydanie i załadowanie na PC), ja zrealizowałem automatyczną emisję dla demonstracji (zawsze można usunąć później).
  3. Główna autoryzacja powinna przebiegać w kilku etapach, najpierw następuje autoryzacja certyfikatu z analizą wymaganych pól i ich wartości, a następnie login/hasło, tylko tym razem w oknie logowania powinno być podstawiane imię użytkownika wskazane w polu certyfikatu Nazwa podmiotu (CN) bez możliwości edytowania.
  4. Należy upewnić się, że urządzenie, z którego dokonuje się logowania, to laptop korporacyjny wydany użytkownikowi do zdalnego dostępu, a nie cokolwiek innego. (Zrealizowano kilka opcji spełnienia tego wymogu)
  5. Należy przeprowadzić ocenę stanu podłączonego urządzenia (na tym etapie PC) z weryfikacją całej obszernej tabeli wymagań klienta (ogólnie):
    • Pliki i ich właściwości;
    • Rejestry;
    • Łatki systemu operacyjnego z dostarczonej listy (w przyszłości integracja SCCM);
    • Obecność oprogramowania antywirusowego określonego producenta oraz aktualność sygnatur;
    • Aktywność określonych usług;
    • Obecność określonych zainstalowanych programów;

Na początek proponuję obligatoryjnie obejrzeć wideo-demonstrację uzyskanej realizacji na Youtube (5 minut).

Odtwarzaj wideo

Teraz proponuję omówić szczegóły realizacji, które nie zostały poruszone w wideo.

Przygotujemy profil AnyConnect:

Przykład utworzenia profilu (w zakresie menu w ASDM) wcześniej podałem w moim artykule dotyczącym konfiguracji VPN Load-Balancing klastra. Teraz chcę szczególnie podkreślić te opcje, które będą nam potrzebne:

W profilu wskaźnik VPN oraz nazwa profilu do połączenia po stronie klienta:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Przeprowadzimy ustawienia automatycznego wydawania certyfikatu w profilu, określając, w szczególności, parametry certyfikatu i co istotne, zwrócimy uwagę na pole Initials (I), w którym ręcznie wpisane jest konkretne wartości UDID testowej maszyny (Unikalny identyfikator urządzenia, generowany przez klienta Cisco AnyConnect).

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Tutaj chcę zrobić małe dygresję, ponieważ niniejszy artykuł opisuje koncepcję, a dla celów demonstracyjnych tutaj wpisano UDID do wydania certyfikatu w polu Initials profilu AnyConnect. Oczywiście w rzeczywistości, jeśli to zrobicie, wszyscy klienci otrzymają certyfikat z tym samym UDID w tym polu i nic nie zadziała, ponieważ potrzebują UDID konkretnie swojego PC. Niestety, AnyConnect obecnie nie wdraża podstawiania w profilu zapytania o certyfikat w polu UDID przez zmienną środowiskową, jak to robi na przykład z zmienną %USER%.

Warto zaznaczyć, że klient (w tym scenariuszu) początkowo planuje samodzielnie wydawać certyfikaty z ustalonym UDID w trybie ręcznym na takie Zabezpieczone PC, co nie stanowi dla niego problemu. Jednak dla większości z nas potrzebna jest automatyzacja (zresztą dla mnie tak na pewno =).

Oto co mogę zaproponować w zakresie automatyzacji. Jeśli certyfikat AnyConnect nie może być automatycznie wypisany z dynamicznie podstawionym UDID, istnieje inny sposób, który wymaga trochę kreatywności i umiejętnych rąk – przedstawię koncept. Na początek przyjrzyjmy się, jak agent AnyConnect generuje UDID w różnych systemach operacyjnych:

  • Windows — SHA-256 hash kombinacji klucza rejestru DigitalProductID i Machine SID
  • OSX — SHA-256 hash PlatformUUID
  • Linuxa — SHA-256 hash UUID partycji root.
  • Apple iOS — SHA-256 hash PlatformUUID
  • Android – Zobacz dokument dotyczący linkiem

W związku z tym tworzymy skrypt dla naszych korporacyjnych systemów Windows, którego używamy lokalnie do obliczenia UDID na podstawie znanych danych, a następnie formujemy żądanie wydania certyfikatu, wpisując w odpowiednie pole ten UDID, zresztą można też użyć certyfikatu maszyny wydanego przez AD (dodając do schemy podwójną autoryzację przy użyciu certyfikatu Multiple Certificate).

Przygotujemy ustawienia po stronie Cisco ASA:

Utworzymy TrustPoint dla serwera ISE CA, który będzie wydawał certyfikaty klientom. Procedurę importu Key-Chain pominę, przykłady opisane są w moim artykule na temat konfiguracji VPN Load-Balancing klastra.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Konfigurujemy podział według Tunnel-Group na podstawie reguł zgodnych z polami w certyfikacie, przy użyciu którego przeprowadzana jest autoryzacja. Tutaj również konfiguruje się profil AnyConnect, który przygotowaliśmy w poprzednim etapie. Zwracam uwagę, że używam wartości SECUREBANK-RA, do przeniesienia użytkowników z wydanym certyfikatem do grupy tunelowej SECURE-BANK-VPN, zwróć uwagę, że to pole zostało wprowadzone w grafie żądania certyfikatu 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
!

Konfigurujemy serwery autoryzacji. W moim przypadku to ISE jako pierwszy etap autoryzacji oraz DUO (Radius Proxy) jako 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
!

Tworzymy polityki grupowe oraz grupy tunelowe oraz ich pomocnicze komponenty:

Grupa tunelowa DefaultWEBVPNGroup zostanie początkowo użyta do pobrania klienta AnyConnect VPN oraz wydania certyfikatu użytkownika za pomocą funkcji SCEP-Proxy ASA, w tym celu aktywowaliśmy odpowiednie opcje zarówno w samej grupie tunelowej, jak i w powiązanej polityce grupowej Pobierz AC, jak i w pobieranym profilu AnyConnect (pola wydania certyfikatu itp.). W tej polityce grupowej wskazujemy także na konieczność pobrania Moduł ISE Posture.

Grupa tunelowa SECURE-BANK-VPN zostanie automatycznie użyty przez klienta przy autoryzacji za pomocą wydanego certyfikatu w poprzednim etapie, ponieważ zgodnie z mapą certyfikatów, połączenie będzie miało miejsce w tej grupie tunelowej. Opowiem o interesujących opcjach tutaj:

  • grupa serwerów do weryfikacji wtórnej DUO # Задаем вторичную аутентификацию на сервере DUO (Radius Proxy)
  • nazwa użytkownika z certyfikatu CN # Используем для первичной аутентификации поле CN сертификата для наследования логина пользователя
  • wtórna nazwa użytkownika z certyfikatu I # Для вторичной аутентификации на сервере DUO используем имя пользователя, извлеченное и поля Initials (I) сертификата.
  • wypełnij nazwę użytkownika klienta # делаем предзаполненным имя пользователя в окне аутентификации без возможности изменения
  • wtórne wypełnienie nazwy użytkownika klienta ukryj używane-wspólne-hasło push # Прячем окно ввода логина/пароля для вторичной аутентификации DUO и используем для запроса аутентификации вместо поля пароля метод уведомления (sms/push/phone) – дока tutaj

!
lista-dostępu posture-redirect rozszerzona zezwól tcp wszelkie host 72.163.1.80 
lista-dostępu posture-redirect rozszerzona zabroń ip wszelkie wszelkie
!
lista-dostępu VPN-Filter rozszerzona zezwól ip wszelkie wszelkie
!
pula lokalna vpn-pool 192.168.100.33-192.168.100.63 maska 255.255.255.224
!
polityka-grupowa SECURE-BANK-VPN wewnętrzna
polityka-grupowa SECURE-BANK-VPN atrybuty
 serwer-dns wartość 192.168.99.155 192.168.99.130
 vpn-filter wartość VPN-Filter
 protokół-tunelu vpn ssl-client 
 polityka-split-tunnel tunnelall
 wartość-default-domain ashes.cc
 pule-adresowe wartość vpn-pool
 webvpn
  anyconnect ssl dtls włącz
  anyconnect mtu 1300
  anyconnect keep-installer zainstalowany
  anyconnect ssl keepalive 20
  anyconnect ssl rekey czas brak
  anyconnect ssl rekey metoda ssl
  anyconnect dpd-interval klient 30
  anyconnect dpd-interval brama 30
  anyconnect ssl kompresja lzs
  anyconnect dtls kompresja lzs
  anyconnect moduły wartość iseposture
  anyconnect profile wartość SECUREBANK typ użytkownika
!
polityka-grupowa AC-DOWNLOAD wewnętrzna
polityka-grupowa AC-DOWNLOAD atrybuty
 serwer-dns wartość 192.168.99.155 192.168.99.130
 vpn-filter wartość VPN-Filter
 protokół-tunelu vpn ssl-client 
 polityka-split-tunnel tunnelall
 wartość-default-domain ashes.cc
 pule-adresowe wartość vpn-pool
 adres-scep-forwarding-url wartość http://ise.ashes.cc:9090/auth/caservice/pkiclient.exe
 webvpn
  anyconnect ssl dtls włącz
  anyconnect mtu 1300
  anyconnect keep-installer zainstalowany
  anyconnect ssl keepalive 20
  anyconnect ssl rekey czas brak
  anyconnect ssl rekey metoda ssl
  anyconnect dpd-interval klient 30
  anyconnect dpd-interval brama 30
  anyconnect ssl kompresja lzs
  anyconnect dtls kompresja lzs
  anyconnect moduły wartość iseposture
  anyconnect profile wartość SECUREBANK typ użytkownika
!
grupy-tunelowe DefaultWEBVPNGroup atrybuty ogólne
 pula-adresów vpn-pool
 grupa-serwerów-do-autoryzacji ISE
 grupa-serwerów-do-rachunkowości ISE
 domyślna-polityka-grupowa AC-DOWNLOAD
 włączenie-scep-kwalifikowane
grupy-tunelowe DefaultWEBVPNGroup atrybuty webvpn
 uwierzytelnienie aaa certyfikat
!
grupy-tunelowe SECURE-BANK-VPN typ zdalny-dostęp
grupy-tunelowe SECURE-BANK-VPN atrybuty ogólne
 pula-adresów vpn-pool
 grupa-serwerów-do-autoryzacji ISE
 wtórna-grupa-serwerów-do-autoryzacji DUO
 grupa-serwerów-do-rachunkowości ISE
 domyślna-polityka-grupowa SECURE-BANK-VPN
 nazwa-użytkownika-z-certyfikatu CN
 wtórna-nazwa-użytkownika-z-certyfikatu I
grupy-tunelowe SECURE-BANK-VPN atrybuty webvpn
 uwierzytelnienie aaa certyfikat
 wypełnij-nazwę-użytkownika klienta
 wtórne-wypełnienie-nazwy-użytkownika klienta ukryj używane-wspólne-hasło push
 alias-grupy SECURE-BANK-VPN włącz
 grupa-dns ASHES-DNS
!

Przechodzimy teraz do ISE:

Konfigurujemy lokalnego użytkownika (można używać również AD/LDAP/ODBC itd.), dla uproszczenia utworzyłem lokalnego użytkownika w samym ISE i przypisałem w polu opis UDID PC z którego zezwolono mu na dostęp przez VPN. W przypadku używania lokalnej autoryzacji w ISE będę ograniczony tylko do jednego urządzenia, ponieważ nie ma zbyt wielu pól, jednak w zewnętrznych bazach autoryzacyjnych nie będzie takich ograniczeń.

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Przyjrzymy się polityce autoryzacji, która jest podzielona na cztery etapy połączenia:

  • Etap 1 — Polityka pobierania agenta AnyConnect i wydania certyfikatu
  • Etap 2 — Polityka wstępnej autoryzacji Logowanie (z certyfikatu)/Hasło + Certyfikat z walidacją UDID
  • Etap 3 — Autoryzacja wtórna przez Cisco DUO (MFA) na podstawie UDID jako nazwy użytkownika + Ocena stanu
  • Etap 4 — Ostateczna autoryzacja w stanie:
    • Zgodny;
    • walidacja UDID (z certyfikatu + powiązanie z logowaniem),
    • Cisco DUO MFA;
    • Autoryzacja na podstawie logowania;
    • Autoryzacja za pomocą certyfikatu;

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Przyjrzymy się interesującemu warunkowi UUID_VALIDATED, który sprawdza, czy użytkownik autoryzowany rzeczywiście należy do komputera z dozwolonym UDID powiązanym w polu Opis konta użytkownika; warunki te wyglądają następująco:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Profil autoryzacji używany na etapach 1, 2, 3 wygląda następująco:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Możemy sprawdzić, jak dokładnie UDID jest przekazywany od klienta AnyConnect poprzez sprawdzenie szczegółów sesji klienta w ISE. W szczegółach zobaczymy, że AnyConnect poprzez mechanizm ACIDEX przesyła nie tylko dane o platformie, ale również UDID urządzenia jako Cisco-AV-PAIR:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Zwróćmy uwagę na wydany użytkownikowi certyfikat i pole Initials (I), które jest używane do wzięcia go jako logina do wtórnej autoryzacji MFA w Cisco DUO:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Po stronie DUO Radius Proxy w logach wyraźnie widzimy, w jaki sposób przebiega zapytanie o autoryzację, jest ono wysyłane z użyciem UDID jako nazwy użytkownika:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

Na portalu DUO widzimy pomyślną autoryzację:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

A w właściwościach użytkownika mam ustawione ALIAS, który wykorzystałem do logowania, jest to właśnie UDID dozwolonego do logowania PC:

Wdrażanie koncepcji wysoko zabezpieczonego dostępu zdalnego

W rezultacie otrzymaliśmy:

  • Wielofaktorową autoryzację użytkownika i urządzenia;
  • Ochrona przed podmianą urządzenia użytkownika;
  • Ocena stanu urządzenia;
  • Potencjał do wzmocnienia kontroli z certyfikatem maszyny w domenie itd.;
  • Złożona ochrona zdalnego miejsca pracy z automatycznie wdrażanymi modułami bezpieczeństwa;

Linki do artykułów z serii Cisco VPN:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster