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

Simo Sorce simo.sorce at xsec.it
Fri Dec 16 12:21:01 MST 2005


On Fri, 2005-12-16 at 09:26 +0100, Luigi Iotti wrote:

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

La seconda che hai detto.

> Io parto dal presupposto che sulla macchina server smb (la chiamo SSMB) c
i
> sia l'hash LM e/o NTLM della password dell'utente. Chiamo questo/i hash H
S.
> 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 è corr
etta,
> 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 rispo
nde
> 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 cli
ent
> con C ed HS (che se la password è buona è uguale ad HC) e trova R'. S
e R è
> uguale a R' allora l'autenticazione va a buon fine.

E fin qui siamo tutti d'accordo.

> Se a parte tecnicismi e/o dettagli poco rilevanti la cosa va così, allo
ra
> 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 altr
o
> 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 è corr
etta,
> 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 rispo
nde
> con un response R.
> 4) SSMB riceve R da CSMB; passa al modulo pam di cui al punto 0) una stri
nga
> 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 ca
so
> di sopra.

Si ma a cosa serve questo ?
A che pro fare un modulo pam se il calcolo per metà lo devi fare tu e
comunque il backend deve essere un server samba ?
A sto punto uso winbind (per le login di client non-SMB) che tiene i
calcoli dalla parte giusta (dietro pam, non davanti) e usa il repository
comune senza dover scrivere del codice in più (codice che ovrebbe
contemplare n-mila casi, uno per ogni backend locale o remoto).

Per intnderci:

caso normale con winbind:
login nix -> pam -> samba -> repository password

client smb e samba:
csmb -> samba -> repository password

tua proposta:
csmb -> samba -> pam -> samba -> repository password

capito male io ?!

> Magari è una cosa analoga a quello che fa pam_winbind.

pam_winbind prende una password in chiaro ed esegue tutta la trafila
come client con un server samba.

Simo.

-- 
Simo Sorce - simo.sorce at xsec.it
Xsec s.r.l. - http://www.xsec.it
via Garofalo, 39 - 20133 - Milano
mobile: +39 329 328 7702
tel. +39 02 2953 4143 - fax: +39 02 700 442 399




More information about the samba-it mailing list