Samba, Windows NT/2000 i relacje zaufania Rafał Szcześniak The Samba Team Prosze pytać w każdej chwili
Co to są relacje zaufania? Są wyznacznikiem przynależności do domeny. Określają więzy łączące jej elementy. Dzięki tym relacjom domena składa się z komputerów które mogą wymieniać między sobą dane, a także prowadzić interakcję z komputerami w innych domenach, o ile istnieją relacje zaufania, które na to pozwalają.
Podstawowe elementy po stronie Samby Konto zaufane Hasło do zaufanego konta Każda relacja posiada swoją stronę ufającą oraz stronę zaufaną.
Domeny Windows NT
security = domain Samba (DIONIZY) Windows NT PDC smb session request (DOMENA\zygmunt)
security = domain Samba (DIONIZY) smb session request Windows NT PDC
security = domain Samba (DIONIZY) NetAuth jako DIONIZY$ +member password Windows NT PDC
security = domain Samba (DIONIZY) NetAuth2 jako zygmunt Windows NT PDC
security = domain Samba (DIONIZY) NT_STATUS_OK Windows NT PDC smb session request
security = domain Samba (DIONIZY) Windows NT PDC smb: STATUS_SUCCESS
Samba jest członkiem domeny Windows NT Posiada konto zaufanej stacji roboczej (trusted workstation account) na PDC Ma ono postać NAZWA$, gdzie NAZWA jest nazwą NetBIOS serwera Samba Posiada włączoną flagę ACB WSTRUST Po stronie Samby przechowywane jest hasło zaufanego konta w pliku secrets.tdb
... mały kawałek kodu struct machine_acct_pass { uint8 hash[16]; time_t mod_time; } gdzie hash jest skrótem NT4 hasła.
security = user i relacje międzydomenowe Samba PDC (WIOSNA) PDC (LATO) smb session request (LATO\rudolf) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) smb session request nt_create_and_x \PIPE\NETLOGON PDC (LATO) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) NetAuth jako WIOSNA$ PDC (LATO) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) NetAuth2 jako rudolf PDC (LATO) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) NetSamLogon PDC (LATO) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) NT_STATUS_OK PDC (LATO) (LATO)
security = user i relacje międzydomenowe Samba PDC (WIOSNA) PDC (LATO) smb: STATUS_SUCCESS (LATO)
Samba posiada specjalne konto na PDC zaufanej domeny konto o nazwie DOMENA$ (gdzie DOMENA jest nazwą domeny której PDC jest Samba) konto ma ustawioną flagę ACB DOMTRUST Samba przechowuje lokalnie hasło (w pliku secrets.tdb)
... trochę większy kawałek kodu typedef struct trusted_dom_pass { size_t uni_name_len; smb_ucs2_t uni_name[32]; size_t pass_len; fstring pass; time_t mod_time; DOM_SID domain_sid; } TRUSTED_DOM_PASS; uni name i domain sid dotyczą zdalnej domeny.
Domeny Windows 2000 (Active Directory)
security = ads (przyłączanie do domeny) Samba (HIERONIM) krb5 AS-REQ krb5 TGS-REQ Windows 2000 DC
security = ads (przyłączanie do domeny) Samba (HIERONIM) krb5 AS-REP krb5 TGS-REP Windows 2000 DC
security = ads (przyłączanie do domeny) Generowanie kerberos shared secret Samba (HIERONIM) Windows 2000 DC
security = ads (przyłączanie do domeny) Samba (HIERONIM) SamrCreateUser2 konto HIERONIM$ +shared secret Windows 2000 DC
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC krb5 AS-REQ krb5 TGS-REQ
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC krb5 AS-REP krb5 TGS-REP
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC krb5 AP-REQ (bilet HOST dla serwera HIERONIM$)
security = ads Samba (HIERONIM) Windows 2000 DC krb5 AP-REP (przyznany bilet)
security = ads Samba (HIERONIM) Windows 2000 DC smb negprot + extended security
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC smb negprot GSS-API / SPNEGO
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC smb session setup GSS-API / SPNEGO (z otrzymanym biletem)
security = ads (logowanie do domeny) Samba (HIERONIM) weryfikacja klucza sesyjnego biletu HOST Windows 2000 DC
security = ads (logowanie do domeny) Samba (HIERONIM) Windows 2000 DC smb: STATUS_SUCCESS
Konto zaufanej stacji roboczej jest oczywiście konieczne Hasło do niego jest przechowywane w pliku secrets.tdb Novum jest brak konieczności połączenia z DC, żeby zweryfikować dane użytkownika
... kod źródłowy Nie ma tutaj żadnej struktury, ponieważ hasło jest przechowywane po prostu jako łańcuch znakowy. To się oczywiście zmieni...
przyszłość kontroler ADS i zaufane domeny Najpierw trzeba oczywiście opracować działający kontroler domeny. W przypadku relacji zaufania można je realizować na dwa sposoby. domain referral czyli de facto odsyłacz do DC zaufanej domeny bilet umożliwiający połączenie z DC zdalnej domeny i uzyskanie od niego biletu krbtgt
podsumowanie Dane potrzebne do pracy z relacjami zaufania: nazwa konta nazwa domeny (w przypadku zaufanej domeny) SID domeny (jw.) czas ostatniej modyfikacji hasło
wniosek Łatwo zauważyć wiele wspólnych elementów, stąd też wygodniej będzie zastosować jedną strukturę, która uogólni sposób organizowania informacji. Będzie stosowana przy wszystkich czterech (jak dotąd...) rodzajach relacji.
Dziękuję bardzo za uwagę Jakieś pytania? Kontakt: Rafał Szcześniak <mimir@samba.org> http://samba.org/~mimir/