Summary: | Ошибка при подключении к домену AD. Дистрибутив "Образование" | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Branch p8 | Reporter: | Константин Артюшкин <akv> | ||||||
Component: | alterator-auth | Assignee: | Andrey Cherepanov <cas> | ||||||
Status: | CLOSED FIXED | QA Contact: | qa-p8 <qa-p8> | ||||||
Severity: | normal | ||||||||
Priority: | P3 | CC: | kondratyuk, lav, sin | ||||||
Version: | не указана | ||||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 30940 | ||||||||
Attachments: |
|
Description
Константин Артюшкин
2017-04-13 15:17:02 MSK
Created attachment 7045 [details]
system-auth.log
Сервер: task-samba-dc-4.6.2-alt1.M80P.1 samba-DC-doc-4.6.2-alt1.M80P.1 samba-DC-common-4.6.2-alt1.M80P.1 samba-DC-winbind-clients-4.6.2-alt1.M80P.1 samba-DC-client-4.6.2-alt1.M80P.1 task-samba-dc-4.6.2-alt1.M80P.1 samba-DC-libs-4.6.2-alt1.M80P.1 samba-DC-winbind-4.6.2-alt1.M80P.1 samba-DC-4.6.2-alt1.M80P.1 python-module-samba-DC-4.6.2-alt1.M80P.1 Клиент: task-auth-ad-sssd-0.33.1-alt1 samba-common-tools-4.6.2-alt2.M80P.1 samba-common-libs-4.6.2-alt2.M80P.1 samba-libs-4.6.2-alt2.M80P.1 samba-4.6.2-alt2.M80P.1 samba-common-4.6.2-alt2.M80P.1 samba-client-libs-4.6.2-alt2.M80P.1 samba-client-4.6.2-alt2.M80P.1 Invalid credential - неверный пароль. Но в GUI он должен парситься и сообщать по-русски. (В ответ на комментарий №3) > Invalid credential - неверный пароль. Но в GUI он должен парситься и сообщать > по-русски. Неверный пароль чего и какой момент? Команда kinit administrator@ETER.LOCALDOMAIN вроде отрабатывает успешно. # system-auth write ad eter.localdomain DC ETER 'administrator' '$iM$iMopen' kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) failed for ldap/dc.eter.localdomain with user[administrator] realm[ETER.LOCALDOMAIN]: Invalid credentials Failed to join domain: failed to connect to AD: Invalid credentials kinit succeeded but ads_sasl_spnego_gensec_bind(KRB5) failed for ldap/dc.eter.localdomain with user[administrator] realm[ETER.LOCALDOMAIN]: Invalid credentials # kinit administrator@ETER.LOCALDOMAIN Password for administrator@ETER.LOCALDOMAIN: # klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@ETER.LOCALDOMAIN Valid starting Expires Service principal 13.04.2017 17:08:51 14.04.2017 03:08:51 krbtgt/ETER.LOCALDOMAIN@ETER.LOCALDOMAIN renew until 20.04.2017 17:08:46 Вот такие варианты проблем нужно, для начала, исключить: - Проблема синхронизации времени (лучше поставить везде chronyd и забыть о проблемах); - Проблема DNS (в resolv.conf должен быть указан один из контроллеров домена, играющий соответствующую роль, или выделенный для домена DNS-сервер); - Проблемы настройки KDC. Команды kinit - мало. Нужно проверить доступ к сервисам. Как минимум smbclient -k -L //dc.eter.localdomain, потом klist. (В ответ на комментарий №5) > Вот такие варианты проблем нужно, для начала, исключить: > - Проблема синхронизации времени (лучше поставить везде chronyd и забыть о > проблемах); Установил пакет chrony на сервер и на клиент, запустил сервис на обоих - пока не помогло. > - Проблема DNS (в resolv.conf должен быть указан один из контроллеров домена, > играющий соответствующую роль, или выделенный для домена DNS-сервер); Если я правильно понял то сервер и клиент должны корректно отзываться на комманду host eter.localdomain: Сервер: #host eter.localdomain eter.localdomain has address 192.168.4.51 Клиент: #host eter.localdomain eter.localdomain has address 192.168.4.51 Каким ещё способами моно проверить настройку dns? > - Проблемы настройки KDC. Команды kinit - мало. Нужно проверить доступ к > сервисам. Как минимум smbclient -k -L //dc.eter.localdomain, потом klist. Вот тут уже интересно Клиент: # kinit administrator@ETER.LOCALDOMAIN Password for administrator@ETER.LOCALDOMAIN: # smbclient -k -L //dc.eter.localdomain session setup failed: NT_STATUS_LOGON_FAILURE # klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@ETER.LOCALDOMAIN Valid starting Expires Service principal 14.04.2017 18:12:02 15.04.2017 04:11:58 cifs/dc.eter.localdomain@ETER.LOCALDOMAIN renew until 21.04.2017 18:11:54 14.04.2017 18:11:58 15.04.2017 04:11:58 krbtgt/ETER.LOCALDOMAIN@ETER.LOCALDOMAIN renew until 21.04.2017 18:11:54 Сервер: #kinit administrator@ETER.LOCALDOMAIN Password for administrator@ETER.LOCALDOMAIN: # smbclient -k -L //dc.eter.localdomain SPNEGO: Could not find a suitable mechtype in NEG_TOKEN_INIT session setup failed: NT_STATUS_INTERNAL_ERROR # klist Ticket cache: KEYRING:persistent:0:0 Default principal: administrator@ETER.LOCALDOMAIN Valid starting Expires Service principal 14.04.2017 18:13:25 15.04.2017 04:13:25 krbtgt/ETER.LOCALDOMAIN@ETER.LOCALDOMAIN renew until 21.04.2017 18:13:20 --- Выходит что нужно где-то настроить kerberos? 2sin: Женя, что скажешь по поводу SPNEGO: Could not find a suitable mechtype in NEG_TOKEN_INIT Нужны детали. Было бы крайне полезно приложить файл отчёта или ссылку на него где-нибудь в облаке с результатами упакованными с помощью утилиты сбора информации sos. Желательно также поднять при тестировании уровень логов. sosreport их тоже запакует. Вообще, место имеется для это Вообще, место для этой ошибки ("SPNEGO: Could not find a suitable mechtype in NEG_TOKEN_INIT") имеется ровно одно - функция spnego_parse_negTokenInit(): $ git grep gensec_spnego_parse_negTokenInit|cat auth/gensec/spnego.c:static NTSTATUS gensec_spnego_parse_negTokenInit(struct gensec_security *gensec_security, auth/gensec/spnego.c: nt_status = gensec_spnego_parse_negTokenInit(gensec_security, auth/gensec/spnego.c: nt_status = gensec_spnego_parse_negTokenInit(gensec_security, Такая ошибка - Could not find a suitable mechtype... - может возникнуть при расхождении версий клиентов и серверов. И я об этом не вижу никаких упоминаний. Даже дистрибутив "Образование" я не использовал так что не знаю - это p7 или p8? Ну, и сервер-то какой? Какова инфраструктура в которую добавляют клиент? (В ответ на комментарий №9) > Вообще, место для этой ошибки ("SPNEGO: Could not find a suitable mechtype in > NEG_TOKEN_INIT") имеется ровно одно - функция spnego_parse_negTokenInit(): > > $ git grep gensec_spnego_parse_negTokenInit|cat > auth/gensec/spnego.c:static NTSTATUS gensec_spnego_parse_negTokenInit(struct > gensec_security *gensec_security, > auth/gensec/spnego.c: nt_status = > gensec_spnego_parse_negTokenInit(gensec_security, > auth/gensec/spnego.c: nt_status = > gensec_spnego_parse_negTokenInit(gensec_security, > > Такая ошибка - Could not find a suitable mechtype... - может возникнуть при > расхождении версий клиентов и серверов. И я об этом не вижу никаких упоминаний. > Даже дистрибутив "Образование" я не использовал так что не знаю - это p7 или > p8? > > Ну, и сервер-то какой? Какова инфраструктура в которую добавляют клиент? https://bugzilla.altlinux.org/show_bug.cgi?id=33369#c2 Какая ещё информация нужна? Да, я уже пересмотрел... samba-DC-4.6.2-alt1.M80P.1 - сервер samba-4.6.2-alt2.M80P.1 - клиент. А информация нужна полная. По названию пакетов воспроизвести проблему не получится. Давайте собирём вывод утилиты sosreport на клиенте и на сервере. Поднимем уровень логов. Вот такая информация необходима. (В ответ на комментарий №11) > А информация нужна полная. По названию пакетов воспроизвести проблему не > получится. Давайте собирём вывод утилиты sosreport на клиенте и на сервере. > Поднимем уровень логов. Вот такая информация необходима. Какой уровень логов нужен? Вы про опцию --all-logs? Условно, я выделяю три уровня сложности из основных: log level = 3, 6 или 10 Всё зависит от объёма мусора для выделения существенного. Можно установить 6, по умолчанию, и 10, как расширенный. Упаковать их можно в два архива, созданных с помощью sosreport. Сначала прогнать 6, потом сделать sosreport-отчёт. Потом ещё раз 10. Вообще, даже 3 может быть полезен. Думаю сначала нужно смотреть на нём и логи сразу с ним присылать. (В ответ на комментарий №13) > Условно, я выделяю три уровня сложности из основных: > log level = 3, 6 или 10 > Всё зависит от объёма мусора для выделения существенного. Можно установить 6, > по умолчанию, и 10, как расширенный. > > Упаковать их можно в два архива, созданных с помощью sosreport. Сначала > прогнать 6, потом сделать sosreport-отчёт. Потом ещё раз 10. Вообще, даже 3 > может быть полезен. Думаю сначала нужно смотреть на нём и логи сразу с ним > присылать. Выполнил с уровнями 6 и 10. Результат можно найти по адресу https://stog.etersoft.ru/d/1a5ab7bce8/ К сожалению, запаковалось не всё, что нужно. Samba логи, вообще, отсутствуют. Давайте уточним команду. Предлагая, для верности включить нужные модули явно: # sosreport -e krb5,samba --all-logs Использовать нужно новую сборку sos из Сизифа. #182831 BUILDING #2 [locked] p8 sos.git=3.4-alt1%ubt Старая не собирает все нужные логи. Плюс я, вообще не обнаружил samba в архиве для сервера. Проверьте, пожалуйста, архив перед отправкой. Там должен быть запакаован весь /var/log/samba (В ответ на комментарий №15) > К сожалению, запаковалось не всё, что нужно. Samba логи, вообще, отсутствуют. > > Давайте уточним команду. Предлагая, для верности включить нужные модули явно: > # sosreport -e krb5,samba --all-logs > > Использовать нужно новую сборку sos из Сизифа. > #182831 BUILDING #2 [locked] p8 sos.git=3.4-alt1%ubt > Добавил эту версию $ rpm -qa | egrep -i --color -- "(sos)" sos-3.4-alt1.M80P.1 Обновил файлы в https://stog.etersoft.ru/d/1a5ab7bce8/. Теперь там логи выполненные командой # sosreport -e krb5,samba --all-logs. В логах сервера присутствует каталог /var/log/samba На данный момент 2017-06-05. Обновил пакеты samba (на данный момент 4.6.4 )на сервере и клиенте. Почистил стары конфиги по инструкции "https://www.altlinux.org/ActiveDirectory/DC/Создание нового домена" rm -f /etc/samba/smb.conf rm -rf /var/lib/samba mkdir -p /var/lib/samba/sysvol Создал заново samba-tool domain provision Ошибок при подключении с командой system-auth wrute больше нет Наткнулся снова на эту проблему, как на фантомную боль. [mastersin@kr01-dc-alt ~]$ sudo apt-get install /usr/bin/smbclient Reading Package Lists... Done Building Dependency Tree... Done Package /usr/bin/smbclient is a virtual package provided by: samba-DC-client 4.6.6-alt1.M70C.1 [Installed] samba-client 4.6.6-alt1.M70C.1 You should explicitly select one to install. E: Package /usr/bin/smbclient is a virtual package with multiple good providers. [mastersin@kr01-dc-alt ~]$ smbclient -k -L //kr01-dc-w2k8 SPNEGO: Could not find a suitable mechtype in NEG_TOKEN_INIT session setup failed: NT_STATUS_INTERNAL_ERROR [mastersin@kr01-dc-alt ~]$ klist Ticket cache: KEYRING:persistent:511:krb_ccache_ZFeuOaW Default principal: sin@DP.MOSREG.RU Valid starting Expires Service principal 17.07.2017 03:08:47 17.07.2017 13:08:47 krbtgt/DP.MOSREG.RU@DP.MOSREG.RU renew until 24.07.2017 03:08:42 [mastersin@kr01-dc-alt ~]$ klist -e Ticket cache: KEYRING:persistent:511:krb_ccache_ZFeuOaW Default principal: sin@DP.MOSREG.RU Valid starting Expires Service principal 17.07.2017 03:08:47 17.07.2017 13:08:47 krbtgt/DP.MOSREG.RU@DP.MOSREG.RU renew until 24.07.2017 03:08:42, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96 [mastersin@kr01-dc-alt ~]$ smbclient -k -L //kr01-dc-02 Connection to kr01-dc-02 failed (Error NT_STATUS_IO_TIMEOUT) И вот, что выясняется... [mastersin@kr01-dc-alt ~]$ sudo apt-get install samba-client Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: libnetapi libsmbclient samba-client-libs samba-common samba-common-libs samba-common-tools samba-libs The following packages will be REMOVED: samba-DC samba-DC-client samba-DC-common samba-DC-winbind samba-DC-winbind-clients The following NEW packages will be installed: libnetapi libsmbclient samba-client samba-client-libs samba-common samba-common-libs samba-common-tools samba-libs 0 upgraded, 8 newly installed, 5 removed and 0 not upgraded. Need to get 0B/6074kB of archives. After unpacking 8039kB of additional disk space will be used. Do you want to continue? [Y/n] Committing changes... Preparing... ################### [100%] 1: samba-common ################### [ 12%] 2: samba-client-libs ################### [ 25%] 3: libnetapi ################### [ 37%] 4: libsmbclient ################### [ 50%] 5: samba-libs ################### [ 62%] 6: samba-common-libs ################### [ 75%] 7: samba-common-tools ################### [ 87%] 8: samba-client ################### [100%] Running /usr/lib/rpm/posttrans-filetriggers Done. [mastersin@kr01-dc-alt ~]$ smbclient -k -L //kr01-dc-w2k8 Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin C$ Disk Default share IPC$ IPC Remote IPC NETLOGON Disk Logon server share SYSVOL Disk Logon server share Server Comment --------- ------- Workgroup Master --------- ------- Утилиты на клиенте и на сервере в сборках samba и samba-DC используют разную библиотеку Kerberos. На клиенте используется обычный MIT Kerberos, на контроллере домена - встроенный Heimdal. Очевидно у них разные настройки на придмет допустимых и поддерживаемых алгоритмов шифрования. В общем, дел не в алгоритмах шифрования. Это некорректный вывыод ошибки. strace показывает, что встроенная библиотека лезет не в тот (credential_cache) - то ли не умеет keyutils, вообще, то ли не понимает записи в настройках MIT Kerberos. [mastersin@kr01-dc-alt ~]$ strace -f smbclient -k -L //kr01-dc-w2k8 ... getuid() = 511 open("/home/mastersin/.krb5/config", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/krb5.conf", O_RDONLY) = 6 fstat(6, {st_mode=S_IFREG|0644, st_size=682, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1fde975000 read(6, "[logging]\n# default = FILE:/var/"..., 4096) = 682 read(6, "", 4096) = 0 close(6) = 0 munmap(0x7f1fde975000, 4096) = 0 open("/home/mastersin/.krb5/config", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/krb5.conf", O_RDONLY) = 6 fstat(6, {st_mode=S_IFREG|0644, st_size=682, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1fde975000 read(6, "[logging]\n# default = FILE:/var/"..., 4096) = 682 read(6, "", 4096) = 0 close(6) = 0 munmap(0x7f1fde975000, 4096) = 0 open("/tmp/krb5cc_511", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) write(2, "SPNEGO: Could not find a suitabl"..., 61SPNEGO: Could not find a suitable mechtype in NEG_TOKEN_INIT ) = 61 close(3) = 0 fstat(1, {st_mode=S_IFCHR|0622, st_rdev=makedev(136, 6), ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1fde975000 write(1, "session setup failed: NT_STATUS_"..., 47session setup failed: NT_STATUS_INTERNAL_ERROR ) = 47 close(4) = 0 exit_group(1) = ? +++ exited with 1 +++ Если закомментировать вот эту строку, то всё отрабатывает. [mastersin@kr01-dc-alt ~]$ grep ccache_name /etc/krb5.conf # default_ccache_name = KEYRING:persistent:%{uid} [mastersin@kr01-dc-alt ~]$ kinit kinit: Client 'mastersin@DP.MOSREG.RU' not found in Kerberos database while getting initial credentials [mastersin@kr01-dc-alt ~]$ kinit sin Password for sin@DP.MOSREG.RU: [mastersin@kr01-dc-alt ~]$ klist Ticket cache: FILE:/tmp/krb5cc_511 Default principal: sin@DP.MOSREG.RU Valid starting Expires Service principal 17.07.2017 04:17:55 17.07.2017 14:17:55 krbtgt/DP.MOSREG.RU@DP.MOSREG.RU renew until 24.07.2017 04:17:48 [mastersin@kr01-dc-alt ~]$ smbclient -k -L //kr01-dc-w2k8 Sharename Type Comment --------- ---- ------- ADMIN$ Disk Remote Admin C$ Disk Default share IPC$ IPC Remote IPC NETLOGON Disk Logon server share SYSVOL Disk Logon server share Server Comment --------- ------- Workgroup Master --------- ------- > Если закомментировать вот эту строку, то всё отрабатывает. > [mastersin@kr01-dc-alt ~]$ grep ccache_name /etc/krb5.conf > # default_ccache_name = KEYRING:persistent:%{uid} Не очень понял, как избавились от ошибки — комментированием этой строки? А к чему это приведёт? Хорошо бы не выставлять CLOSED FIXED без комментариев, а то тут ни CLOSED, ни FIXED. (В ответ на комментарий №20) > > Если закомментировать вот эту строку, то всё отрабатывает. > > > [mastersin@kr01-dc-alt ~]$ grep ccache_name /etc/krb5.conf > > # default_ccache_name = KEYRING:persistent:%{uid} > Не очень понял, как избавились от ошибки — комментированием этой строки? А к > чему это приведёт? > Хорошо бы не выставлять CLOSED FIXED без комментариев, а то тут ни CLOSED, ни > FIXED. (В ответ на комментарий №20) > > Если закомментировать вот эту строку, то всё отрабатывает. > > > [mastersin@kr01-dc-alt ~]$ grep ccache_name /etc/krb5.conf > > # default_ccache_name = KEYRING:persistent:%{uid} > Не очень понял, как избавились от ошибки — комментированием этой строки? А к > чему это приведёт? > Хорошо бы не выставлять CLOSED FIXED без комментариев, а то тут ни CLOSED, ни > FIXED. А мы будем эту строку комментировать по умолчанию? Сейчас она как и была # rpm -qf /etc/krb5.conf libkrb5-1.16.3-alt1 а с ней ничего не работает с новоприехавшей самбой. Почти аналогичное описание проблемы: https://bugs.etersoft.ru/show_bug.cgi?id=13785 |