Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> LDAP auth

Настройка аутентификации через LDAP.

Автор: fr33man.


Настроив LDAP сервер, я решил хранить всю информацию о пользователях в директориях LDAP. Тут же захотелось, чтобы все было завязано на LDAP и первым
моим шагом была настройка системы таким образом, чтобы она видела не только локальных пользователей, а еще и пользователей, которые
хранятся в LDAP'е. Чем я и занялся.

Установка необходимого софта.

Идем в порты, чтобы посмотреть нужные нам программы, конечно же предворительно обновив дерево портов.

/root/> cd /usr/ports/
/usr/ports/> make search name='nss_ldap'
Port:   nss_ldap-1.251
Path:   /usr/ports/net/nss_ldap
Info:   RFC 2307 NSS module
Maint:  kazakov@gmail.com
B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2 openldap-client-2.3.27
R-deps: openldap-client-2.3.27
WWW:    http://www.padl.com/OSS/nss_ldap.html

/usr/ports/> make search name='pam_ldap'
Port:   pam_ldap-1.8.2
Path:   /usr/ports/security/pam_ldap
Info:   A pam module for authenticating with LDAP
Maint:  marcus@FreeBSD.org
B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2 openldap-client-2.3.27
R-deps: openldap-client-2.3.27
WWW:    http://www.padl.com/OSS/pam_ldap.html

/usr/ports/>

nss_ldap нужен, для того, чтобы система видела пользователей, хранящихся в LDAP, а pam_ldap нужен
непосредственно для аутентификации пользователей.

Ставим...

/usr/ports/> cd /usr/ports/net/nss_ldap
/usr/ports/net/nss_ldap/> make install clean
...
...
/usr/ports/net/nss_ldap/> rehash
/usr/ports/net/nss_ldap/> cd /usr/ports/security/pam_ldap/
/usr/ports/security/pam_ldap/> make install clean
/usr/ports/security/pam_ldap/> rehash
/usr/ports/security/pam_ldap/>

Все, установилось.

Настройка.

Для начала давайте добавим следующие записи в LDAP:

users.ldif:

dn: ou=users,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: users

fr33man.ldif

dn: cn=fr33man,ou=users,dc=l1523,dc=ru
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
cn: fr33man
sn: Vasiliy Ozerov
uid: fr33man
userPassword: {SSHA}WBsUosYPMQ1PPaJNp2728NL7P0/EXx5n
uidNumber: 5001
gidNumber: 0
gecos: Vasiliy Ozerov
homeDirectory: /home/fr33man
loginShell: /usr/local/bin/bash

Добавляем:

/root/> ldapadd -x -D "cn=root,dc=unix" -W \
? -H ldap://192.168.1.250 -f users.ldif
Enter LDAP Password:
adding new entry "ou=users,dc=l1523,dc=ru"

/root/> ldapadd -x -D "cn=root,dc=unix" -W \
? -H ldap://192.168.1.250 -f fr33man.ldif
Enter LDAP Password:
adding new entry "cn=fr33man,ou=users,dc=l1523,dc=ru"

/root/> 

Рихтуем /usr/local/etc/nss_ldap.conf:


# Корневой каталог LDAP сервера
base dc=l1523,dc=ru

# Если не удалось подключиться к LDAP,
# То не пытаться переподключиться
bind_policy soft

# Timeout подключения к LDAP серверу
bind_timelimit 10

# ip-адрес или hostname LDAP сервера
host 192.168.1.250

# nss_ldap закроет подключение, если сервер
# не ответит в указонное в idle_timelimit время
idle_timelimit 3600

# Версия протокола
ldap_version 3

# Описание каталогов, где хранятся группы, пользователи, пароли соответственно
nss_base_group  ou=groups,dc=l1523,dc=ru?one
nss_base_passwd ou=users,dc=l1523,dc=ru?one
nss_base_shadow ou=users,dc=l1523,dc=ru?one

# persist -- не отключаться от LDAP сервера
# oneshot -- отключаться после каждого запроса
nss_connect_policy persist

# Использовать страничный вывод
nss_paged_results yes


# Размер страницы
pagesize 1000

# Порт, на котором работает LDAP
port 389

# Область поиска
scope one

# Время ожидпния при поиске
timelimit 30

Теперь /etc/nsswitch.conf:


# Сначала ищем в файлах, потом в LDAP
group: files ldap

hosts: files dns
networks: files

# Сначала ищем в файлах, потом в LDAP
passwd: files ldap

# Сначала ищем в файлах, потом в LDAP
shadow: files ldap
shells: files

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

/usr/local/etc/> id fr33man
uid=5001(fr33man) gid=0(wheel) groups=0(wheel), 5001(People)
/usr/local/etc/> grep fr33man /etc/passwd
/usr/local/etc/>

Пользователь fr33man есть, но его нет в локальных базах.

Теперь переходим к настройке pam_ldap. Для этого редактируем /usr/local/etc/ldap.conf до такого состояния:


# host, где находится LDAP сервер
host 192.168.1.250

# URL LDAP сервера
uri ldap://192.168.1.250/

# Версия протокола
ldap_version 3

# Порт LDAP сервера
port 389

bind_timelimit 30
bind_policy soft
idle_timelimit 3600

# Фильтр поиска
pam_filter objectclass=posixAccount

# UID пользователя соответствует аттрибуту uid
pam_login_attribute uid

# Минимальный uid
pam_min_uid 1000

# Максимальный uid
pam_max_uid 65530

# Алгоритм хэша паролей
pam_password SSHA

nss_base_passwd ou=users,dc=l1523,dc=ru?one
nss_base_shadow ou=users,dc=l1523,dc=ru?one
nss_base_group          ou=groups,dc=l1523,dc=ru?one

Осталось указать сервисам login, sshd и тд. использовать модуль pam_ldap для аутентификации, для этого редактируем
/etc/pam.d/sshd и /etc/pam.d/ до такого состояния:

/etc/pam.d/sshd:

auth            required        pam_nologin.so          no_warn
auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local

auth            sufficient        /usr/local/lib/pam_ldap.so    no_warn
auth            required        pam_unix.so             no_warn try_first_pass

account         required        pam_login_access.so
account         sufficient        /usr/local/lib/pam_ldap.so
account         required        pam_unix.so

session         required        pam_permit.so

password        sufficient        /usr/local/lib/pam_ldap.so              no_warn
password        required        pam_unix.so             no_warn try_first_pass

/etc/pam.d/system:


auth            sufficient      pam_opie.so             no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so       no_warn allow_local
auth            sufficient      /usr/local/lib/pam_ldap.so
auth            required        pam_unix.so             no_warn try_first_pass nullok

account         required        pam_login_access.so
account         sufficient      /usr/local/lib/pam_ldap.so
account         required        pam_unix.so

session         required        pam_lastlog.so          no_fail

password        sufficient      /usr/local/lib/pam_ldap.so
password        required        pam_unix.so             no_warn try_first_pass

Теперь можно проверять, как это все работает. Попробуем зайти по ssh:


//> ssh localhost -l fr33man
Password:
Last login: Fri Sep 29 06:08:09 2006 from 127.0.0.1
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

[fr33man@backup ~]$ exit
logout
Connection to localhost closed.
//>

Пользователя fr33man мы не создавали локально, следовательно домашней директории для него нет. Поэтому можете содать домашнюю директорию, а
можете воспользоваться демоном amd(8).



размещено: 2006-11-08,
последнее обновление: 2006-11-08,
автор: fr33man

оценить статью:

cookie, 2007-10-11 в 11:05:13

А где groups.ldif ?

Vitar, 2008-07-10 в 20:01:13

Стандартый вариант груп на базе posixGroup.

dn: ou=groups,dc=l1523,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: cn=fr33man,ou=groups,dc=l1523,dc=ru
cn: fr33man
gidNumber: 5001
objectClass: posixGroup
objectClass: top


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 26 чел.
За последние 30 мин было: 85 человек
За сегодня было
1383 показов,
385 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0391 секунд
Из них PHP: 38%; SQL: 62%; Число SQL-запросов: 77 шт.
Исходный размер: 151315; Сжатая: 22345