使用 Samba 加密 SMB 流量

使用 Samba 加密 SMB 流量

我们在 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

相关内容