четверг, 20 мая 2010 г.

Настройка OpenLDAP-клиента

Продолжаю тему OpenLDAP.

Следующая наша задача - подключение клиентских машин.

На сервере необходимо разрешить внешние подключения по TCP на порт 389.

В CentOS на клиентской стороне оказалось достаточным воспользоваться специальной утилитой от Red Hat - authconfig.
Сам authconfig предназначен для работы с командной строкой, но к нему есть текстовый интерфейс authconfig-tui и графический authconfig-gtk.
Нужно лишь установить две галочки напротив пунктов LDAP, указать ldap-сервер и базовый dn (dc=oper777,dc=local).

Но универсальным способом можно считать ручную настройку. Эти же действия первым делом выполнил на самом сервере, после чего повторил на клиентской стороне.

Установим пакеты для подключения.
CentOS:
# yum install openldap nss_ldap

Gentoo:
# emerge openldap nss_ldap pam_ldap

Далее необходимо добавить следующие четыре строки в /etc/pam.d/system-auth (при этом имеющиеся строки в файле не трогать):
auth       sufficient   pam_ldap.so use_first_pass
account    sufficient   pam_ldap.so
password   sufficient   pam_ldap.so use_authtok use_first_pass
session    optional     pam_ldap.so

Вот мой system-auth:
#%PAM-1.0
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     sufficient    pam_ldap.so
account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok use_first_pass
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

В файле /etc/ldap.conf нужно найти, раскоментировать и изменить следующие строки:
suffix          "dc=oper777,dc=local"

uri ldap://192.168.1.204/
pam_password exop

ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=People,dc=oper777,dc=local
nss_base_shadow ou=People,dc=oper777,dc=local
nss_base_group  ou=Groups,dc=oper777,dc=local
nss_base_hosts  ou=Hosts,dc=oper777,dc=local

scope one

В сервера надо забрать файл /etc/openldap/ldap.conf:
# scp 192.168.1.204:/etc/openldap/ldap.conf /etc/openldap

В файле /etc/nsswitch.conf
passwd:         files ldap
group:          files ldap
shadow:         files ldap

Готово. Можно попробовать войти под учетной записью oper.

2 комментария:

  1. А что обозначает эта строка:

    nss_base_hosts ou=Hosts,dc=oper777,dc=local

    Что нужно чтобы добавить ее на сервер? в первой статье по настройке сервера не было подобнвъ данных

    ОтветитьУдалить
  2. Да, она, по идее, и не нужна. Её суть в том, чтобы client мог смотреть список хостов в ldap (как в MS Active Directory), но, поскольку подобной строки в /etc/nsswitch.conf нет, то эта функция не должна работать. Действительно можно убрать или закоментировать (тем более, что конфигурация сервера эту функцию не поддерживает).

    ОтветитьУдалить