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

Проблема аутентификации Samba 4 OpenLDAP

Что я сделал до сих пор

Эта проблема

Я присоединил клиент Windows 7 к домену и попытался войти в систему пользователя, созданного с помощью smbldap-useradd. Я получаю сообщение о неправильном пароле из окон, но абсолютно никаких ошибок / предупреждений от самбы. Мой тестовый пользователь действительно существует в LDAP (проверено с помощью phpldapadmin), поэтому я предполагаю, что samba неправильно разговаривает с ldap. Я застрял на этом этапе и мне нужна помощь!

Что я заметил

Я установил passdb backend = ldapsam:ldap://testsrv.alfr.local:390/ который не появляется на выходе testparm (см. ниже).

Программное обеспечение, которое я использую

Конфигурации и выходы

Выход testparm

root@testsrv:~# testparm 
Load smb config files from /usr/local/samba/etc/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[profiles]"
Processing section "[netlogon]"
Processing section "[sysvol]"
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_ACTIVE_DIRECTORY_DC
Press enter to see a dump of your service definitions

[global]
    workgroup = ALFR
    realm = alfr.local
    server role = active directory domain controller
    passdb backend = samba_dsdb
    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'
    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 '%u' -t 1
    domain logons = Yes
    os level = 10
    preferred master = Yes
    domain master = Yes
    dns proxy = No
    wins support = Yes
    ldap admin dn = cn=admin,dc=alfr,dc=local
    ldap group suffix = ou=Groups
    ldap idmap suffix = ou=Idmap
    ldap machine suffix = ou=Computers
    ldap suffix = dc=alfr,dc=local
    ldap ssl = no
    ldap user suffix = ou=Users
    server services = rpc, nbt, wrepl, cldap, ldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb
    dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
    rpc_server:tcpip = no
    rpc_daemon:spoolssd = embedded
    rpc_server:spoolss = embedded
    rpc_server:winreg = embedded
    rpc_server:ntsvcs = embedded
    rpc_server:eventlog = embedded
    rpc_server:srvsvc = embedded
    rpc_server:svcctl = embedded
    rpc_server:default = external
    idmap config * : backend = tdb
    map archive = No
    map readonly = no
    store dos attributes = Yes
    vfs objects = dfs_samba4, acl_xattr

[profiles]
    path = /srv/samba/profiles
    read only = No
    create mask = 0611
    directory mask = 0700
    profile acls = Yes
    map hidden = Yes
    map system = Yes
    browseable = No
    csc policy = disable

[netlogon]
    path = /usr/local/samba/var/locks/sysvol/alfr.local/scripts
    read only = No

[sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = No

[homes]
    comment = Eigener Ordner
    path = /srv/samba/homes/%S
    read only = No
    create mask = 0611
    directory mask = 0711
    browseable = No
    vfs objects = acl_xattr, full_audit
    full_audit:failure = connect opendir disconnect unlink mkdir rmdir open rename
    full_audit:success = connect opendir disconnect unlink mkdir rmdir open rename

Выход ps aux (вырезать неважные вещи)

root@testsrv:~# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       699  0.0  0.0   7272   608 ?        Ss   08:08   0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth
bind       827  0.0  2.8 502280 58392 ?        Ssl  08:08   0:01 /usr/sbin/named -u bind
dhcpd      833  0.0  0.2  14552  4476 ?        Ss   08:08   0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/ltsp/dhcpd.conf
openldap  1024  0.0  0.3 722000  6524 ?        Ssl  08:08   0:00 /usr/sbin/slapd -h ldap://127.0.0.1:390/ ldaps://127.0.0.1:637/ ldapi://%2fvar%2frun%2fslapd%2fldapi/??
root      1051  0.0  0.0 693092  1172 ?        Ssl  08:08   0:00 /usr/sbin/nscd
nslcd     1075  0.0  0.0 443600  1376 ?        Ssl  08:08   0:00 /usr/sbin/nslcd
ntp       1279  0.0  0.0  25960  1836 ?        Ss   08:08   0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:114
root      1595  0.0  2.2 534364 46152 ?        Ss   09:52   0:00 samba start
root      1597  0.0  1.8 538976 38532 ?        S    09:52   0:00 samba start
root      1598  0.0  1.7 539772 35624 ?        S    09:52   0:00 samba start
root      1599  0.0  1.6 536876 33716 ?        S    09:52   0:00 samba start
root      1600  0.0  1.6 534364 34568 ?        S    09:52   0:00 samba start
root      1601  0.0  1.8 534804 37568 ?        S    09:52   0:00 samba start
root      1602  0.0  1.8 538516 37212 ?        S    09:52   0:00 samba start
root      1603  0.0  1.6 534364 34328 ?        S    09:52   0:00 samba start
root      1604  0.0  1.6 537192 33928 ?        S    09:52   0:00 samba start
root      1605  0.0  1.5 534364 32716 ?        S    09:52   0:00 samba start
root      1606  0.0  2.0 534364 41264 ?        S    09:52   0:00 samba start
root      1607  0.0  1.6 534364 33884 ?        S    09:52   0:00 samba start
root      1608  0.0  1.6 534364 33360 ?        S    09:52   0:00 samba start

/etc/nsswitch.conf

root@testsrv:~# cat /etc/nsswitch.conf 
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

# pre_auth-client-config # passwd:         compat
passwd: files ldap
# pre_auth-client-config # group:          compat
group: files ldap
# pre_auth-client-config # shadow:         compat
shadow: files ldap

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

# pre_auth-client-config # netgroup:       nis
netgroup: nis

Я не вижу директивы безопасности в вашем файле конфигурации. Я предполагаю, что вам нужен security = ad. В прошлом месяце я пытался сделать то же самое - использовать OpenLDAP в качестве основной базы данных для входа в систему.

Я протестировал несколько подходов:

  1. Samba 4 AD не может доверять на данный момент (Samba Team скоро опубликует Samba 4.2 на момент написания), поэтому вы не можете использовать механизмы доверия.

  2. Samba 4 в AD, насколько мне известно, не может быть основана на OpenLDAP из-за отсутствия схем, необходимых для Active Directory.

  3. Я устал использовать программное обеспечение под названием LSC, которое в основном позволяет синхронизировать пользователя и группы между AD и OpenLDAP. Здесь тоже не повезло. Документация и примеры LSC устарели и несовместимы с текущей версией. Наконец-то мне удалось заставить работать синхронизацию пользователей, но есть несколько ошибок (по крайней мере, в LSC v2.0 я устал), когда вы обновляете пароль в OpenLDAP, LSC не поймает его. Вы должны хранить пароли в виде обычного текста, чтобы он работал.

На данный момент нет контроллера Samba AD с OpenLDAP в качестве бэкэнда. Я планирую использовать классический контроллер домена NT, как только Samba будет поддерживать доверительные отношения, тогда я хочу делегировать доверительные отношения в одном направлении (с samba4 NT DC на Samba4 AD) и использовать его на контроллере домена AD с информацией о пользователе, расположенной в OpenLDAP.

Если кто-то найдет здесь ошибку, я буду более чем рад ее услышать. ;-)

ОБНОВИТЬ: Согласно информации Франческо Мальвецци в Samba 4.3, теперь поддерживаются доверительные отношения:

https://www.samba.org/samba/history/samba-4.3.0.html

Улучшенная поддержка доверенных доменов (как AD DC)

Поддержка доверенных доменов / лесов значительно улучшилась.

samba-tool получили подкоманды "domain trust" для управления доверием:

create - Создайте доверие домена или леса.

delete - Удалить доверие домена.

list - Список доверенных доменов.

namespaces - Управление пространствами имен доверия лесов.

show - Показать сведения о доверенном домене.

validate - Подтвердите доверие домена.

Внешние доверительные отношения между отдельными доменами работают в обоих направлениях (входящие и исходящие). То же самое относится и к корневым доменам доверия леса. Транзитивная маршрутизация в другой лес полностью функциональна для Kerberos, но еще не поддерживается для NTLMSSP.

Хотя многие вещи работают нормально, в настоящее время существует несколько ограничений:

  • Обе стороны доверия должны полностью доверять друг другу!
  • Никакие правила фильтрации SID не применяются!
  • Это означает, что контроллеры домена A могут предоставлять права администратора домена в домене B.
  • Невозможно добавить пользователей / группы доверенного домена в группы домена.

Пример конфигурации: https://www.samba.org/samba/history/samba-4.3.0.html

Установлены доверительные отношения, которые можно проверить с помощью winbind:

wbinfo -u -> получить список локальных пользователей

wbinfo -u --domain=trusted.domain.tld -> получить список доверенных пользователей домена (можно также использовать короткий домен)

Его также можно проверить с помощью --local-dc-username и --local-dc-password переключатели:

samba-tool domain trust validate trusted.domain.tld \ --local-dc-password=trustedAdminPass \ --local-dc-username=administrator \ -U administrator at trusted.domain.tld

Использование внутреннего DNS Samba делает пересылку DNS-запросов прозрачной (с помощью нескольких инструментов, которые я собираюсь проверить).

Чтобы иметь возможность подключаться к machine.A.domain.tld с использованием пользователя из B.domain.tld, вам необходимо войти в специальную группу «Прошедшие проверку» для авторизованных пользователей RDP.

Я все еще жду, когда он станет доступен на официальном канале в моем дистрибутиве (debian 8-9).

Я делал сервер LDAP с SAMBA. Проблемы, с которыми я столкнулся с SAMBA и которые могут вас беспокоить, находятся между конфигурациями разных версий SAMBA. Вы уверены, что использовали подходящую конфигурацию для своей версии самбы? Было бы очень полезно, если бы вы скопировали .bash_history, чтобы я мог поискать любую неправильную конфигурацию или даже протестировать ее на машине.

У вас явная необходимость использовать ldap?

Я использую активную директорию samba уже более года, и единственная проблема, с которой я столкнулся, - это timescew. Вам следует дважды проверить это, особенно когда вы используете виртуализированные машины.