我有一个带密码保护的 WiFi 的家庭网络。在我的家庭网络上,我有一个文件服务器,其中的 Samba 共享受密码保护。共享本身受到保护,因为我的网络有多台机器和多个用户,我想确保只有我能从我当时使用的任何机器访问此共享(抱歉,我说得太明显了,但我想避免这样的回答:“您使用的是家庭网络,您的 WiFi 已经受密码保护,那么为什么还需要对共享本身进行密码保护?”等等)。
目前,这是我安装 Samba 共享的方式(请注意,与我的问题相关的部分是sec=ntlm
):
mount -t cifs //myserver/myshare /media/myshare -o uid=myunixuser,gid=myunixgroup,credentials=/home/myunixuser/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
到目前为止,一切都很好;但是,我读过几篇关于安全类型以及为什么不推荐使用 NTLM 的文章,等等(参见文章“NTLM 的时代已经过去“)。我在谷歌上搜索了“ntlm vs ntlmv2 vs kerberos”,并尝试通过阅读有关 NTLM 的维基百科文章和关于此主题的 Ubuntu 手册页,但我还没完全理解。
我觉得大多数文档都是为网络管理员准备的,而我更像是一个周末战士。总的来说,我认为 NTLMv2 比 NTLM 更受欢迎,Kerberos 也是如此,但这并不意味着我应该自动选择 v2 或 Kerberos,因为并非所有客户端都支持它们。所以,这到底是怎么回事?有人能帮我解释一下吗?即使我坚持使用 NTLM,我也只是想了解这些不同的安全选项有什么关系。如果我对此想得太多了,请告诉我。谢谢。
答案1
Windows 客户端支持这三种,最近的 Linux 内核也支持。我不知道有哪个现代客户端支持不是支持 NTLMv2,尽管 Kerberos 不太常见。
NTLM 和 Kerberos 之间的主要区别是:
NTLM 是一种仅使用密码即可工作的质询-响应机制。因此,只要客户端知道服务器想要的密码,它就可以在任何两个主机之间使用。
Kerberos 是基于票据的;客户端从中央 KDC 获取登录票据并将其提交给服务器。这需要设置 Kerberos 域(对于 CIFS,通常是 Active Directory 域)并且域的 KDC 托管在某处。
(Mac OS X - 以前更喜欢使用 AFP 协议而不是 CIFS - 实际上设法在两个对等体之间使用 Kerberos,使用自动生成的领域名称,但 Windows 和 Linux 都不支持相同的功能。)
然而:
NTLM 版本 1 的安全性与直接发送明文密码的安全性非常接近。NTLMv2 对此进行了改进有些,虽然我不确定有多少。
同时,Kerberos 5 被认为非常安全,并被 Active Directory、FreeIPA 和其他各种 Unix 目录服务软件使用。
不幸的是,Kerberos 需要一些时间来设置,并且 Windows 客户端仅支持它适当地(即无需花费 3 天)当客户端和服务器都属于 AD 域时。
因此,您现在必须选择 NTLMv2。无论如何,这是独立 Windows 机器默认使用的。(现代 Linux 内核中的默认设置是sec=ntlmssp
;我不完全确定它与有何不同ntlmv2
,但我知道这些差异不会对安全产生任何影响。)