我最近在 Linux 上设置了一个 Samba 服务器,这样我就可以在本地网络中的 Win10 PC 上访问此服务器上的文件。但我想知道我是否可以通过互联网访问这个共享驱动器,因为我在学校也使用 Win10 PC。
我在我的部分设置了以下内容:
[global]
workgroup = workgroup
security = user
encrypt passwords = true
smb encrypt= required
SMB 加密到底有多好?众所周知,SMB 对于公共网络来说并不安全,但自从 SMB3 开始,它就可以加密,我很好奇它的安全性如何。
提前致谢。
答案1
你可以看到SMB 3.0 中的加密:协议视角和SMB3 中的加密了解技术细节,但我认为 Azure Files允许安装在互联网上(仅)使用 SMB3 表明微软认为它是安全的。
答案2
这个问题已经有好几年了,但我会尝试贡献一些最新的东西。当前配置smb.conf
是这样的(至少在 Ubuntu 20.04 上有效):
[global]
# smb v4.14 and later
server signing = mandatory
server min protocol = SMB3
server smb encrypt = required
# smb v4.13 or earlier
smb encrypt = required
注意:在终端中运行samba -V
并注释掉与您的版本不对应的行
在我看来,它非常安全,但是在 Windows 客户端中建议执行以下注册表项:
以管理员权限打开 cmd 并运行
reg add "HKLM\System\CurrentControlSet\services\LanmanServer\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 1 /f
reg add "HKLM\System\CurrentControlSet\services\LanmanServer\Parameters" /v "EnableSecuritySignature" /t REG_DWORD /d 1 /f
欲了解更多信息,请查看Samba 完整审计
注意:Windows(如 Samba)会在没有事先通知的情况下更改每个版本的这些参数,因此这个答案可能会在 6 个月内过时
答案3
但我想知道我是否可以通过互联网访问这个共享驱动器,因为我在学校也使用 Win10 PC。
Samba 是一种文件和打印共享服务,我绝不会要求它进行加密。如果您想加密您和 Samba 之间的信息(明智的选择),我建议您在使用公共网络访问 Samba 计算机时从您的学校计算机创建 SSH 隧道。
关于 SSH 隧道是什么、如何设置以及何时使用有很多很好的解释,它旨在对两个端点之间的信息进行加密,这就是 SSH 所做的。
SSH 隧道的示例
- https://www.youtube.com/results?search_query=what+is+ssh+tunnel
- https://www.youtube.com/watch?v=zlv9dI-9g1U
如何建立 Windows SSH 隧道
另外,请写下运行 Samba 的机器安装的是什么操作系统。Ubuntu、Fedora、Windows 还是其他?这样人们才能给你最好的答案。
SSH 加密强度有多高?
足够强大和安全,甚至政府都可以使用它。
答案4
此外,我建议使用 Wireshark 检查流量是否已加密。这是因为 SMB 将加密作为一种可能性而不是要求进行协商。客户端无法强制加密,只能拒绝非加密连接,这由服务器决定。是的,默认情况下,如果客户端支持,Win10 会加密,但谁知道服务器端注册表是如何针对您的情况进行定制的。如果数据如此合理,我不会在没有仔细检查的情况下完全相信 Samba 的“必需”。