Przejdź do treści

Konfiguracje dla obsługi mechanizmu Kerberos shielding

Ostrzeżenie!

Aby mechanizm Kerberos shielding był używany, konta administratorów muszą zostać umieszczone w grupie Protected Users.
Wymusza to użycie protokołu uwierzytelniania Kerberos zamiast NTLM. Edge Gateway musi zostać wcześniej skonfigurowany do obsługi uwierzytelniania Kerberos.

Konfigurowanie Edge Gateway do obsługi uwierzytelniania Kerberos dla kont umieszczonych w Protected Users

Mechanizm Kerberos shielding zapewnia dodatkowe szyfrowanie pierwszych wymian między klientem a KDC (Kerberos Domain Controller) na podstawie informacji powiązanych z kontem komputera.

CyberElements działa najlepiej na maszynach Debian, które nie są podłączone do domeny AD, co oznacza, że nie dysponują one żadnymi informacjami o koncie komputera w AD.
Konfiguracja obsługi mechanizmu Kerberos shielding składa się z dwóch etapów:

  • Utworzenie konta komputera usługi w AD
  • Konfiguracja mechanizmu Kerberos shielding na Edge Gateway na podstawie wcześniej utworzonego konta

Tworzenie konta komputera usługi

Informacja

Na tej stronie jako przykład zostanie użyte konto usługi o nazwie svc_cyberelements. Dostosuj poniższe polecenia do nazwy własnego konta usługi.

Ostrzeżenie!

Jeśli chcesz używać stacji roboczych PAW, umieść to konto usługi w tym samym silosie co docelowe stacje robocze PAW.

Na kontrolerze domeny zacznij od utworzenia konta komputera z hasłem używanym do generowania biletów Kerberos.

Aby utworzyć to konto, możesz użyć na kontrolerze domeny następującego polecenia Powershell (dostosuj nazwę konta usługi, w przykładzie svc_cyberelements, oraz wybraną jednostkę OU, w przykładzie OU=Service_accounts,DC=domain,DC=local, aby utworzyć konto usługi):

1
New-ADComputer -Name svc_cyberelements -SAMAccountName 'svc_cyberelements$' -AccountPassword $Null -Path 'OU=Service_accounts,DC=domain,DC=local'-KerberosEncryptionType AES256 -PasswordNeverExpires $True -Enabled $True

Użyj następującego polecenia, aby sprawdzić, czy konto komputera zostało utworzone (zastąp svc_cyberelements nazwą wcześniej utworzonego konta):

1
Get-ADComputer -Identity svc_cyberelements -Properties Enabled

Następnie użyj narzędzia ktpass systemu Windows, aby wyeksportować plik keytab, który będzie zawierał klucze szyfrujące pozwalające gateway pobrać bilet TGT.

Przykład

Przykład tworzenia pliku svc_cyberelements.keytab z kontem komputera:

1
ktpass /princ 'svc_cyberelements$@DOMAIN.LOCAL' /mapuser 'svc_cyberelements$@DOMAIN.LOCAL' +rndPass /out svc_cyberelements.keytab /crypto AES256-SHA1 /ptype KRB5_NT_SRV_HST /mapop set
Pamiętaj, aby podać znaki $ na końcu nazw kont oraz zapisać nazwę domeny wielkimi literami (wymagane).

Zatwierdź ewentualne pytania potwierdzające, wpisując y.

Następnie ustaw ponownie wartość atrybutu UserPrincipalName za pomocą następującego polecenia PowerShell:

1
Set-ADComputer 'svc_cyberelements$' -UserPrincipalName 'svc_cyberelements$@DOMAIN.LOCAL'

Konfigurowanie mechanizmu Kerberos shielding na Edge Gateway

Pobierz wcześniej wygenerowany plik keytab i skopiuj go na serwer Edge Gateway.
W kontekście, w którym wygenerowano kilka plików keytab i muszą one być używane na tym samym Edge Gateway, połącz pliki keytab w jeden plik.

Uwaga

Plik keytab zawiera klucze szyfrujące. Jeśli atakujący wejdzie w jego posiadanie, może podać się za powiązane konto komputera i tym samym obniżyć bezpieczeństwo infrastruktury.
Dlatego tego pliku nie należy przechowywać w żadnym innym miejscu niż na Edge Gateway.

Umieść plik w katalogu /etc/ipdiva/cleanroom/.

Zmień właścicieli pliku keytab na ipdivacareuser dla użytkownika i carerecord dla grupy, a następnie zmień uprawnienia do pliku (dostosuj nazwę pliku keytab do nazwy własnego pliku):

1
2
chown ipdivacareuser:carerecord /etc/ipdiva/cleanroom/svc_cyberelements.keytab
chmod 640 /etc/ipdiva/cleanroom/svc_cyberelements.keytab

Zmodyfikuj plik konfiguracyjny /etc/ipdiva/cleanroom/xrdprecord.ini Edge Gateway, aby za pomocą parametru keytab= podać ścieżkę do wcześniej przygotowanego pliku keytab.

Przykład

2
keytab=/etc/ipdiva/cleanroom/svc_cyberelements.keytab

Na tym etapie połączenie z uprzywilejowanymi aplikacjami RDP w trybie bezagentowym (HTML5 lub innym) powinno działać dla kont użytkowników należących do Protected Users, a więc wymagających silnego uwierzytelniania Kerberos. Konfiguracja aplikacji RDP musi spełniać określone wymagania wstępne.

Testowanie konfiguracji Kerberos

Debugowanie

Następujące polecenia kinit mogą dostarczyć więcej logów po wykonaniu poniższego polecenia (obowiązuje do rozłączenia sesji SSH lub konsolowej):

1
export KRB5_TRACE=/dev/stdout

Zacznijmy od pobrania biletu Kerberos poleceniem podobnym do następującego:

1
kinit -k -t /etc/ipdiva/cleanroom/svc_cyberelements.keytab 'svc_cyberelements$@DOMAIN.LOCAL' -c /tmp/test_kerberos

Pamiętaj o zastąpieniu lokalizacji pliku keytab, nazwy utworzonego konta usługi oraz powiązanej z nim domeny.

Jeśli pobranie biletu Kerberos zakończyło się powodzeniem, następujące polecenie powinno wskazać istnienie biletu dla konta usługi:

1
klist -c /tmp/test_kerberos

Jeśli pobranie się udaje, trzeba następnie spróbować pobrać bilet dla użytkownika poleceniem podobnym do następującego:

1
kinit -T /tmp/test_kerberos user@DOMAIN.LOCAL

Zastąp user@DOMAIN.LOCAL użytkownikiem, który prawdopodobnie będzie się łączył przez RDP i Kerberos shielding. Zwróć uwagę, że hasło tego użytkownika zostanie zażądane.
Jeśli pobranie biletu zakończy się powodzeniem, następujące polecenie go wyświetli:

1
klist -c

Jeśli wyświetla się błąd KDC policy rejects request while getting initial credentials, oznacza to, że KDC odrzucił żądanie biletu. Możliwe przyczyny:

  • kinit nie mógł użyć biletu /tmp/test_kerberos (jeśli kinit nie może go użyć, kontynuuje bez komunikatu o błędzie, wysyłając podstawowe żądanie biletu)
  • Konta usługi nie ma w silosie testowanego użytkownika. Zdarza się to, gdy AD jest podzielone na silosy, i wymaga umieszczenia konta komputera usługi w odpowiednim silosie.

Dodatkowe informacje można znaleźć w logach zdarzeń Security używanego kontrolera domeny (KDC).

Po zakończeniu testów zaleca się usunięcie wygenerowanych biletów:

1
2
kdestroy
kdestroy -c /tmp/test_kerberos

Łączenie wielu plików keytab w jeden plik

Jeśli architektura CyberElements opiera się na jednym Edge Gateway, który ma umożliwiać dostęp wielu podmiotom zewnętrznym, trzeba scalić wszystkie pliki keytab wygenerowane dla poszczególnych kont usług w jeden plik keytab.

Uwaga

W tej sekcji przyjmiemy następujące pliki keytab: /root/t0.keytab, /root/t1.keytab i /root/t2.keytab. Pliki te muszą zostać wcześniej przesłane na Edge Gateway.

Aby scalić pliki keytab, zaloguj się na Edge Gateway jako root, a następnie użyj następujących poleceń:

1
2
3
4
5
ktutil
rkt /root/t0.keytab
rkt /root/t1.keytab
rkt /root/t2.keytab
wkt /root/unified.keytab

Polecenia rkt pozwalają wczytać dowolną liczbę plików keytab, a polecenie wkt generuje nowy plik keytab.
Dostosuj ścieżki plików do tych, którymi dysponujesz.

Naciśnij klawisz q, aby wyjść z narzędzia ktutil.

Pobierz plik unified.keytab i przejdź do sekcji Konfigurowanie mechanizmu Kerberos shielding na Edge Gateway.