Sari la conținut

Configurări pentru compatibilitatea cu blindajul Kerberos

Atenție!

Pentru ca blindajul Kerberos să fie utilizat, conturile de administrator trebuie plasate în grupul Protected Users.
Acest lucru impune utilizarea protocolului de autentificare Kerberos în locul NTLM. Serverul Edge Gateway trebuie configurat în prealabil pentru a accepta autentificarea Kerberos.

Configurarea Edge Gateway pentru a accepta autentificarea Kerberos cu conturi plasate în Protected Users

Blindajul Kerberos oferă o criptare suplimentară pentru schimburile iniciale între client și KDC (Kerberos Domain Controller), pornind de la informații legate de un cont de computer.

CyberElements Bastion rulează de preferință pe mașini Debian neconectate la un domeniu AD, ceea ce înseamnă că nu dispune de nicio informație de cont de computer în AD.
Configurarea pentru compatibilitatea cu blindajul Kerberos cuprinde două etape:

  • Crearea unui cont de computer de serviciu în AD
  • Configurarea blindajului Kerberos pe serverul Edge Gateway pornind de la contul creat anterior

Crearea unui cont de computer de serviciu

Informație

Această pagină utilizează ca exemplu un cont de serviciu denumit svc_cyberelements. Adaptați comenzile următoare în funcție de numele contului dumneavoastră de serviciu.

Atenție!

Dacă doriți să utilizați stații de lucru PAW, plasați acest cont de serviciu în același silo ca stațiile de lucru PAW de destinație.

De pe controlerul de domeniu, începeți prin a crea un cont de computer cu o parolă utilizată pentru a genera tichetele Kerberos.

Pentru a crea acest cont, puteți utiliza comanda Powershell următoare de pe un controler de domeniu (adaptați numele contului de serviciu, svc_cyberelements în exemplu, și OU dorită, OU=Service_accounts,DC=domain,DC=local în exemplu, pentru a crea contul de serviciu):

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

Utilizați comanda următoare pentru a verifica dacă contul de computer a fost creat (înlocuiți svc_cyberelements cu numele contului creat anterior):

1
Get-ADComputer -Identity svc_cyberelements -Properties Enabled

Utilizați apoi instrumentul Windows ktpass pentru a exporta un fișier keytab care va conține cheile de criptare ce vor permite serverului gateway să recupereze TGT-ul.

Exemplu

Exemplu de creare a unui fișier svc_cyberelements.keytab cu contul de computer:

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
Nu uitați să includeți simbolurile $ la sfârșitul numelor de cont și să scrieți numele domeniului cu majuscule (obligatoriu).

Acceptați eventualele solicitări de confirmare care pot apărea introducând y.

Repoziționați apoi valoarea atributului UserPrincipalName cu comanda PowerShell următoare:

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

Configurarea blindajului Kerberos pe serverul Edge Gateway

Recuperați fișierul keytab generat anterior și copiați-l pe serverul Edge Gateway.
Într-un context în care au fost generate mai multe fișiere keytab care trebuie utilizate pe același server Edge Gateway, combinați fișierele keytab într-un singur fișier.

Atenție

Fișierul keytab conține chei de criptare. Dacă un atacator îl obține, poate uzurpa identitatea contului de computer asociat, reducând astfel securitatea infrastructurii.
Prin urmare, acest fișier nu trebuie păstrat în alt loc decât pe serverul Edge Gateway.

Plasați fișierul în directorul /etc/ipdiva/cleanroom/.

Schimbați proprietarii fișierului keytab în ipdivacareuser pentru utilizator și carerecord pentru grup, apoi modificați permisiunile fișierului (adaptați numele fișierului keytab la cel al fișierului dumneavoastră):

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

Modificați fișierul de configurare /etc/ipdiva/cleanroom/xrdprecord.ini al serverului Edge Gateway pentru a indica, prin parametrul keytab=, calea fișierului keytab pregătit anterior.

Exemplu

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

În acest stadiu, conectarea la aplicațiile RDP privilegiate în mod fără agent (HTML5 sau nu) ar trebui să funcționeze cu conturi de utilizator care aparțin grupului Protected Users și care necesită deci o autentificare Kerberos puternică. Configurarea aplicației RDP trebuie să îndeplinească anumite cerințe preliminare.

Testarea configurării Kerberos

Depanare

Comenzile kinit următoare pot genera mai multe loguri după executarea comenzii următoare (valabil până la deconectarea sesiunii SSH sau de consolă):

1
export KRB5_TRACE=/dev/stdout

Să începem prin recuperarea unui tichet Kerberos cu o comandă similară celei următoare:

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

Nu uitați să înlocuiți locația fișierului keytab, numele contului de serviciu creat și domeniul asociat acestuia.

Dacă recuperarea tichetului Kerberos a reușit, comanda următoare ar trebui să indice existența unui tichet pentru contul de serviciu:

1
klist -c /tmp/test_kerberos

Dacă recuperarea reușește, este necesar să încercați să recuperați un tichet pentru un utilizator cu o comandă similară celei următoare:

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

Înlocuiți user@DOMAIN.LOCAL cu un utilizator susceptibil de a se conecta prin RDP și blindaj Kerberos. Rețineți că va fi solicitată parola acestui utilizator.
Dacă recuperarea tichetului reușește, comanda următoare îl va afișa:

1
klist -c

Dacă apare eroarea KDC policy rejects request while getting initial credentials, aceasta înseamnă că KDC a refuzat solicitarea de tichet. Cauze posibile:

  • kinit nu a putut utiliza tichetul /tmp/test_kerberos (dacă kinit nu îl poate utiliza, continuă fără mesaj de eroare cu o solicitare de tichet de bază)
  • Contul de serviciu nu este prezent în silo-ul utilizatorului testat. Acest lucru se întâmplă atunci când AD-ul este compartimentat și impune plasarea contului de computer de serviciu în silo-ul corespunzător.

Informații suplimentare pot fi găsite în logurile de evenimente Security ale controlerului de domeniu (KDC) utilizat.

După teste, se recomandă ștergerea tichetelor generate:

1
2
kdestroy
kdestroy -c /tmp/test_kerberos

Combinarea mai multor fișiere keytab într-un singur fișier

Dacă arhitectura CyberElements Bastion se bazează pe un singur Edge Gateway care va permite accesul mai multor terți, este necesar să fuzionați într-un singur fișier keytab toate fișierele keytab generate pentru diferitele conturi de serviciu.

Notă

În această secțiune se pornește de la fișierele keytab următoare: /root/t0.keytab, /root/t1.keytab și /root/t2.keytab. Aceste fișiere trebuie să fi fost trimise pe serverul Edge Gateway.

Pentru a fuziona fișierele keytab, conectați-vă la serverul Edge Gateway ca root, apoi utilizați comenzile următoare:

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

Comenzile rkt permit încărcarea a oricâtor fișiere keytab este necesar, iar comanda wkt generează un nou fișier keytab.
Adaptați căile fișierelor la cele de care dispuneți.

Apăsați tasta q pentru a ieși din utilitarul ktutil.

Recuperați fișierul unified.keytab și urmați secțiunea Configurarea blindajului Kerberos pe serverul Edge Gateway.