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:
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);
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;
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:
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;
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ąć).
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.
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)
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:
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).
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.
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.
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 opisKomputer 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ń.
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;
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:
Profil uprawnień stosowany na etapach 1,2,3 jest następujący:
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:
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:
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:
Z portalu DUO widzimy pomyślne zdarzenie uwierzytelnienia:
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ć:
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;