Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Kontynuacja cyklu artykułów na temat organizacji VPN dostępu zdalnego Nie mogę się powstrzymać od podzielenia się ciekawym doświadczeniem z wdrożenia wysoce bezpieczna konfiguracja VPN. Nietrywialne zadanie zostało rzucone przez jednego klienta (w rosyjskich wioskach są wynalazcy), ale wyzwanie zostało przyjęte i kreatywnie zrealizowane. W rezultacie uzyskano interesującą koncepcję o następujących cechach:

  1. Kilka czynników zabezpieczających przed podmianą urządzenia końcowego (ze sztywnym powiązaniem z użytkownikiem);
    • Ocena zgodności komputera użytkownika z przydzielonym identyfikatorem UDID uprawnionego komputera w bazie danych uwierzytelniania;
    • Z MFA przy użyciu UDID komputera z certyfikatu do uwierzytelniania wtórnego przez Cisco DUO (Możesz dołączyć dowolny zgodny z SAML/Radius);
  2. Uwierzytelnianie wieloskładnikowe:
    • Certyfikat użytkownika z weryfikacją terenową i uwierzytelnianiem wtórnym dla jednego z nich;
    • Login (niezmienny, pobrany z certyfikatu) i hasło;
  3. Ocena stanu łączącego się hosta (Postawa)

Zastosowane komponenty rozwiązania:

  • Cisco ASA (bramka VPN);
  • Cisco ISE (uwierzytelnianie/autoryzacja/księgowość, ocena postawy, CA);
  • Cisco DUO (uwierzytelnianie wieloskładnikowe) (Możesz dołączyć dowolny zgodny z SAML/Radius);
  • Cisco AnyConnect (wielofunkcyjny agent dla stacji roboczych i mobilnych systemów operacyjnych);

Zacznijmy od wymagań klienta:

  1. Użytkownik musi mieć możliwość pobrania klienta AnyConnect z bramy VPN, korzystając z uwierzytelniania za pomocą swojego loginu i hasła; wszystkie niezbędne moduły AnyConnect muszą zostać automatycznie zainstalowane 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 wdrożyłem automatyczne wydawanie na potrzeby demonstracji (nigdy nie jest za późno, aby usunąć).
  3. Główne uwierzytelnianie musi odbywać się w kilku etapach, najpierw uwierzytelnianie certyfikatu z analizą niezbędnych pól i ich wartości, następnie login/hasło, tylko tym razem nazwa użytkownika podana w polu certyfikatu musi zostać podstawiona w oknie logowania Nazwa podmiotu (CN) bez możliwości edycji.
  4. Należy upewnić się, że urządzenie, z którego następuje logowanie, jest firmowym laptopem wydanym użytkownikowi do zdalnego dostępu, a nie czymś innym. (Aby spełnić ten wymóg, przygotowano kilka opcji)
  5. Należy dokonać oceny stanu urządzenia łączącego (na tym etapie komputera PC), sprawdzając całą obszerną tabelę wymagań klienta (podsumowując):
    • Pliki i ich właściwości;
    • Wpisy do rejestru;
    • Poprawki systemu operacyjnego z dostarczonej listy (dalsza integracja z SCCM);
    • Dostępność oprogramowania antywirusowego od konkretnego producenta i trafność sygnatur;
    • Działalność niektórych usług;
    • Obecność niektórych zainstalowanych programów;

Na początek proponuję obejrzeć prezentację wideo przedstawiającą powstałą implementację pod adresem Youtube (5 minut).

Odtwarzanie wideo

Teraz proponuję omówić szczegóły implementacji, których nie uwzględniono w filmie.

Przygotujmy profil AnyConnect:

Przykład tworzenia profilu (w kontekście elementu menu w ASDM) podałem już wcześniej w moim artykule na temat konfiguracji Równoważenie obciążenia klastra VPN. Teraz chciałbym osobno zanotować opcje, których będziemy potrzebować:

W profilu podajemy bramę VPN i nazwę profilu dla połączenia po stronie klienta końcowego:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

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

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Tutaj chcę zrobić dygresję liryczną, ponieważ ten artykuł opisuje koncepcję, w celach demonstracyjnych wypełniam tutaj UDID do wydania certyfikatu w polu Inicjały profilu AnyConnect. Oczywiście w rzeczywistości, jeśli to zrobisz, wszyscy klienci otrzymają certyfikat z tym samym UDID w tym polu i nic nie zadziała dla nich, ponieważ potrzebują UDID swojego konkretnego komputera. Niestety, AnyConnect nie implementuje jeszcze substytucji pola UDID w profilu żądania certyfikatu za pomocą zmiennej środowiskowej, jak to robi ze zmienną, na przykład %UŻYTKOWNIK%.

Warto zauważyć, że klient (w tym scenariuszu) początkowo planuje ręcznie wydawać certyfikaty z danym UDID takim chronionym komputerom, co nie stanowi dla niego problemu. Jednak dla większości z nas pożądana jest automatyzacja (cóż, dla mnie to prawda =)).

A oto, co mogę zaoferować w zakresie automatyzacji. Jeśli AnyConnect nie jest jeszcze w stanie automatycznie wystawić certyfikatu poprzez dynamiczne podstawianie UDID, istnieje inny sposób, który będzie wymagał odrobiny kreatywnej myśli i zręcznych rąk - opowiem ci o koncepcji. Najpierw przyjrzyjmy się, jak UDID jest tworzony w różnych systemach operacyjnych przez agenta AnyConnect:

  • Windows — Skrót SHA-256 kombinacji klucza rejestru DigitalProductID i identyfikatora SID maszyny
  • OSX — skrót SHA-256 PlatformUUID
  • Linux — Skrót SHA-256 identyfikatora UUID partycji głównej.
  • apple iOS — skrót SHA-256 PlatformUUID
  • Android - Spójrz na dokument powiązanie

W związku z tym tworzymy skrypt dla naszych korporacyjnych systemów operacyjnych. WindowsZa pomocą tego skryptu lokalnie obliczamy UDID na podstawie znanych danych wejściowych i generujemy żądanie wydania certyfikatu poprzez wpisanie tego UDID w wymaganym polu. Można również użyć certyfikatu maszyny wydanego przez AD (dodając do schematu podwójne uwierzytelnianie za pomocą certyfikatu). Certyfikat wielokrotny).

Przygotujmy ustawienia po stronie Cisco ASA:

Utwórzmy TrustPoint dla serwera ISE CA, który będzie wystawiał certyfikaty klientom. Nie będę rozważał procedury importu Key-Chain, przykład jest opisany w moim artykule na temat konfiguracji Równoważenie obciążenia klastra VPN.

crypto ca trustpoint ISE-CA
 enrollment terminal
 crl configure

Konfigurujemy dystrybucję według Tunnel-Group na podstawie reguł zgodnych z polami w certyfikacie, który jest używany do uwierzytelniania. Również tutaj konfigurujemy profil AnyConnect, który utworzyliśmy w poprzednim kroku. Należy zauważyć, że używam wartości SECUREBANK-RA, aby przenieść użytkowników z wydanym certyfikatem do grupy tunelowej BEZPIECZNY-BANK-VPN, proszę zwrócić uwagę, że to pole mam ustawione 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
!

Skonfiguruj serwery uwierzytelniania. W moim przypadku jest to ISE na pierwszym etapie uwierzytelniania i 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 zasady grupowe i grupy tunelowe oraz ich komponenty pomocnicze:

Grupa tunelowa Domyślna grupa WEBVPN będzie używany głównie do pobierania klienta AnyConnect VPN i wystawiania certyfikatu użytkownika przy użyciu funkcji SCEP-Proxy urządzenia ASA, w tym celu aktywowaliśmy odpowiednie opcje zarówno w samej grupie tunelowej, jak i w skojarzonej polityce grupy AC-Pobierz, jak również na pobranym profilu AnyConnect (pola wydania certyfikatu itp.). Również w tej polityce grupy wskazujemy na potrzebę pobrania Moduł postawy ISE.

Grupa tunelowa BEZPIECZNY-BANK-VPN będzie automatycznie używany przez klienta podczas uwierzytelniania certyfikatem wydanym w poprzednim kroku, ponieważ zgodnie z Mapą certyfikatów połączenie trafi do tej grupy tuneli. Opowiem tutaj o ciekawych opcjach:

  • serwer-uwierzytelniania-pomocniczego-grupa-DUO # Skonfiguruj uwierzytelnianie pomocnicze na serwerze DUO (serwer proxy Radius)
  • nazwa-użytkownika-z-certyfikatu CN # Użyj pola CN certyfikatu do uwierzytelniania podstawowego, aby odziedziczyć login użytkownika
  • drugorzędna-nazwa-użytkownika-z-certyfikatu I # W przypadku uwierzytelniania wtórnego na serwerze DUO używamy nazwy użytkownika wyodrębnionej z pól Inicjały (I) certyfikatu.
  • klient z wstępnie wypełnioną nazwą użytkownika # ustaw nazwę użytkownika jako wstępnie wypełnioną w oknie uwierzytelniania bez możliwości jej zmiany
  • wtórny-wstępny-wypełnij-nazwę-użytkownika klient ukryj użyj-wspólnego-hasła push # Ukryj okno wprowadzania loginu/hasła w celu uwierzytelnienia wtórnego DUO i użyj metody powiadomienia (SMS/push/telefon), aby poprosić o uwierzytelnienie zamiast pola hasła – doc 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:

Utworzyliśmy użytkownika lokalnego (możesz 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 się logować przez VPN. W przypadku korzystania z uwierzytelniania lokalnego na ISE będę ograniczony tylko do jednego urządzenia, ponieważ nie ma tak wielu pól, ale w bazach danych uwierzytelniania 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) według UDID jako nazwy użytkownika + ocena statusu
  • Krok 4 — Ostateczna autoryzacja w państwie:
    • Zgodny;
    • Walidacja UDID (od certyfikatu + powiązanie z loginem),
    • Cisco DUO MFA;
    • Uwierzytelnianie poprzez logowanie;
    • Uwierzytelnianie certyfikatem;

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Przyjrzyjmy się ciekawej sytuacji UUID_ZATWIERDZONY, wygląda na to, że użytkownik uwierzytelniający faktycznie pochodzi z komputera z dozwolonym identyfikatorem UDID skojarzonym w tym polu OPIS konto, warunki wyglądają następująco:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

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

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Możesz sprawdzić, jak dokładnie otrzymujemy UDID od klienta AnyConnect, przeglądając szczegóły sesji klienta w ISE. Szczegółowo zobaczymy, że AnyConnect poprzez mechanizm Kwasowy wysyła nie tylko dane o platformie, ale także UDID urządzenia jako Para Cisco AV:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Zwróćmy uwagę na certyfikat wydany użytkownikowi i pole Inicjały (I), który jest używany do traktowania go jako loginu do uwierzytelniania MFA w systemie Cisco DUO:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Po stronie DUO Radius Proxy w logu wyraźnie widać, w jaki sposób wysyłane jest żądanie uwierzytelnienia. Jest ono wysyłane przy użyciu UDID jako nazwy użytkownika:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

Z poziomu portalu DUO widzimy pomyślne zdarzenie uwierzytelniania:

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

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

Wdrożenie koncepcji wysoce bezpiecznego zdalnego dostępu

W rezultacie otrzymaliśmy:

  • Wieloskładnikowe uwierzytelnianie użytkownika i urządzenia;
  • Ochrona przed podmianą urządzenia użytkownika;
  • Ocena stanu urządzenia;
  • Możliwość zwiększenia kontroli nad certyfikatem domeny maszyny itp.;
  • Kompleksowa ochrona zdalnego miejsca pracy dzięki automatycznie wdrażanym modułom bezpieczeństwa;

Linki do artykułów z serii Cisco VPN:

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

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster