Назад | Перейти на главную страницу

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

Мы используем Samba в Ubuntu 14.04 LTS в качестве основного контроллера домена (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

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

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

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

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

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



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

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

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

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

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

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

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