Os clientes Windows suportam todos os três, assim como os kernels recentes do Linux. Eu não sei de nenhum cliente moderno que não suporte NTLMv2, embora o Kerberos seja um pouco menos comum.
A principal diferença entre o NTLM e o Kerberos é:
-
O NTLM é um mecanismo de resposta a desafios que funciona apenas com senhas. Assim, ele pode ser usado entre dois hosts, desde que o cliente saiba a senha que o servidor deseja.
-
O Kerberos é baseado em tickets; o cliente obtém um ticket de login de um KDC central e o apresenta ao servidor. Isso precisa que uma região do Kerberos seja configurada - no caso do CIFS, geralmente é um domínio do Active Directory - e o KDC da região é hospedado em algum lugar.
(o Mac OS X - que costumava preferir o protocolo AFP sobre CIFS - na verdade consegue usar o Kerberos entre dois peers, usando nomes de região autogerados, mas nem o Windows nem o Linux suportam o mesmo.)
No entanto:
-
A segurança da versão 1 do NTLM é muito parecida com a de apenas enviar a senha em modo normal. O NTLMv2 melhora isso um pouco , embora eu não tenha certeza de quanto.
-
Enquanto isso, o Kerberos 5 é considerado muito seguro e é usado pelo Active Directory, FreeIPA e vários outros softwares de serviço de diretório Unix.
Infelizmente, o Kerberos leva algum tempo para ser configurado, e os clientes do Windows só suportam corretamente (ou seja, sem passar 3 dias) quando o cliente e o servidor pertencem a um domínio do AD.
Soo você terá que escolher o NTLMv2 por enquanto. É o que as máquinas Windows independentes usam por padrão, de qualquer maneira. (O padrão nos kernels modernos do Linux é sec=ntlmssp
; não tenho certeza de como ele difere de ntlmv2
, embora eu saiba que as diferenças não têm nenhum impacto de segurança.)