У нас есть кластер, который использует внутренний домен LDAP для аутентификации пользователей, который ранее использовал пароли, хранящиеся в LDAP. Теперь мы переместили машину входа на использование krb5 для аутентификации паролей через внешний kdc. Мы хотели бы удалить локальные пароли LDAP, если это возможно. Есть ли в ldap эквивалент традиционной команде unix auth usermod -p '!' user
?
решение1
Для OpenLDAP,удалить userPassword
атрибутс каждой учетной записи пользователя.
К сожалению, стандартных команд для управления учетными записями пользователей LDAP не существует, поэтому вам придется ldapsearch | awk/sed/grep | ldapmodify
написать скрипт пакетного обновления с использованием Perl/Python.
Альтернативно:Вместо того, чтобы полностью отключить аутентификацию по паролю LDAP, выможетпусть сервер LDAP проверяет пароли привязки с помощью Kerberos. Конечно, это не так хорошо, как фактическая аутентификация Kerberos (SASL GSSAPI), но это может быть полезно, если у вас все еще есть программное обеспечение, которое полагается на LDAP 'simple bind'.
userPassword
Изменение атрибута каждого пользователя на {SASL}user@REALM
(содержащий их принципала Kerberos) заставит OpenLDAP выполнять сквозную проверку пароля с использованием демона 'saslauthd' (из Cyrus SASL). Настройте его для запуска как , saslauthd -a krb5
и он будет проверять пароли с помощью вашего Kerberos KDC.
Обратите внимание, что saslauthdтребуетсистема должна иметь принципал «host/» в своей машинной таблице ключей (/etc/krb5.keytab).