Translate

вівторок, 16 вересня 2014 р.

Configure Linux сlients to authenticate through OpenLDAP

Раніше я писав про установку та налаштування OpenLDAP серверу. Тож наразі прийшов час налаштування клієнтів для аутентифіікації через центральний сервер. Це так би мовити продовження попередньої статті, яку бажано прочитати спочатку.

Логінимось на клієнт та встановлюємо додаткові пакети:

# apt-get install libnss-ldap libpam-ldap nscd

Дебіан підтримує конфігурацію сервісів під час установки (шах і мат, RPM-щики), тому одразу відповідаємо на питання налаштування.

Вводимо адресу LDAP-сервера у вигляді ldap://1.2.3.4:

Вводимо root DN, абсолютно такий самий як і в попередній статті :


Конфігуруємо ldap на використання 3 версії протоколу:


Пропозиція кешувати локально паролі. Я погодився:


Відмовляємось:


Вводимо рут-аккаунт до LDAP-серверу. У моєму випадку це cn=admin,dc=ipeacocks,dc=info:


І пароль до cn=admin,dc=ipeacocks,dc=info:


Готово. Якщо щось було введено помилково, можна знову запустити конфігурацію:

# dpkg-reconfigure ldap-auth-config

Редагуємо /etc/nsswitch.conf:

# vim /etc/nsswitch.conf
...
passwd:          ldap compat
group:           ldap compat
shadow:          ldap compat
...
netgroup:        ldap
...

Перевіряємо та змінюємо за потреби /etc/ldap/ldap.conf:

# vim /etc/ldap/ldap.conf
...
BASE    dc=ipeacocks,dc=info
URI     ldap://1.2.3.4
...

Далі редагуємо конфігурацію PAM. PAM (Pluggable Authentication Modules) - модулі, що надають аутентифікацію клієнтам від аплікейшенів, що її надають. Система PAM працює на багатьох системах, проте щоб дозволити аутентифікацію через LDAP необхідно дещо відредагувати конфігураційний файл:

# vim /etc/pam.d/common-session

Та додати таку ж строку:
...
session  required                       pam_mkhomedir.so

Ця опція відповідає за автоматичне створення домашньої директорії після першого доступа до сервера користувача LDAP.

Перевіряємо параметри в /etc/pam.d/common-auth та за необхідності приводимо їх до вигляду поданого нижче:

# vim /etc/pam.d/common-auth
...
auth    [success=2 default=ignore]      pam_unix.so nullok_secure try_first_pass
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
...
auth    requisite                                   pam_deny.so
...
auth    required                                    pam_permit.so
...

Переглядаємо /etc/pam.d/common-account:

# vim /etc/pam.d/common-account
...
account [success=2 new_authtok_reqd=done default=ignore]        pam_unix.so
account [success=1 default=ignore]      pam_ldap.so
...
account requisite                       pam_deny.so
...
account required                        pam_permit.so
...

Також варто паревірити конфігураційний файл /etc/pam.d/common-password:

# vim /etc/pam.d/common-password
...
password        [success=2 default=ignore]      pam_unix.so obscure sha512
password        [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass
...
password        requisite                       pam_deny.so
...
password        required                        pam_permit.so
...

І останній /etc/pam.d/common-session-noninteractive:

# vim /etc/pam.d/common-session-noninteractive
...
session [default=1]                    pam_permit.so
...
session requisite                      pam_deny.so
...
session required                       pam_permit.so
...
session required                       pam_unix.so
session optional                       pam_ldap.so

Перевантажуємо nscd:

# /etc/init.d/nscd restart

Для того щоб користувачі мали права sudo, варто на LDAP-сервері створити POSIX-групу admin, додати до неї необхідних користувачів і перевірити конфігурацію sudoers на клієнті:

# visudo
...
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
...

Можна також обмежити доступ до серверів. Для цього необхідно додати новий об'єктний клас extensibleObject і додати новий атрибут host до запису користувача на LDAP сервері. І тоді вже на клієнті зробити правки конфігураційних файлів.

# vim /etc/ldap.conf
...
pam_filter | (host=thehostname)(host=\*)
...

Відповідно, значення запису host на LDAP має співпадати зі значенням host в записі на клієнті, що я навів вище. Ось ще 2 варіанти, як можна зробити те саме, проте із іншим підходом.

Ну власне все, можна спробувати підключитись до сервера, використовуючи аккаунти, що були додані в LDAP.

Посилання:
http://www.unixmen.com/configure-linux-clients-authenticate-using-openldap/
https://www.digitalocean.com/community/tutorials/how-to-authenticate-client-computers-using-ldap-on-an-ubuntu-12-04-vps
https://help.ubuntu.com/community/LDAPClientAuthentication
https://wiki.archlinux.org/index.php/openLDAP_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
http://seriousbirder.com/blogs/openldap-hostobject-class/
http://onemoretech.wordpress.com/2010/03/01/an-alternative-to-custom-objectclasses-the-extensibleobject/

Немає коментарів:

Дописати коментар