Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Kontynuacja cyklu artykułów na temat organizacji VPN dostępu zdalnego dostępu Nie mogę powstrzymać się od podzielenia się moimi ciekawymi doświadczeniami z wdrażania wysoce bezpieczna konfiguracja VPN. Nietrywialne zadanie postawił jeden z klientów (w rosyjskich wioskach są wynalazcy), ale Wyzwanie zostało przyjęte i twórczo zrealizowane. Rezultatem jest interesująca koncepcja o następujących cechach:

  1. Kilka czynników zabezpieczających przed wymianą urządzenia końcowego (ściśle wiążących dla użytkownika);
    • Ocena zgodności komputera użytkownika z przypisanym identyfikatorem UDID dozwolonego komputera w bazie danych uwierzytelniających;
    • W przypadku usługi MFA przy użyciu identyfikatora UDID komputera z certyfikatu do dodatkowego uwierzytelnienia za pośrednictwem Cisco DUO (Możesz dołączyć dowolny kompatybilny SAML/Radius);
  2. Uwierzytelnianie wieloskładnikowe:
    • Certyfikat użytkownika z weryfikacją terenową i uwierzytelnieniem wtórnym względem jednego z nich;
    • Login (niezmienny, pobrany z certyfikatu) i hasło;
  3. Szacowanie stanu łączącego się hosta (postawa)

Wykorzystane komponenty rozwiązania:

  • Cisco ASA (bramka VPN);
  • Cisco ISE (uwierzytelnianie / autoryzacja / księgowość, ocena stanu, Kalifornia);
  • Cisco DUO (uwierzytelnianie wieloskładnikowe) (Możesz dołączyć dowolny kompatybilny SAML/Radius);
  • Cisco AnyConnect (wielofunkcyjny agent dla stacji roboczych i mobilnego systemu operacyjnego);

Zacznijmy od wymagań klienta:

  1. Użytkownik musi, poprzez uwierzytelnienie za pomocą loginu/hasła, mieć możliwość pobrania klienta AnyConnect z bramy VPN; wszystkie niezbędne moduły AnyConnect muszą zostać zainstalowane automatycznie zgodnie z polityką użytkownika;
  2. Użytkownik powinien mieć możliwość automatycznego wystawienia certyfikatu (w jednym ze scenariuszy głównym scenariuszem jest ręczne wystawienie i przesłanie na komputer), ale zaimplementowałem automatyczne wystawianie certyfikatu na potrzeby demonstracji (nigdy nie jest za późno, aby go usunąć).
  3. Uwierzytelnienie podstawowe musi odbyć się w kilku etapach, najpierw następuje uwierzytelnienie certyfikatem z analizą niezbędnych pól i ich wartości, następnie login/hasło, tylko tym razem w oknie logowania należy wstawić nazwę użytkownika podaną w polu certyfikatu Nazwa podmiotu (CN) bez możliwości edycji.
  4. Musisz mieć pewność, że urządzeniem, z którego się logujesz, jest laptop firmowy wydany użytkownikowi w celu zdalnego dostępu, a nie coś innego. (W celu spełnienia tego wymogu wprowadzono kilka opcji)
  5. Stan podłączanego urządzenia (na tym etapie PC) należy ocenić sprawdzając całą pokaźną tabelę wymagań klienta (podsumowując):
    • Pliki i ich właściwości;
    • Wpisy do rejestru;
    • Poprawki systemu operacyjnego z dostarczonej listy (później integracja z SCCM);
    • Dostępność programu antywirusowego od konkretnego producenta i znaczenie podpisów;
    • Działalność niektórych usług;
    • Dostępność niektórych zainstalowanych programów;

Na początek sugeruję, abyś zdecydowanie obejrzał demonstrację wideo powstałej implementacji Youtube (5 minut).

Teraz proponuję rozważyć szczegóły wdrożenia, które nie są ujęte w klipie wideo.

Przygotujmy profil AnyConnect:

Przykład tworzenia profilu (w zakresie pozycji menu w ASDM) podałem wcześniej w moim artykule na temat ustawień Klaster równoważący obciążenie VPN. Teraz chciałbym osobno zwrócić uwagę na opcje, których będziemy potrzebować:

W profilu wskażemy bramę VPN i nazwę profilu do połączenia z klientem końcowym:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Skonfigurujmy automatyczne wydawanie certyfikatu od strony profilu, wskazując w szczególności parametry certyfikatu i co charakterystyczne, zwróćmy uwagę na pole Inicjały (I), gdzie określona wartość jest wprowadzana ręcznie ZROBIŁEŚ maszyna testowa (unikalny identyfikator urządzenia generowany przez klienta Cisco AnyConnect).

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Tutaj chcę dokonać lirycznej dygresji, ponieważ w tym artykule opisano tę koncepcję, w celach demonstracyjnych identyfikator UDID do wystawienia certyfikatu wpisuje się w polu Inicjały profilu AnyConnect. Oczywiście, jeśli to zrobisz, w prawdziwym życiu wszyscy klienci otrzymają certyfikat z tym samym identyfikatorem UDID w tym polu i nic nie będzie dla nich działać, ponieważ potrzebują identyfikatora UDID swojego konkretnego komputera. AnyConnect niestety nie implementuje jeszcze podstawienia pola UDID do profilu żądania certyfikatu poprzez zmienną środowiskową, tak jak ma to miejsce na przykład ze zmienną %UŻYTKOWNIK%.

Warto zaznaczyć, że Klient (w tym scenariuszu) początkowo planuje samodzielnie wystawiać certyfikaty o podanym UDID w trybie ręcznym do takich Chronionych PC, co nie stanowi dla niego problemu. Jednak dla większości z nas chcemy automatyzacji (cóż, dla mnie to prawda =)).

I to właśnie mogę zaoferować w zakresie automatyzacji. Jeśli AnyConnect nie jest jeszcze w stanie automatycznie wystawić certyfikatu, dynamicznie zastępując UDID, istnieje inny sposób, który będzie wymagał odrobiny kreatywnego myślenia i zręcznych rąk - opowiem ci o koncepcji. Najpierw przyjrzyjmy się, jak identyfikator UDID jest generowany w różnych systemach operacyjnych przez agenta AnyConnect:

  • Windows — SHA-256 będący kombinacją klucza rejestru DigitalProductID i Machine SID
  • OSX — UUID platformy skrótu SHA-256
  • Linux — Hash SHA-256 identyfikatora UUID partycji głównej.
  • apple iOS — UUID platformy skrótu SHA-256
  • Android – Patrz dokument dot powiązanie

W związku z tym tworzymy skrypt dla naszego korporacyjnego systemu operacyjnego Windows, za pomocą tego skryptu lokalnie obliczamy UDID przy użyciu znanych danych wejściowych i tworzymy żądanie wystawienia certyfikatu, wpisując ten UDID w wymaganym polu, nawiasem mówiąc, możesz także użyć maszyny certyfikat wystawiony przez AD (poprzez dodanie do schematu podwójnego uwierzytelnienia przy użyciu certyfikatu Certyfikat wielokrotny).

Przygotujmy ustawienia po stronie Cisco ASA:

Stwórzmy TrustPoint dla serwera ISE CA, to on będzie wystawiał klientom certyfikaty. Nie będę rozważał procedury importu Key-Chain; przykład opisano w moim artykule na temat konfiguracji Klaster równoważący obciążenie VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Konfigurujemy dystrybucję przez Tunnel-Group w oparciu o reguły zgodne z polami w certyfikacie, który służy do uwierzytelnienia. Tutaj konfigurowany jest również profil AnyConnect, który utworzyliśmy na poprzednim etapie. Pamiętaj, że używam wartości SECUREBANK-RA, aby przenieść użytkowników z wystawionym certyfikatem do grupy tuneli BEZPIECZNY BANK-VPN, pamiętaj, że mam to pole w kolumnie żą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
!

Konfigurowanie serwerów uwierzytelniających. W moim przypadku jest to ISE dla pierwszego etapu uwierzytelniania 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 i grupy tunelowe oraz ich komponenty pomocnicze:

Grupa tunelowa Domyślna grupa WEBVPN będzie używany przede wszystkim do pobierania klienta AnyConnect VPN i wydawania certyfikatu użytkownika za pomocą funkcji SCEP-Proxy ASA; w tym celu mamy aktywowane odpowiednie opcje zarówno w samej grupie tuneli, jak i w powiązanej polityce grupowej Pobierz ACoraz na załadowanym profilu AnyConnect (pola do wystawienia certyfikatu itp.). Również w tej polityce grupowej wskazujemy potrzebę pobrania Moduł postawy ISE.

Grupa tunelowa BEZPIECZNY BANK-VPN zostanie automatycznie wykorzystany przez Klienta podczas uwierzytelniania wystawionym certyfikatem na poprzednim etapie, ponieważ zgodnie z Mapą Certyfikatów połączenie będzie przypadało właśnie na tę grupę tuneli. O ciekawych opcjach opowiem tutaj:

  • grupa serwerów dodatkowego uwierzytelniania DUO # Ustaw uwierzytelnienie wtórne na serwerze DUO (Radius Proxy)
  • nazwa użytkownika z certyfikatuCN # W przypadku uwierzytelnienia podstawowego używamy pola CN certyfikatu w celu dziedziczenia loginu użytkownika
  • dodatkowa nazwa użytkownika z certyfikatu I # Do wtórnego uwierzytelnienia na serwerze DUO używamy wyodrębnionej nazwy użytkownika i pól Inicjały (I) certyfikatu.
  • Klient wstępnie wypełniający nazwę użytkownika # wprowadź nazwę użytkownika w oknie uwierzytelniania bez możliwości jej zmiany
  • klient-wstępnie-uzupełnij nazwę użytkownika, ukryj użycie-wspólnego-hasła Push # Ukrywamy okno wprowadzania loginu/hasła dla dodatkowego uwierzytelnienia DUO i korzystamy z metody powiadamiania (sms/push/telefon) - zadokuj, aby poprosić o uwierzytelnienie zamiast pola hasła tutaj

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

Następnie przechodzimy do ISE:

Konfigurujemy użytkownika lokalnego (można użyć AD/LDAP/ODBC itp.), dla uproszczenia utworzyłem użytkownika lokalnego w samym ISE i przypisałem go w polu opis Komputer UDID z którego może logować się poprzez VPN. Jeśli użyję uwierzytelniania lokalnego na ISE, będę ograniczony tylko do jednego urządzenia, ponieważ pól nie jest zbyt wiele, ale w bazach danych uwierzytelniających stron trzecich nie będę miał takich ograniczeń.

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Przyjrzyjmy się polityce autoryzacji, jest ona podzielona na cztery etapy połączenia:

  • Krok 1 — Zasady pobierania agenta AnyConnect i wydawania certyfikatu
  • Krok 2 — Podstawowa polityka uwierzytelniania Login (z certyfikatu)/Hasło + Certyfikat z walidacją UDID
  • Krok 3 — Uwierzytelnianie wtórne za pośrednictwem Cisco DUO (MFA) przy użyciu identyfikatora UDID jako nazwy użytkownika + ocena stanu
  • Krok 4 — Ostateczna autoryzacja jest w stanie:
    • Zgodny;
    • Walidacja UDID (z certyfikatu + powiązanie logowania),
    • MSZ Cisco DUO;
    • Uwierzytelnianie poprzez logowanie;
    • Uwierzytelnianie certyfikatu;

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Przyjrzyjmy się interesującemu stanowi UUID_VALIDATED, wygląda na to, że uwierzytelniający użytkownik faktycznie pochodził z komputera PC z dozwolonym identyfikatorem UDID powiązanym w tym polu Opis koncie warunki wyglądają następująco:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Profil uprawnień stosowany na etapach 1,2,3 jest następujący:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Możesz dokładnie sprawdzić, w jaki sposób identyfikator UDID z klienta AnyConnect dociera do nas, przeglądając szczegóły sesji klienta w ISE. Szczegółowo zobaczymy, że AnyConnect poprzez mechanizm KWAS wysyła nie tylko informacje o platformie, ale także UDID urządzenia jako Cisco-AV-PAIR:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Zwróćmy uwagę na certyfikat wydany użytkownikowi i na polu Inicjały (I), który jest używany jako login do dodatkowego uwierzytelnienia MFA w Cisco DUO:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Po stronie DUO Radius Proxy w dzienniku możemy wyraźnie zobaczyć, w jaki sposób realizowane jest żądanie uwierzytelnienia, przy użyciu UDID jako nazwy użytkownika:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Z portalu DUO widzimy pomyślne zdarzenie uwierzytelnienia:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

We właściwościach użytkownika mam to ustawione ALIAS, którego użyłem do logowania, to z kolei UDID komputera, na którym można się logować:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

W rezultacie otrzymaliśmy:

  • Wieloskładnikowe uwierzytelnianie użytkowników i urządzeń;
  • Ochrona przed fałszowaniem urządzenia użytkownika;
  • Ocena stanu urządzenia;
  • Potencjał zwiększonej kontroli dzięki certyfikatowi komputera domeny itp.;
  • Kompleksowa ochrona zdalnego miejsca pracy z automatycznie wdrażanymi modułami bezpieczeństwa;

Linki do artykułów z serii Cisco VPN:

Źródło: www.habr.com

Dodaj komentarz