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

Как использовать PAM для проверки пароля LDAP для некоторых пользователей, но всегда использовать UID / GID из локальных файлов?

Для подгруппы моих пользователей в /etc/passwd, Я хотел бы настроить PAM (в Linux) для выполнения части проверки пароля при входе на сервер LDAP, игнорируя, что эти пользователи фактически указаны как отключенные в /etc/passwd. Специально, /etc/passwd и /etc/group следует использовать во всех случаях для UID и GID, чтобы такие свойства, как uidnumber и gidnumber не нужно добавлять в каталог (здесь Active Directory), в отличие от того, что обычно показано в документации, например HOWTO по реализации LDAP.

Возможно ли это (без разработки собственного модуля PAM)? Невозможно добавить свойства в каталог LDAP. Я не являюсь администратором домена Active Directory, и расширение участия до этого уровня выходит за рамки этого проекта. Это случай, когда система работает в среде, состоящей в основном из серверов Windows; Было бы неплохо, если бы назначенные пользователи Windows могли использовать свои пароли AD в рассматриваемой системе.

В зависимости от пользователя, пользователь должен быть проверен с помощью авторизации UNIX или авторизации LDAP, но не обоих одновременно. Я не могу добавлять атрибуты пользователям в Active Directory, но могу добавлять их в группы безопасности (и на самом деле хотел бы дополнительно потребовать, чтобы пользователи LDAP входили в определенную группу безопасности LDAP).

Спасибо, что обновили свой вопрос, этот совет часто принимают неверно.

Ваши требования, как я их понимаю:

  • UID/GID поиск для всех пользователей должен выполняться по локальным файлам.
  • Аутентификация для конкретный пользователи должны сначала попробовать LDAP (Active Directory).

Вкратце, да, это возможно, но для этого нужно действительно понимать, как работают эти подсистемы, а не полагаться на онлайн-HOWTO. Я собираюсь отослать вас к существующему моему ответу в качестве учебника. https://serverfault.com/a/538503/152073

NSS это система, которая выполняет поиск по UID и GID. Если вы не измените /etc/nsswitch.conf и скажи ему использовать ldap или sssd, ваши системные вызовы будут полагаться на локальные файлы. Большинство плагинов PAM для LDAP используют файл конфигурации совместно с плагином NSS для LDAP, но это не имеет значения, если плагин NSS не используется NSS.

Ваше требование делать это только для определенных пользователей сложнее. Настройте PAM, чтобы попробовать pam_ldap.so (или pam_krb5.so, или pam_winbind.so... зависит от того, что вы используете) как auth sufficient, непосредственно перед auth required pam_unix.so. sufficient означает «достаточно хорошо, остановись здесь». required означает «если мы зашли так далеко и этот тест не удался, аутентификация не удалась».

Это самый простой способ, но есть проблемы:

  1. Это приведет к блокировке паролей AD, если кто-то часто аутентифицируется с помощью локального пароля, который не соответствует их паролю AD (то есть они не проходят успешную аутентификацию в AD, как это часто бывает в других системах).
  2. Это также не сработает для ваших требований, если вы не хотите, чтобы действительные пароли AD учитывались для определенных пользователей.

Дайте мне знать, если вам действительно, действительно, действительно нужно пройти аутентификацию по LDAP только для определенного списка пользователей. Это определенно возможно, но это увеличит сложность конфигурации PAM, и я уже бросаю вам довольно много информации.


Расширяя ответ по запросу:

Моя рекомендация для жесткого контроля над тем, кто проходит аутентификацию по AD, - использовать pam_access.so. Чтобы это работало, модули PAM AD и Unix должен быть смежными и именно в таком порядке. Поместите перед ними следующую строку:

auth    [success=ignore default=1] pam_access.so accessfile=/etc/security/somefile.conf noaudit

success=ignore означает «если этот тест завершится успешно, игнорируйте эту строку и продолжайте как обычно». default=1 означает «во всех остальных случаях пропустить следующую строку». Вам нужно будет создать somefile.conf и определите список пользователей, которым разрешено использовать AD auth. Проверьте страницу руководства для access.conf Больше подробностей. Вы должны либо определить список всех пользователей в этом файле, либо создать локальную группу и проверить ее членство. Во всех случаях третье поле должно быть ALL. (т.е. + : whatever : ALL)

Ваше необязательное требование (контролируйте это с помощью группы безопасности AD) можно реализовать одним из двух способов:

  1. Если ваш модуль PAM позволяет вам указать запрос LDAP, который вызовет auth проверки, которые нужно пропустить на основе членства в группе, используйте это. Это не то же самое, что отказать пользователю через account если пароль удастся!
  2. Компрометация при поиске GID в активном каталоге. Это означает, что у вас будет passwd поиски указывают на ldap в /etc/nsswitch.conf, но ты бы добавить ldap линия к group. Объект группы безопасности должен быть настроен так, чтобы его можно было распознать как группу Unix, либо путем применения соответствующего объектного класса (т. Е. posixGroup) или настройте плагин NSS для распознавания его как одного. Если у вас нет сильного опыта в LDAP, вы можете просто передать это.

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