[Samba-it] RE: [Samba-it] RE: [Samba-it] Piccola curiositàsu autenticazione Samba

Luigi Iotti luigi at iotti.biz
Fri Dec 16 09:26:01 MST 2005


> From: samba-it-admin at xsec.it [mailto:samba-it-admin at xsec.it]On Behalf Of
> Simo Sorce

> Perché a samba non arriva ne la password in chiaro NE l'hash che è un
> equivalente di un password in chiaro.
> I meccanismi di challenge/response sono stati inventati apposta per NON
> inviare MAI in rete nessuna password o equivalente (per esempio anche
> kerberos utilizza questo tipo di meccanismo ed infatti il KDC Kerberos
> mantiene una lista di password, ma le password non viaggiano mai in rete
> neanche quando si fa kinit e si chiede il ticket).
> PAM invece è costruito in modo da poter funzionare solo se viene passata
> una password e non ha alcun meccanismo di comunicazione che permetta di
> effettuare transazione come quelle challenge/response.
> Va detto che si può comunque unificare la password in senso inverso
> usando winbind e pam_winbind e tenendo una solo hash (quello del mondo
> windows) che tanto c'è e ci deve essere.

Forse non capisco io, forse non mi spiego o forse non ci intendiamo.

Io parto dal presupposto che sulla macchina server smb (la chiamo SSMB) ci
sia l'hash LM e/o NTLM della password dell'utente. Chiamo questo/i hash HS.
1) Quando il client smb (che chiamo CSMB) riceve la password dall'utente, ne
può calcolare l'hash LM e/o NTLM che chiamo HC. Se la password è corretta,
si avrà HS uguale HC.
2) Quando CSMB si connette a SSMB, quest'ultimo invia un challenge
pseudocasuale C.
3) CSMB riceve C e in base a questo e ad HC che ha appena calcolato risponde
con un response R. Naturalmente dati C ed R non si può ricostruire HC
altrimenti i meccanismi C/R non servono a nulla.
4) SSMB riceve R da CSMB; fa lo stesso calcolo che ha appena fatto il client
con C ed HS (che se la password è buona è uguale ad HC) e trova R'. Se R è
uguale a R' allora l'autenticazione va a buon fine.

Se a parte tecnicismi e/o dettagli poco rilevanti la cosa va così, allora
perchè non si potrebbe fare una cosa di questo tipo (notare che i punti 1)
2) e 3) rimangono identici):

0) Creiamo un modulo pam su SSMB che possa leggere HS da smbpasswd o altro
backend;
1) Quando il client smb (che chiamo CSMB) riceve la password dall'utente, ne
può calcolare l'hash LM e/o NTLM che chiamo HC. Se la password è corretta,
si avrà HS uguale HC.
2) Quando CSMB si connette a SSMB, quest'ultimo invia un challenge
pseudocasuale C.
3) CSMB riceve C e in base a questo e ad HC che ha appena calcolato risponde
con un response R.
4) SSMB riceve R da CSMB; passa al modulo pam di cui al punto 0) una stringa
rappresentante in senso improprio la "password" costituita da C e da R,
separati da un qualche separatore.
5) il modulo pam fa la stessa verifica che faceva SSMB al punto 4) del caso
di sopra.

Magari è una cosa analoga a quello che fa pam_winbind.




More information about the samba-it mailing list