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

LDAP: зачем хранить пароль root в файлах ldap conf?

У меня есть работающее решение LDAP + SSH, но я хотел бы спросить, зачем мне хранить корневой пароль ldap в libnss_ldap.secret и pam_ldap.secret? Кажется, это небезопасно, кто-то может взломать одну клиентскую машину ldap, а пароль ко всему ldap есть?

Как я могу этого избежать, действительно ли необходим пароль администратора ldap для аутентификации пользователей?

Спасибо, Мартин

IIRC, пользователь и пароль, которые должны быть сохранены, - это тот, который может читать все соответствующие атрибуты LDAP. Так уж получилось, что LDAP-root может их все прочитать. Если потребуется время для создания пользователя в структуре LDAP, который имеет возможность читать правильные атрибуты, но не записывать их, это позволит сохранить в этих файлах менее привилегированную учетную запись. В любом случае я считаю, что это лучшая практика.

Как говорит sysadmin1138, вам нужен доступ для чтения к базе данных LDAP. Вы можете добиться этого, добавив специального пользователя ldap с доступом для чтения ко всем атрибутам (кроме userPassword).

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: <some sha1 hash> 

А затем в файле управления доступом (при условии, что здесь OpenLDAP):

access to *
        by dn.regex="cn=admin,dc=example,dc=com" read
        by * read

Вы также можете предоставить доступ на чтение анонимным пользователям (ограничивая только userPassword). Тогда вам понадобится специальный пользователь-администратор, вы можете просто удалить libnss_ldap.secret и pam_ldap.secret. Это работает одинаково хорошо, и поля uid и gecos вашей пользовательской базы данных в любом случае являются секретом. Я обычно так и делаю. Вы можете установить ограничения на размер и ограничить доступ к почтовому атрибуту для аутентифицированных пользователей:

sizelimit 100
timelimit 60

access to attrs=userPassword
        by anonymous auth
        by * none

access to attrs=mail
    by self read
    by users read
    by * none

access to *
        by * read

Надеюсь, это поможет!

Единственный способ избежать этого - использовать kerberos с ldap. Для аутентификации используйте не ldap, а kerberos.

Если у вас Linux на базе Redhat, вы можете попробовать Freeipa. Их версия 2 почти готова, и она многообещающая (я тестировал ее в лаборатории, и ее действительно легко настроить, поддерживать и расширять). Как только версия 2 выйдет в производство, я намерен использовать ее везде, где смогу ;-)

Если вы не используете Linux, основанный на красной шляпе, то вам придется немало боли заставить это работать. Можно, но не для слабонервных. Я обнаружил, что эти инструкции по этому поводу работают довольно хорошо: rj systems howtos, пропустите материалы, не относящиеся к Kerberos / ldap. У Ubuntu есть документ сообщества (эти два слова не внушают мне особого доверия), в котором описываются следующие настройки: ubuntu openldap / керберос.

К счастью, с freeipa, если у вас нет серверов Windows, у нас будет достойный эквивалент AD для linux / unix.