LINUX.ORG.RU

SSH LDAP Invalid credentials

 , ,


0

1

Всем привет. Использую NSS_LDAP для атворизации SSH по доменному имени пользователя AD.

Настроил Nslcd.conf на свой домен

dc=office

binddn cn=testuser,dc=office

bindpw testpass

Перезагружаю nslcd.

Пытаюсь получить пароли getent passwd и в логах syslog вижу, что

<passwd(all)> no available LDAP server found: Invalid credentials

Пользователь есть, пароль верный. Время настроено верно на обоих серверах. Мб я что-то упустил? Подскажите, пожалуйста

Тестирую так же через ldapsearch - та же ошибка (Invalid Credentials)



Последнее исправление: WeSTMan (всего исправлений: 2)

Пользователя нет, пароль неверный

О чём тебе прямо сообщают -
Invalid credentials

zgen ★★★★★
()
Ответ на: комментарий от zgen

Я понимаю, но пользователь есть. Я лично задавал ему пароль. Лежит по адресу

ou=Users,dc=office,dc=organiz,dc=ru

testuser

cn=testuser

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Использую

dc=office,dc=organiz,dc=ru

binddn cn=testuser,OU=Users,dc=office,dc=organiz,dc=ru

bindpw testpass

Ошибка такая же. Пробую через ldapsearch так:

ldapsearch -D «testuser@office.organiz.ru» -W -H ldap://192.168.0.23

и ввожу пароль, то пишет no such object. Если введу неверный пароль, то Invalid credentials. (No such object - видимо смог авторизоваться)

А если так:

ldapsearch -x -D «cn=testuser,ou=Users,dc=office,dc=organiz,dc=ru» -W -H ldap://192.168.0.23/

То в любом случае - Invalid Credentials.

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Проблема решена. Поставил вместо ou=Users - cn=Users.

Заработало. Спасибо. Только теперь возникла другая проблема) Люди не авторизовываются с помощью SSH под доменными учетками. Использую NSS_LDAP. Может вписать куда-то надо для авторизации?

Стала появляться ошибка

Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.

Сейчас буду разбираться

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 1)
Ответ на: комментарий от WeSTMan

Люди не авторизовываются с помощью SSH под доменными учетками

тебе надо принудительно включить авторизацию LDAP, в зависимости от системы делается по разному..

centos7:

authconfig --updateall --enableldap --enableldapauth

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

Возможно у меня уже включено, так как я пытался просто авторизоваться по SSH и в логах видел ошибку как раз при авторизации

<authz=«testuser»> no available LDAP server found: Invalid credentials

Теперь при каждой авторизации выскакивает ошибка

Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.

и команда getent passwd не выдает моего пользователя. Видимо еще нет до конца синхронизации. Использую Ubuntu

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

Ты нас вместо Гугла используешь или вместо переводчиков с английского на русский?

Или вместо рабов, которые должны то что ты хочешь вместо тебя сделать, а ты просто должен на какие тебе сказали кнопки нажать?

Я немного не пойму, требуются пояснения

zgen ★★★★★
()
Ответ на: комментарий от WeSTMan

Первое что нужно - это научиться задавать вопросы так, чтобы это перестало быть похоже на «у меня не работает, помогите».

1. Описывать что сделано и как
2. Описывать что не работает и как, какие ошибки выдает
3. Описывать искали ли вы в гугле в связи с этим, что нашли и что в найденном непонятно
4. Прикладывать конфиги, выжимки из них (кроме комментариев), а не сочинять их на ходу когда пишете сообщение с вопросом на форум

Чтобы не получалось, что вы в трех разных сообщениях пишете 3 разных варианта:
binddn cn=testuser,dc=office
binddn cn=testuser,OU=Users,dc=office,dc=organiz,dc=ru
Поставил вместо ou=Users - cn=Users.

Если бы вы не занимались херней и не сочиняли будто у вас домен настроен так, а потом так, а потом эдак - то ответ бы вы получили конкретный и первым же сообщением


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

А когда он пишет «у меня теперь другая ошибка, не хочу думать, хочу чтобы вы исправили»... тогда впечатления не очень

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

И так, ранее тема поднималась

Проблема входа в LDAP

У меня сервер Win, где AD

Поставил nscd. Теперь при авторизации пользователя выдает:

nscd: nss_ldap: failed to bind to LDAP server ldapi://192.168.0.23: Invalid credentials

Поправил все это дело в /etc/ldap.conf и ошибки ушли. Но под пользователя я так и не могу попасть. Access Denied. В логах авторизации вот что:

Oct 14 14:24:22 test1 sshd[936]: Invalid user testuser from IP port 59778

Oct 14 14:24:26 test1 sshd[936]: pam_unix(sshd:auth): check pass; user unknown

Oct 14 14:24:26 test1 sshd[936]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=IP

Oct 14 14:24:29 test1 sshd[936]: Failed password for invalid user testuser from 193.29.19.21 port 59778 ssh2

Не слова о ldap, хотя ранее видно, что он пытался соединиться с LDAP при авторизации. Собственно я не пойму - куда дальше смотреть

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Может пойти по другому пути? Есть утилита sssd. Она может использовать LDAP подключение и авторизацию SSH без ввода системы в домен?

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

у вот обратили внимание, что ранее поднятой теме человек правил какие-то «непонятные» файлы в /etc/pam.d/ ? Как получилось так, что вы на это забили?

ssh использует pam (https://en.wikipedia.org/wiki/Pluggable_authentication_module) для авторизации, вы должны настроить pam чтобы он тоже использовал ldap

Обычно для этого достаточно прочитать «как настроить авторизацию ssh через ldap» на сайте где выложена документация для вашего дистрибутива. Но вы это поленились сделать, хотя там часто чуть ли не пошаговая инструкция дана.

Ну или понимать что-то в том, что вы делаете. Очевидно пока вы не понимаете и вам сложно.

Настройте pam для ssh чтобы он смотрел в ldap тоже, тогда либо вы увидите попытки подключения к AD или у вас всё заработает (скорее всего нет, но вы хотя бы продвинитесь)

Может пойти по другому пути? Есть утилита sssd. Она может использовать LDAP подключение и авторизацию SSH без ввода системы в домен?

Нет, вы ожидаете что если вы что-то поставили, то у вас всё заработает просто так. И если вы поставили одну хрень, и она не заработала, то надо просто поставить другую хрень и она заработает. В мире юникс всё работает не так.

Доводите дело до конца, разбирайтесь что к чему, а не кидайтесь от одного к другому.

Конечно создатели дистрибутивов иногда добавляют всякие вопросы где вы выбираете «правильные» настройки или вводите их в качестве ответа, но сильно полагаться на них не стоит, и особенно не стоит, если вы не понимаете что вас спрашивают, и что вы должны выбрать.

Поэтому путь у вас один - читать документацию, разбираться, корректно настраивать и набираться опыта. Потом будет легче.

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

И так. По моему немного подразобрался. libnss-ldap - нужна, чтобы подтягивать пользователей из AD, например командой getent passwd мы должны получить доменных пользователей

Так же в nssswitch.conf указал passwd: другие ldap

libpam-ldap - позволяет авторизоваться в SSH через LDAP

Установил первый пакет, настроил, ошибок не наблюдаю. Прописываю getent passwd и не получаю доменных пользователей

Со вторым пакетом аналогично.

Так же добавил в /etc/pam.d/common-auth

auth [success=1 default=ignore] pam_ldap.so use_first_pass

Логов ошибок не вижу. не в syslog, не в auth.log.

Авторизация по домену не работает) Подскажешь?

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

С тобой сложно, хотя уже лучше чем в начале.

Так же в nssswitch.conf указал passwd: другие ldap

Так и указал, или ты таки начнёшь цитировать конфиги, а не сочинять их? Каждая сраная буква в конфиге важна, а ты позволяешь себе говорить что ты добавил «другие ldap»

Такое туда добавлять нельзя. Что за фигня?

Дальше даже не читал пока - не имеет смысла.
Тебе не имеет смысла настраивать pam пока ты не добьешься чтобы у тебя getent passwd отрабатывал. Делай по одному шагу, а не по 100 - тебе же проще будет разбираться где ты ошибку сделал.

zgen ★★★★★
()
Ответ на: комментарий от WeSTMan

Логов ошибок не вижу. не в syslog, не в auth.log.

И я не вижу. А, погоди! Я ведь сука не рядом с тобой сижу - не вижу ничего, что ты не показал. Уф. Тогда нормально.

zgen ★★★★★
()
Ответ на: комментарий от WeSTMan

libnss-ldap - нужна, чтобы

И хотя ты понял правильно, но рпределись уже, ты таки ставил libnss-ldap или nslcd (насколько я помню, они заменяют друг друга - либо одно, либо другое) или уже sssd сверху «доставил».

Пипец какой-то

zgen ★★★★★
()
Ответ на: комментарий от zgen

Где я намесил кучу всего - загубил машину. Развернул с бэкапа. Сейчас установил libnss_ldap, его настроил. Увидел ошибки

nss_ldap: failed to bind to LDAP server ldap://192.168.0.23/: Can’t contact LDAP server

Проверил соединение, например через telnet 192.168.0.23 389 - ответ есть. Почему то он не хочет соединяться с LDAP.

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Настройки nsswitch.conf

passwd: files systemd ldap

group: files systemd ldap

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

nss_ldap: failed to bind to LDAP server ldap://192.168.0.23/: Can’t contact LDAP server

Добейся чтобы ldapsearch тебе что-то возвращал, потом переходи к nss_ldap с настройками, которые ты передавал ldapsearch и с которыми ты добился его работоспособности

Потом, если всё еще будут проблемы, уже смотри над этой ошибкой (скорее всего опять с логином паролем накосячил или AD не позволяет авторизовываться на незащищенном порту) или увеличивай в настройках дебаг, чтобы увидеть в логах на каком этапе всё валится.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Этой командой я получаю no such object

ldapsearch -x -D «cn=testuser,cn=Users,dc=office,dc=organiz,dc=ru» -W -H ldap://192.168.0.23

Это «говорит о том, что я успешно авторизовался». То есть LDAP меня принял.

В конфиге /etc/ldap.conf, который читает Libnss_ldap прописано:

host 192.168.0.23

uri ldap://192.168.0.23/

base dc=office,dc=organiz,dc=ru

binddn cn=testuser,cn=Users,dc=office,dc=organiz,dc=ru

bindpw testpass

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

который читает Libnss_ldap прописано:

неверное утверждение, с чего ты взял это? Ищи верное. А то я устал уже тебя поправлять.

Заметил? На каждом шаге ошибка. Всегда проверяй каждый шаг и каждое своё допущение.

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

Понял, буду искать.

Но провел эксперимент, заменил в /etc/ldap.conf ИП адрес и он так же заменился в ошибке. Поэтому я и сделал вывод, что он грузит этот конфиг

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Проверил. Конфиг читает именно с /etc/ldap.conf. Не понятно - почему не хочет соединяться с сервером

WeSTMan
() автор топика
Ответ на: комментарий от zgen

По сути - я пытаюсь подключиться к контроллеру домена, у меня нет отдельного LDAP Server

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Оставил я пакет libnss-ldap. Мучаюсь с nslcd. Он работает. Настроил, в логах увидел

Oct 15 09:24:49 test1 nslcd[975]: accepting connections

Oct 15 09:24:49 test1 nslcd[955]: …done.

Oct 15 09:24:49 test1 systemd[1]: Started LSB: LDAP connection daemon.

Поправил nsswitch.conf

passwd: files systemd ldap

Делаю

getent passwd testuser

И ничего не происходит) Ошибок нигде нет. Ну думаю пойду дальше. Ставлю tshark, завожу его с прослушиванием порта 389 TCP. И о чудо, он работает. Обмен данными идет. Но почему-то LDAP возвращает 0.

16 199.732664825 192.168.0.22 → 192.168.0.23 LDAP 271 searchRequest(14) «dc=office,dc=organiz,dc=ru» wholeSubtree

17 199.733290281 192.168.0.23 → 192.168.0.22 LDAP 387 searchResRef(14) | searchResRef(14) | searchResRef(14) | searchResDone(14) success [0 results]

Может я как-то не так фильтра задал? Хотя все стоит по умолчанию

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

А, ещё ученика testuser не является админкой, тупо пользователь

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 1)
Ответ на: комментарий от zgen

Посмотрел пакет, который отправляется по LDAP от Linux

dc=office,dc=organiz,dc=ru

objectClass=posixAccount

uid=testuser

iuid

userPassword

uidNumber

gidNumbercn

homeDirectory

loginShellgecos

description

objectClass

Это от команды

getent passwd testuser

Ошибки вроде нет, но и возврат 0(

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 2)
Ответ на: комментарий от zgen

Как я понимаю - он дает неверный запрос на сервер

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Почему то в запросе есть objectclass=posixAccount и uid = testuser, посмотрел в АД

В objectclass=posixAccount нету, а пользователь стоит в SAMAccountName=testuser

По идее надо поменять настройки ldap, чтобы смотрел нужные параметры

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Теперь есть результат, Добавил в ldap.conf

nss_map_objectclass posixAccount user

nss_map_objectclass shadowAccount user

nss_map_attribute uid sAMAccountName

pam_login_attribute sAMAccountName

pam_filter objectClass=User

Теперь если сделать getent passwd testuser, в tshark я вижу, что есть 1 result, то есть он его нашел. Но по прежнему я его не вижу в getent passwd(

Так же поставил libpam_ldap, попробовал авторизоваться через testuser. по сети видно, что он его нашел, но в итоге выдал Invalid Credentials, хотя я не видел, чтобы он передавал пароль через LDAP(

WeSTMan
() автор топика
Ответ на: комментарий от zgen

обнаружил, что вместо пароля почему то передается INCOR

Верноятно INCORRECT, надо узнать, как передать пароль через LDAP

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 1)
Ответ на: комментарий от zgen

Перепробовал все pam_password, ничто не влияет. Пароль просто не хочет передаваться, вместо него в пакете INCOR

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

getent passwd testuser

До тех пор, пока у тебя не будет работать getent passwd даже не думай дальше.

Я тебе говорил уже, перестать скакать от одного к другому.
Представь, что примерно у миллиарда пользователей есть AD и примерно у каждого второго из них настроена авторизация в ssh c проверкой в AD. (включая меня)

Представь что правда баг и это перестало работать. Прикинь сколько воплей было бы? Ты их видишь? Я - нет. Догадываешься почему?

Правильно. Единственная причина почему у тебя не работает - это потому что ты неправильно настроил. А настроил ты неправильно, потому что ты вообще не понимаешь, что делаешь.

Всё будет хорошо, двигайся к пониманию.

не занимайся херней, делай чтобы getent passwd тебе выдавал пользователей AD

zgen ★★★★★
()
Ответ на: комментарий от zgen

Я вас понял. Настроил ldap.conf, выставил правильные фильтры.

Делаю

getent passwd testuser - пустота!!!

Но через tshark я вижу, что он соединяется успешно с LDAP, что он нашел пользователя testuser и вернул успешный результат результат. Ну вот что тут еще не хватает? Ошибок нет, но и нет правильного результата работы

WeSTMan
() автор топика
Ответ на: комментарий от WeSTMan

Забудь про tshark то что ты там что-то видишь - это конечно хорошо, но тебе нужен пользователь.

Давай уже прекращай скакать, и определись, какое ПО ты используешь - я не успеваю за тобой следить. nslcd или nss_ldap?

Какой у тебя дистрибутив линукс?

zgen ★★★★★
()
Ответ на: комментарий от WeSTMan

Очень внимательно прочти следующую ссылку, начиная с заголовка «libnss-ldap»

Вот официальная документация

https://help.ubuntu.com/community/ActiveDirectoryHowto

Пока ничего не далай, просто внимательно прочти, и расскажи что ты понял.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Я понял, что настройки ldap.conf зависят от того, какие настройки у меня есть на Active Directory. Проблем с доступом к LDAP нет. Кэш выключен nscd. Есть отличия в моей настройке, в плане nsswitch.conf, там используется

passwd_compat: ldap

у меня же

passwd: files systemd ldap

У меня не установлен. MSSFU, я думаю это и не требуется, стоит вин сервер 2008.

Чтение настроек происходит из /etc/ldap.conf

Дальше про авторизацию. Но до неё пока рано

Linux сервер не в домене. Это не требуется

Так же использую настройку RFC 2307 (AD) mappings

WeSTMan
() автор топика
Последнее исправление: WeSTMan (всего исправлений: 2)
Ответ на: комментарий от WeSTMan

твой ldap.conf без пароля выкладывай. Ну или глазами смотри, насколько он похож на тут что выложен в докуменитации.

zgen ★★★★★
()
Ответ на: комментарий от zgen

base dc=office,dc=organiz,dc=ru

uri ldap://192.168.0.23/

binddn cn=testuser,cn=Users,dc=office,dc=organiz,dc=ru

bindpw testpass

scope sub

pam_filter objectclass=User

pam_login_attribute sAMAccountName

pam_lookup_policy yes

nss_map_objectclass posixAccount user

nss_map_objectclass shadowAccount user

nss_map_attribute uid sAMAccountName

nss_map_attribute homeDirectory unixHomeDirectory

nss_map_attribute shadowLastChange pwdLastSet

nss_map_objectclass posixGroup group

nss_map_attribute uniqueMember member

pam_login_attribute sAMAccountName

pam_filter objectclass=User

pam_password ad

nss_map_attribute userPassword authPassword

sasl_secprops maxssf=0

WeSTMan
() автор топика
Ответ на: комментарий от zgen

passwd: files systemd ldap

group: files systemd ldap

shadow: files ldap

gshadow: files

hosts: files dns

networks: files

protocols: db files

services: db files

ethers: db files

rpc: db files

netgroup: nis

WeSTMan
() автор топика
Ответ на: комментарий от zgen

Сделал, перезагрузил машину. Все так же, getent passwd не показывает доменных пользователей, но по факту ответ от LDAP приходит

WeSTMan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.