我们在 Ubuntu 14.04 LTS 上使用 Samba 作为具有漫游配置文件的 PDC(主域控制器)。一切正常,除非我们尝试通过以下设置强制加密:
server signing = mandatory
smb encrypt = mandatory
在[global]
/etc/samba/smb.conf 部分。 这样做之后,win 8.0 和 win 8.1 客户端(没有尝试过其他任何客户端)抱怨:Die Vertrauensstellung zwischen dieser Arbeitsstation und der primären Domäne konnte nicht hergestellt werden.
此文本的英文翻译:The trust relationship between this workstation and the primary domain could not be established.
如果我们添加这两个选项server signing
并且smb encrypt
仅将其添加到[profiles]
smb.conf 部分,则tcpdump
表明实际流量未加密!
完整的 smb.conf:
[global]
workgroup = DOMAIN
server string = %h PDC
netbios name = HOSTNAME
wins support = true
dns proxy = no
allow dns updates = False
dns forwarder = IP
deadtime = 15
log level = 2
log file = /var/log/samba/log.%m
max log size = 5000
debug pid = yes
debug uid = yes
syslog = yes
utmp = yes
security = user
domain logons = yes
domain master = yes
os level = 64
logon path = \\%N\profiles\%U
logon home = \\%N\%U
logon drive = H:
logon script =
passdb backend = ldapsam:ldap://localhost
ldap ssl = start tls
ldap admin dn = cn=admin,dc=DOMAIN,dc=de
ldap delete dn = no
encrypt passwords = yes
server signing = mandatory
smb encrypt = mandatory
## Sync UNIX password with Samba password
ldap password sync = yes
ldap suffix = dc=intra,dc=DOMAIN,dc=de
ldap user suffix = ou=People
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
add user script = /usr/sbin/smbldap-useradd -m '%u' -t 1
rename user script = /usr/sbin/smbldap-usermod -r '%unew' '%uold'
delete user script = /usr/sbin/smbldap-userdel '%u'
set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
add group script = /usr/sbin/smbldap-groupadd -p '%g'
delete group script = /usr/sbin/smbldap-groupdel '%g'
add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
add machine script = /usr/sbin/smbldap-useradd -W '%m' -t 1
[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
admin users = root
guest ok = Yes
browseable = No
[profiles]
comment = Roaming Profile Share
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
browsable = No
valid users = %U
create mode = 0600
directory mode = 0700
有什么帮助吗?
答案1
smb.conf 手册页需要更新!它指的是仅适用于 SMB1 的旧 Samba 特定加密机制,并通过 unix 扩展完成。这可以由 来使用smbclient
。
如今,“ smb encrypt
”选项还控制 SMB 3.0 及更新版本中的 SMB 级加密。Windows 8(及更高版本)客户端应加密流量使用这些设置。
您是否尝试在 Samba 域成员或独立服务器上使用相同的设置(smb encrypt = mandatory
在部分中)?[global]
确保smb encrypt = auto
在[global]
部分(而不是[profiles]
部分)中设置。然后加密的普遍可用性仍然会公布。
这很可能是 Samba 的一个错误。因此,这个问题应该在 Samba 的samba-technial 邮件列表或者samba 的 bugzilla。如果你使用的是 Ubuntu 版 Samba,那么你可能还需要检查包页面。我怀疑这是一个真正的 Samba 上游问题。
答案2
这是 Samba 3.2 及更高版本引入的新功能。它是作为 UNIX 扩展的一部分协商的 SMB/CIFS 协议的扩展。SMB 加密使用 GSSAPI(Windows 上的 SSPI)功能对 SMB 协议流中的每个请求/响应进行加密和签名。启用后,它提供了一种安全的 SMB/CIFS 通信方法,类似于 ssh 保护的会话,但使用 SMB/CIFS 身份验证来协商加密和签名密钥。目前只有 Samba 3.2 smbclient 支持此功能,希望很快 Linux CIFSFS 和 MacOS/X 客户端也支持此功能。Windows clients do not support this feature.
这控制远程客户端是否被允许或需要使用 SMB 加密。可能的值是自动、强制和禁用。这可以基于每个共享进行设置,但客户端可以选择加密整个会话,而不仅仅是加密到特定共享的流量。如果将其设置为强制,则一旦连接到共享,所有到共享的流量都必须加密。服务器将对此类共享上的所有非加密请求返回“访问被拒绝”。选择加密流量会降低吞吐量,因为必须使用较小的数据包大小(不允许进行巨大的 UNIX 样式读/写),以及加密和签名所有数据的开销。
如果选择了 SMB 加密,则不再需要 Windows 样式 SMB 签名(参见服务器签名选项),因为 GSSAPI 标志使用选择数据的签名和密封。
设置为自动时,会提供 SMB 加密,但不强制执行。设置为强制时,需要 SMB 加密;设置为禁用时,无法协商 SMB 加密。
默认值:smb encrypt = auto
来源:https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html