Минимальный LDAP + пример аутентификации пользователя для *nix
Мне нужно установить ОЧЕНЬ минимальную настройку LDAP на RHEL / Fedora.
- нет необходимости в Kerberos
- хотел бы избежать любой настройки DNS-сервера
- не против, если это небезопасно: это только для тестирования.
- аутентификация всех пользователей осуществляется через ldap (без зависимости Kerberos или /etc/ passwd)
Я видел такие инструменты, как openldap, но надеялся, что, может быть, есть готовый скрипт или что-то, что может yum установить минимальные компоненты ldap и включить необходимые изменения в /etc/ files для настройки простой настройки входа пользователя на основе LDAP.
Есть ли такой инструмент - или такие вещи обычно делаются в тяжелом контексте?
1 ответ
Следующие работы для RHEL 6.x. С Fedora это может работать с очень небольшими изменениями или без изменений, хотя это не было проверено.
Вам нужны пакеты nss-pam-ldapd и openldap-клиентов. В зависимости от того, как вам нравится работать, вы также можете добавить nscd и / или nslcd поверх этого. Установите необходимые пакеты с yum -y install nss-pam-ldapd openldap-clients
команда может также добавить некоторые пакеты зависимостей.
Здесь все может стать немного волосатым. Возможно, вы захотите, чтобы произошли две вещи: 1) аутентификация пользователей по LDAP и 2) наличие пользовательских записей для передачи passwd/group также из LDAP. Я не собираюсь углубляться в последнее, потому что это сильно зависит от доступных объектов LDAP и их атрибутов. Первый довольно простой, хотя.
Для аутентификации пользователей из LDAP, независимо от того, как они подключаются (это может быть локальный виртуальный терминал, SSH-соединение, локальный сеанс X11 GDM или почти все), вы используете PAM. Файлы вообще находятся в /etc/pam.d
и в RHEL то, что вы действительно хотите возиться, это /etc/pam.d/system-auth
, Несколько других файлов, таких как /etc/pam.d/password-auth
являются символическими ссылками на этот файл. Файл /etc/pam.d/system-auth
консультируется, когда пользователь аутентифицирован, если не существует специфической для службы конфигурации PAM (например, /etc/pam.d/sshd
который в системах RHEL, однако, консультируется /etc/pam.d/system-auth
- подробности см. в содержании файла).
Следующий пример позволит вашим пользователям проходить аутентификацию с локального пароля (т.е. /etc/passwd
/ /etc/shadow
), а затем из LDAP. Идея состоит в том, что локальные пароли переопределяют пароли LDAP, но вы можете захотеть использовать их наоборот, т.е. так что локальный пароль - это запасной вариант вместо LDAP. Что следует добавить в файл /etc/pam.d/system-auth
(оставьте остальную часть /etc/pam.d/system-auth
как есть, не заменяйте все содержимое файла следующим):
auth sufficient pam_unix.so nullok try_first_pass # try a local passwd entry
auth sufficient pam_ldap.so use_first_pass # try a LDAP entry
auth required pam_deny.so # deny access if both passwd and LDAP fails
В дополнение к определению того, как ваши пользователи проходят аутентификацию, вам нужно сообщить pam_ldap.so о вашем сервере LDAP. Это определено в /etc/ldap.conf
, Страница руководства для этого файла доступна для чтения с man pam_ldap
в то время как man ldap.conf
скинет файл конфигурации клиентской библиотеки OpenLDAP (/etc/openldap/ldap.conf
) запись на вашем терминале. Минимум для вашего /etc/ldap.conf
для pam_ldap.so было бы что-то вроде следующего:
base <your_base_dn> # ou=Admin,o=Organization
uri <your_uri> # ldap://ldapsrv.org.com/
bind_policy soft # you might want to use hard too, but usually not
ssl off # you really should be using SSL/TLS
Предполагая, что ваш сервер LDAP возвращает правильные объекты posixAccount (скорее всего, это не тот случай, если вы используете Microsoft AD, для которой требуются дополнительные пакеты для возврата объектов posixAccount), это должно быть сделано, и ваши пользователи теперь должны иметь возможность аутентифицировать себя на основе вашего Сервер LDAP. Они все еще нуждаются в местной записи в /etc/passwd
для их UID и так далее. Если вы хотите получить всю информацию о пользователях из LDAP, а не просто аутентифицировать ее на своем сервере LDAP, вам нужно взглянуть на механизм nsswitch (см., Например, man nss
, man nsswitch.conf
, man nslcd.conf
).
Теперь это абсолютный минимум, и он не очень полезен и не безопасен. Скорее всего, вы хотите использовать pam_access.so для некоторых белых списков для пользователей и pam_env.so для удобства использования и так далее.