使 Ubuntu 18.04 上的 Samba 与需要数字签名通信的 Windows 客户端兼容

使 Ubuntu 18.04 上的 Samba 与需要数字签名通信的 Windows 客户端兼容

由于我工作的地方最近更改了安全策略,用户的 Windows 7 PC 现在配置为Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Microsoft network client: Digitally sign communications (always)启用,并且不再能够访问我的 Ubuntu 18.04 服务器上的 Samba 共享。我在 smb.conf 中尝试了 和 的几种组合server signingclient signingsmb encrypt仍然无法使其工作,而且我找不到有关此问题的操作指南/手册。

目前 smb.conf 包括

server signing = mandatory
client signing = mandatory
smb encrypt = required

有或没有这三行都会导致相同的结果(sudo service smbd restart介于两者之间)。并且 Samba 服务器不在 AD 域中(server role = standalone server)。

任何帮助将不胜感激。


(编辑-添加了日志和配置文件)

我停止了 smbd 服务,删除了所有现有日志文件,启动了 smbd 服务,尝试从 Windows 连接,再次停止 smbd 服务,然后获取日志文件。我执行了两次此过程,第一次设置了上述 Windows 策略,第二次没有设置(因此这次 Windows 成功连接到 Samba)。

我找不到关于日志级别应设置为多少的指南,所以我将其设置为 10,这会产生大量日志。它们这里,与我的 smb.conf 一起,与默认的 Ubuntu smb.conf 相比,它有以下额外的行:

security = user
unix extensions = no
log level = 10
[homes]
browseable = no
read only = no
create mask = 0764
directory mask = 2775
valid users = %S
guest ok = no
wide links = yes

(上次发布后我删除了上述签名/加密行,因为它们没有帮助。)

(后来修改)如果日志级别 10 太过复杂,那么级别 5 日志这里

至于客户端信息... 这是有问题的,因为我们这里使用的是繁体中文版 Windows。经过一番谷歌搜索,我猜想英文版 Windows 中的等效消息应该是“该帐户无权从此站点登录”。我应该澄清的是,如果连接成功,会首先弹出用户名/密码对话框,我在其中输入我的 Ubuntu 用户的用户名/密码,然后他们就成功了。如果连接失败,则没有对话框,只有消息。

答案1

得到了帮助Samba 邮件列表

注释掉默认map to guest = bad user行有效。

答案2

您到底收到了什么错误信息?帮助提示我的大脑。

加密当然不等同于签名。加密的是整个消息块。所以你肯定不想启用该选项。

数字签名(如果我没记错的话)在 SMB 历史上出现过多次——要么是简单的会话 ID 密钥匹配,要么是基于会话密钥(ID 加防篡改证明)的每条消息的哈希值,而不是古老的简单 CRC 类型的东西。


更基本的是确保 Ubuntu 正在协商 SMBv2 和 SMBv3 协议。我认为 SMBv1 不知道如何处理数字签名或完整的 SMB 加密。

然而,在不久的将来,SMBv1 仍然是简化与 Windows 机器连接的默认假设。我猜这是基于这样的理论——在此类安装的绝对数量中——大多数地方都没有 Linux 和 Windows 方面的专业知识。当然,有具备这两种专业知识的人的地方会自动实现所需的“专家”设置。

再说了,我不知道您收到的错误消息的性质——因此我无法排除需要协商使用 SMBv2/SMBv3 代替 SMBv1 的任何可能性。

无论如何,我非常确定仅数字签名策略(SMBv2 功能)就会以纯文本形式保留主要信息,以便各种网络设备更快地处理和检查(客户端或服务器开销也更少)。作为协议一部分的加密 SMB 是相当新的。虽然不容易触发 Windows 7 的行为,但可能在 Windows 7 支持结束之前作为可用功能添加。我认为在 Windows 8.1 发布期间与 SMBv3 一起发布。

相关内容