Шифрование трафика SMB с помощью Samba

Мы используем Samba в Ubuntu 14.04 LTS в качестве PDC (основного контроллера домена) с перемещаемыми профилями. Все работает нормально, за исключением случаев, когда мы пытаемся включить шифрование через настройку:

    server signing = mandatory
    smb encrypt = mandatory

в [global] раздел /etc/samba/smb.conf. После этого клиенты win 8.0 и 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

Любая помощь?

2 ответа

Решение

Страница руководства smb.conf должна быть обновлена! Это относится к старому Samba-специфичному механизму шифрования, который применяется только к SMB1 и осуществляется через расширения Unix. Это может быть использовано smbclient,

В наши дни smb encrypt "options также управляет шифрованием на уровне SMB, которое является частью SMB версии 3.0 и новее. Клиенты Windows 8 (и новее) должны шифровать трафик с этими настройками.

Вы пытались использовать те же настройки (smb encrypt = mandatory в [global] раздел) на члене домена Samba или автономном сервере?

Обязательно установите smb encrypt = auto в [global] раздел (не [profiles] раздел). Тогда все еще объявлено о доступности шифрования.



Вполне возможно, что это ошибка в Samba. Так что это, вероятно, следует обсудить в списке рассылки samba-technial samba или в bugzilla samba. Если вы используете версию Samba для Ubuntu, вы также можете проверить страницу пакета. Я подозреваю, что это настоящая проблема самбы.

Это новая функция, представленная в Samba 3.2 и выше. Это расширение протокола SMB/CIFS, согласованного как часть расширений UNIX. Шифрование SMB использует возможность GSSAPI (SSPI в Windows) для шифрования и подписывания каждого запроса / ответа в потоке протокола SMB. При включении он обеспечивает безопасный метод связи SMB/CIFS, аналогично сеансу с защитой ssh, но с использованием аутентификации SMB/CIFS для согласования ключей шифрования и подписи. В настоящее время это поддерживается только Samba 3.2 smbclient, и, надеюсь, скоро клиенты Linux CIFSFS и MacOS/X. Windows clients do not support this feature.

Это определяет, разрешено или требуется удаленному клиенту использовать шифрование SMB. Возможные значения: auto, обязательные и отключенные. Это может быть установлено на основе общего ресурса, но клиенты могут выбрать шифрование всего сеанса, а не только трафика к определенному общему ресурсу. Если это установлено как обязательное, то весь трафик к общему ресурсу должен быть зашифрован после того, как было установлено соединение с общим ресурсом. Сервер будет возвращать "отказано в доступе" ко всем незашифрованным запросам на таком общем ресурсе. Выбор зашифрованного трафика снижает пропускную способность, так как необходимо использовать пакеты меньшего размера (не допускается чтение и запись в стиле UNIX), а также накладные расходы на шифрование и подпись всех данных.

Если выбрано шифрование SMB, подпись SMB в стиле Windows (см. Параметр подписи сервера) больше не требуется, поскольку флаги GSSAPI используют выбор подписи и запечатывания данных.

Когда установлено значение auto, шифрование SMB предлагается, но не применяется. Если установлено обязательное, требуется шифрование SMB, а если отключено, шифрование SMB не может быть согласовано.

По умолчанию: smb encrypt = auto

Источник: https://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

Другие вопросы по тегам