- Главная... arrow - Статьи... arrow | - Linux arrow Интеграция Linux-клиента с LDAP сервером

#Записки о Unix/Linux/BSD/Solaris

Интеграция Linux-клиента с LDAP сервером
Автор H@wk!   
27:05:2009 г.
Данная статья описана применительно к клиентской системе "Ubuntu Desktop 9.04" и LDAP-серверу "OpenLDAP" (slapd 2.4.11). Описание настройки серверной части будет позже.

Настройка клиентской части.

1) Для начала нужно установить нужные пакетики:

sudo apt-get install libpam-ldap libnss-db nscd libnss-ldap nss-updatedb libpam-ccreds libpam-cracklib


2) Во время установи появится псевдо-графическое окно мастера настройки. Отвечаем:

LDAP server Uniform Resource Identifer
ldap://ldap.arkos.org.ru/

Distinguished name os the search base:
dc=arkos,dc=loc

LDAP version to use:
3

Make local root Database admin:
Да

Does the LDAP database require login?
Нет

LDAP account for root:
cn=admin,dc=arkos,dc=loc

LDAP root account password:
sercret (указывать, естественно, нужно ваш пароль)


На этом установка пакетов закончена. Стоит проверить настройки в файле /etc/ldap.conf. Чтобы избежать одного неприятного бага, которые может возникать с udev во время загрузки, нужно кой что сделать.
Открываем файл

sudo vim /etc/ldap.conf


находим в нем директиву bind_policy, расскоментируем и приводим в следющий вид:

bind_policy soft


3) Далее идем в /etc/auth-client-config/profile.d/:

cd /etc/auth-client-config/profile.d/


и создаем там файл open_ldap

sudo touch open_ldap


Заполняем его

sudo vim open_ldap

вот этим:

[open_ldap]
nss_passwd=passwd: files ldap
nss_group=group: files ldap
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: files ldap
pam_auth=auth       required     pam_env.so
        auth       sufficient   pam_unix.so likeauth nullok
#the following line (containing pam_group.so) must be placed before pam_ldap.so
#for ldap users to be placed in local groups such as fuse, plugdev, scanner, etc ...
        auth       required     pam_group.so use_first_pass
        auth       sufficient   pam_ldap.so use_first_pass
        auth       required     pam_deny.so
pam_account=account    sufficient   pam_unix.so
        account    sufficient   pam_ldap.so
        account    required     pam_deny.so
pam_password=password   sufficient   pam_unix.so nullok md5 shadow
        password   sufficient   pam_ldap.so use_first_pass
        password   required     pam_deny.so
pam_session=session    required     pam_limits.so
        session    required     pam_mkhomedir.so skel=/etc/skel/
        session    required     pam_unix.so
        session    optional     pam_ldap.so


Затем открываем файл /etc/nscd.conf:

sudo vim /etc/nscd.conf


и в нем меняем строчки:

positive-time-to-live passwd 2592000
positive-time-to-live group 2592000


Меняем настройки аудентификации, выполнив команду:

sudo auth-client-config -a -p open_ldap


Открываем файл /etc/security/group.conf

sudo vim /etc/security/group.conf


и добавляем в конец:

*; *; *; Al0000-2400;audio,cdrom,floppy,plugdev,video,fuse,scanner,dip



Проверим как все работает:

getent passwd


Должны распечататься пользователи не только локальные, но и хранящиеся в LDAP.
Перезагружаем компьютер. Теперь мы уже можем входить на ПК под учетной записью из LDAP.

4) Но если вдруг у нас "пропадет" сеть или LDAP-пользователи авторизуются на ноутбуке, который не всегда в сети, то никто не сможет зайти в систему (разумеется, кроме локальных юзеров). Этого избежать нам поможет модуль libpam-ccreds (https://help.ubuntu.com/community/PamCcredsHowto).

Идем в /etc/auth-client-config/profile.d/:

cd /etc/auth-client-config/profile.d/



Создаем там файл open_ldap_сс:

sudo touch open_ldap_cc


Заполняем его

sudo vim open_ldap_cc

этим:

[open_ldap_cc]
nss_passwd=passwd: files ldap [NOTFOUND=return] db
nss_group=group: files ldap [NOTFOUND=return] db
nss_shadow=shadow: files
nss_netgroup=netgroup: files ldap

pam_auth=auth required pam_env.so
       auth    [success=done default=ignore]   pam_unix.so nullok_secure try_first_pass
        # If LDAP is unavailable, go to next line.  If authentication via LDAP is successful, skip 1 line.
        # If LDAP is available, but authentication is NOT successful, skip 2 lines.
        auth    [authinfo_unavail=ignore success=1 default=2] pam_ldap.so use_first_pass
        auth    [default=done]  pam_ccreds.so action=validate use_first_pass
        auth    [default=done]  pam_ccreds.so action=store
        auth    [default=bad]   pam_ccreds.so action=update

pam_account=account required pam_unix.so broken_shadow
       account sufficient pam_localuser.so
       account sufficient pam_succeed_if.so uid < 100 quiet
       account [authinfo_unavail=ignore default=bad success=ok user_unknown=ignore] pam_ldap.so
       account required pam_permit.so

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

pam_session=session required pam_limits.so
       session required pam_unix.so
       session required pam_mkhomedir.so skel=/etc/skel/
       session optional pam_ldap.so



Меняем настройки аудентификации, выполнив команду:

sudo auth-client-config -a -p open_ldap_cc


Когда LDAP-сервер доступен, выполняем:

sudo nss_updatedb ldap


В каталоге /var/lib/misc/ он создат два файла:

ls -l /var/lib/misc | grep .db
-rw-r--r-- 1 root       root         8192 2009-04-29 12:35 group.db
-rw-r--r-- 1 root       root         8192 2009-04-29 12:35 passwd.db


Это и будут срезы баз данных с LDAP-сервера.

Открываем /etc/nsswitch.conf и смотрим чтобы следующие сточки были такого вида:

passwd: files ldap [NOTFOUND=return] db
group: files ldap [NOTFOUND=return] db


Это будет работать так:
    1) "Авторизатор" будет смотреть в локальные файлы (/etc/passwd and /etc/group);
    2) Если юзера там не найдет, то смотрит с LDAP;
    3) Когда LDAP не имеет информации о юзере, то выходит и ничего не возвращает (это директива "ловит" [NOTFOUND=return]);
    4) LDAP сервер недоступен - используется кешированная информация.

Здесь я перезагрузил ПК, на всякий случай.

Можно проверить работоспособность механизма кеширования passwd и group, отключив сеть и выполнив листинг записей о юзерах:

ifconfig eth0 down
sudo getent passwd


Это должно будет верунть список локальных юзеров + кешированные юзеры из passwd.db.

Теперрь, чтобы срезы баз обновлялись сами, в /etc/cron.hourly/ создаем скрипт nssupdate.sh и даем ему правов на выполнение:

cd /etc/cron.hourly/
sudo touch nssupdate.sh
sudo chmod +x nssupdate.sh


Открываем этот файл

sudo vim nssupdate.sh


и заполняем его следующим:

#!/bin/bash

LOCK=/var/run/auth-update.cron

[ "" != "0" ] && [ -f $LOCK ] && [ -d /proc/"$(cat $LOCK)" ] && exit 0
echo $$ > $LOCK

RANGE=3600
[ "" != "" ] && RANGE=
SLEEP=$RANDOM
[ "$RANGE" != "0" ] && let "SLEEP %= $RANGE" || SLEEP=0

sleep $SLEEP

go=true
while $go; do
 /usr/sbin/nss_updatedb ldap
 [ $? -eq 0 ] && go=false
 [ "$go" == "true" ] && sleep 10
done

rm $LOCK

exit 0


Теперь, когда LDAP-сервер доступен, аутентифициремся под какой-либо учетной записью их базы LDAP'а:

morfair@sysadmin-desktop:~$ su kalinin
Пароль:
Создаётся каталог «/homes/kalinin».
kalinin@sysadmin-desktop:/home/morfair$ exit
exit
morfair@sysadmin-desktop:~$ su lopatin-d
Пароль:
lopatin-d@sysadmin-desktop:/home/morfair$ exit
exit
morfair@sysadmin-desktop:~$ su smirnova-m
Пароль:
Создаётся каталог «/homes/smirnova-m».
smirnova-m@sysadmin-desktop:/home/morfair$ exit
exit
morfair@sysadmin-desktop:~$



Я попробовал зайти под тремя учетками, все хранящиеся в LDAP. Проверяем как закешировались пароли:

sudo cc_dump
Credential Type  User             Service  Cached Credentials
----------------------------------------------------------------------------------
Salted SHA1      kalinin          any     db855dc4015d75738607088d940dceadce3919d2
Salted SHA1      lopatin-d        any     8747a0af2654eba86b1d16f394352df4663f2be9
Salted SHA1      smirnova-m       any     94809222f962a4ed0d17d14e4db8c425aaf32eee


Если таблица непустая, как у меня, то все должно работать.

morfair


Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code


Просмотров: 7422

  Ваш коментарий будет первым
RSS комментарии
 
« Принтеры Hp Laserjet 10xx (1000 1005 1018 1020) в Linux   Учет трафика Linux - просто: Darkstat »

#COMMENT

Блокируем Ylmf-pc на Exim, Bru...
Благодарю за кучу уцелевших нервов:) постоянно приходилось б...
30/05/17 00:02 More...
By Mus

Установка даты и времени в кон...
Спасибо
12/05/17 17:49 More...
By dushka

Раскладка в rdesktop
Огромное спасибо!
28/04/17 14:01 More...
By Виктор

Аутентификация средствами Apac...
подскажите как писать пороль цифры ?пж! :sigh
28/03/17 13:06 More...
By Лиза

Logwatch - мониторинг журналов...
Отлично, очень не хватало. Автору большое спасибо, пиши еще.
25/01/17 02:44 More...
By Gregg

Сейчас на сайте находятся:
2 гостей