Уровень сложности: средний Евгений Крестников, журналист, независимый писатель
20.10.2009 Для организации службы каталогов и контроллера доменов на сервере, работающем под управлением GNU/Linux, часто используют связку Samba и OpenLDAP
Для организации службы каталогов и контроллера доменов на сервере, работающем под управлением GNU/Linux, часто используют связку Samba и OpenLDAP. Однако у этого варианта есть два существенных недостатка – сложность настройки и неудобное администрирование. Один из возможных способов решения данной проблемы – установка Mandriva Directory Server. В предыдущей обзорной статье мы уже упоминали MDS; теперь, пожалуй, самое время рассказать подробнее об этом замечательном программном продукте. Простой в использовании инструмент управления службой каталогов LDAP позволяет администрировать пользователей, DNS и DHCP-серверы (ISC DHCP и BIND), а также почтовые и прокси-серверы (PostFix и Squid/Squidguard). Если говорить об архитектуре MDS, стоит выделить два основных блока: Web-интерфейс администратора (MMC web interface) и модуль управления сервисами с плагинами, написанными на Python (MMC Agent). MMC web interface взаимодействует с MMC Agent через XML-RPC. Агент управляет сервисами и работает с каталогом LDAP (поддерживаются OpenLDAP и FDS). Сервисы локальной сети должны быть настроены для работы со службой каталогов. Архитектура MDS подробно проиллюстрирована на рисунке 1.
Рисунок 1
Шаги установки
В этой статье мы опишем процесс установки и настройки OpenLDAP и Samba с использованием инструмента администрирования Mandriva Directory Server.
Вам будет необходимо проделать несколько шагов:
- установить MDS;
- настроить OpenLDAP;
- настроить Samba;
- настроить и запустить MMC-агент;
- настроить BIND и DHCP.
После этого вы получите работоспособный сервер каталогов, контроллер домена, а также интегрированные с ними вспомогательные службы и средства администрирования.
Устанавливаем MDS
Для установки MDS необходим Mandriva Linux версии не ниже чем 2008.1 или Corporate Server 4. Первым шагом будет подключение репозиториев при помощи следующей команды:
- для архитектуры i586:
# Для Mandriva 2009.0 (MDS 2.3.2)
urpmi.addmedia Community_Main
ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/
official/2009.0/i586/media/main/backports/
# Для Mandriva 2008.1 (MDS 2.3.1)
urpmi.addmedia Community_Main
ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/
official/2008.1/i586/media/main/backports/
|
- для 64-разрядных архитектур:
# Для Mandriva 2009.0 (MDS 2.3.2)
urpmi.addmedia Community_Main
ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/
official/2009.0/x86_64/media/main/backports/
# Для Mandriva 2008.1 (MDS 2.3.1)
urpmi.addmedia Community_Main
ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/
official/2008.1/x86_64/media/main/backports/
|
- Corporate Server 4, i586:
urpmi.addmedia mds http://mds.mandriva.org/pub/mds/RPM/i586
|
- Corporate Server 4, x86-64:
urpmi.addmedia mds http://mds.mandriva.org/pub/mds/RPM/x86_64
|
Затем устанавливаем необходимые пакеты:
# urpmi mmc-web-base mmc-web-mail mmc-web-network
mmc-web-proxy mmc-web-samba mmc-agent python-mmc-base
python-mmc-mail python-mmc-network python-mmc-proxy
python-mmc-samba
|
Менеджер пакетов сам разрешает зависимости и инсталлирует все необходимое дополнительное ПО.
Мы уже говорили, что на сайте http://mds.mandriva.org/ доступны бинарные сборки MDS для Debian GNU/Linux. Для их установки необходимо подключить дополнительный репозиторий. Внесите следующую строку в файл /etc/apt/sources.list:
deb http://mds.mandriva.org/pub/mds/debian etch main (для Debian Etch),
|
или
deb http://mds.mandriva.org/pub/mds/debian lenny main (для Debian Lenny).
|
Установить пакеты можно с помощью команды:
# apt-get install mmc-web-base mmc-web-mail
mmc-web-network mmc-web-proxy mmc-web-samba
mmc-agent python-mmc-base python-mmc-mail
python-mmc-network python-mmc-proxy python-mmc-samba
|
На самом деле список поддерживаемых дистрибутивов гораздо шире – можно установить MDS из исходных текстов практически на любом дистрибутиве Linux. Подробные сведения по установке доступны на сайте http://mds.mandriva.org/.
Настраиваем OpenLDAP
Больше всего проблем при организации службы каталогов и доменного контроллера системным администраторам доставляет OpenLDAP. В Mandriva Linux процесс его настройки сильно упрощен. Для начала вам необходимо установить пакет openldap-mandriva-dit-package:
# urpmi openldap-mandriva-dit
|
Затем нужно запустить скрипт интерактивной настройки – /usr/share/openldap/scripts/mandriva-dit-setup.sh. Программа задаст вам несколько простых вопросов, перезапустит slapd и внесет в каталог LDAP базовые данные (вывод скрипта mandriva-dit-setup.sh приведен ниже):
Please enter your DNS domain name [localdomain]:
mandriva.com
Administrator account
The administrator account for this directory is
uid=LDAP Admin,ou=System Accounts,dc=mandriva,dc=com
Please choose a password for this account:
New password:[type password]
Re-enter new password:[type password]
Summary
=======
Domain: mandriva.com
LDAP suffix: dc=mandriva,dc=com
Administrator: uid=LDAP Admin,ou=System Accounts,dc=mandriva,dc=com
Confirm? (Y/n)
Y
config file testing succeeded
Stopping ldap service
Finished, starting ldap service
Running /usr/bin/db_recover on /var/lib/ldap
remove /var/lib/ldap/alock
Starting slapd (ldap + ldaps): [ OK ]
|
Далее необходимо настроить OpenLDAP для работы с Mandriva Directory Server. Вначале копируем дополнительные схемы в каталог /etc/openldap/schema:
# cd /usr/share/doc/python-mmc-base*/contrib/ldap/
# cp dhcp.schema dnszone.schema mail.schema mmc.schema /etc/openldap/schema/
|
Затем прописываем скопированные схемы в конфигурационный файл /etc/openldap/schema/local.schema, добавляя туда следующие строки:
include /etc/openldap/schema/mmc.schema
include /etc/openldap/schema/mail.schema
include /etc/openldap/schema/dnszone.schema
include /etc/openldap/schema/dhcp.schema
|
Во избежание конфликта документация по MDS рекомендует закомментировать или удалить следующие строки в файле /etc/openldap/slapd.conf:
#include /usr/share/openldap/schema/misc.schema
#include /usr/share/openldap/schema/kolab.schema
#include /usr/share/openldap/schema/dnszone.schema
#include /usr/share/openldap/schema/dhcp.schema
|
Аналогично поступим с файлом /etc/openldap/mandriva-dit-access.conf, в котором необходимо удалить или закомментировать строки:
#access to dn.one="ou=People,dc=mandriva,dc=com"
# attrs=@inetLocalMailRecipient,mail
# by group.exact="cn=MTA Admins,ou=System Groups,dc=mandriva,dc=com" write
# by * read
|
Теперь создадим хеш пароля и запишем его в файл /etc/ldap/slapd.conf в строку, начинающуюся с выражения «rootpw»:
$ slappasswd -s example
{SSHA}na/xgxWhfSNJA1TGUNPHfPPDZOMq8o7Z
|
Строки в файле /etc/ldap/slapd.conf будут выглядеть следующим образом (в вашем случае хеш пароля будет другим):
rootdn "cn=manager,dc=mandriva,dc=com"
rootpw {SSHA}na/xgxWhfSNJA1TGUNPHfPPDZOMq8o7Z
|
Кроме того, в конец файла /etc/ldap/ldap.conf необходимо добавить дополнительные директивы:
host 127.0.0.1
base dc=mandriva,dc=com
|
На этом настройка OpenLDAP завершена. Нам остается только проверить конфигурацию при помощи утилиты slaptest. Если она выдает результат: «config file testing succeeded», можно переходить к следующему шагу – перезапуску сервера LDAP командой service ldap restart и настройке сервера Samba.
Стоит отметить, что для дистрибутивов, отличных от Mandriva, схема настройки OpenLDAP будет несколько сложнее. Рекомендуем обратиться к соответствующему разделу документации по вашему дистрибутиву, а также к документации по Mandriva Directory Server, доступной на сайте проекта.
Настраиваем Samba
Сначала остановите сервис при помощи команды «/etc/init.d/smb stop». Затем настройте Samba для работы в качестве первичного контроллера домена (PDC). Ниже приводится пример конфигурационного файла /etc/samba/smb.conf. Если вы используете отличный от Mandriva Linux дистрибутив, для настройки Samba можно взять за основу пример, расположенный в каталоге /usr/share/doc/python-mmc-base/contrib/samba/.
[global]
workgroup = Mandriva
netbiosname = MDS
preferred master = yes
os level = 65
wins support = yes
enable privileges = yes
timeserver = yes
log level = 3
null passwords = yes
security = user
name resolve order = bcast host
domain logons = yes
domain master = yes
printing = cups
printcap name = cups
logon path = \\%N\profiles\%U
logon script = logon.bat
logon drive = H:
map acl inherit = yes
nt acl support = yes
passdb backend = ldapsam:ldap://127.0.0.1/
obey pam restrictions = no
ldap admin dn = cn=manager,dc=mandriva,dc=com
ldap suffix = dc=mandriva,dc=com
ldap group suffix = ou=Group
ldap user suffix = ou=People
ldap machine suffix = ou=Hosts
ldap idmap suffix = ou=Idmap
ldap passwd sync = yes
# ldap delete dn = yes
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n
add user script = /usr/sbin/smbldap-useradd -m "%u"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
add group script = /usr/sbin/ambldap-groupadd -p "%g"
add machine script = /usr/lib/mmc/add_machine_script '%u'
delete user script = /usr/sbin/smbldap-userdel "%u"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
[homes]
comment = Home directories
browseable = no
writeable = yes
create mask = 0700
directory mask = 0700
hide files = /Maildir/
[public]
comment = Public share
path = /home/samba/shares/public
browseable = yes
public = yes
writeable = yes
[archives]
comment = Backup share
path = /home/samba/archives
browseable = yes
public = no
writeable = no
[printers]
comment = Printers
path = /tmp
browseable = no
public = yes
guest ok = yes
writeable = no
printable = yes
[print$]
comment = Drivers
path = /var/lib/samba/printers
browseable = yes
guest ok = yes
read only = yes
write list = Administrator,root,@lpadmin
[netlogon]
path = /home/samba/netlogon
public = yes
writeable = yes
browseable = no
[profiles]
path = /home/samba/profiles
writeable = yes
create mask = 0700
directory mask = 0700
browseable = no
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
[partage]
comment = aucun
path = /home/samba/partage
browseable = yes
public = no
writeable = yes
|
После настройки необходимо проверить конфигурационный файл при помощи команды testparm (пример ее работы см. ниже).
# testparm
Load smb config files from /etc/samba/smb.conf
...
Processing section "[partage]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions
|
Если проверка прошла успешно, переходим к созданию необходимых каталогов и определения прав доступа к ним:
# mkdir -p /home/samba/shares/public/
# mkdir /home/samba/netlogon/
# mkdir /home/samba/profiles/
# mkdir /home/samba/partage/
# mkdir /home/samba/archives/
# chown -R :"Domain Users" /home/samba/
# chmod 777 /var/spool/samba/ /home/samba/shares/public/
# chmod 755 /home/samba/netlogon/
# chmod 770 /home/samba/profiles/ /home/samba/partage/
# chmod 700 /home/samba/archives/
|
Важный момент, о котором не следует забывать – файловая система, где хранятся ресурсы Samba, должна поддерживать POSIX ACL. Это необходимо для корректного взаимодействия вашего контроллера домена с рабочими станциями под управлением MS Windows. Если вы используете XFS, списки управления доступом разрешены по умолчанию. Для ext3 их поддержку нужно включить в файле /etc/fstab.
Далее необходимо разрешить сервису Samba чтение базы LDAP:
# smbpasswd -w example
Setting stored password for "cn=manager,dc=mandriva,dc=com" in secrets.tdb
|
После этого можно будет получить SID для вашего домена:
# net getlocalsid mandriva.com
|
В нашем случае SID="S-1-5-21-128599351-419866736-2079179792", у вас он будет другим.
Теперь вносим записи домена Samba в базу LDAP. Для этого необходимо установить и настроить пакет smbldap-tools:
Правим конфигурационный файл smbldap_bind.conf , расположенный в каталоге /etc/smbldap-tools/:
slaveDN="cn=admin,dc=mandriva,dc=com"
slavePw="example"
masterDN="cn=admin,dc=mandriva,dc=com"
masterPw="example"
|
Затем редактируем файл smbldap.conf:
SID="S-1-5-21-128599351-419866736-2079179792"
sambaDomain="MANDRIVA"
ldapTLS="0"
suffix="dc=mandriva,dc=com
sambaUnixIdPooldn="sambaDomainName=MANDRIVA,${suffix}"
#defaultMaxPasswordAge="45"
userSmbHome=""
userProfile=""
userHomeDrive=""
|
Чтобы внести записи домена в каталог LDAP, запустите smbldap-populate со следующими параметрами:
# smbldap-populate -m 512 -a administrator
|
И последнее, что необходимо сделать – настройка диспетчера службы имен NSS (Name Service Switch). Редактируем файл /etc/nsswitch.conf согласно приведенному примеру:
passwd: files ldap
shadow: files ldap
group: files ldap
hosts: files dns
bootparams: files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files
publickey: files
automount: files
aliases: files
|
На этом настройка доменного контроллера завершена. Вам остается только перезапустить samba и ldap. Затем необходимо дать право группе Domain Admins добавлять машины в домен:
net -U Administrator rpc rights grant 'MANDRIVA\Domain Admins' SeMachineAccountPrivilege
|
Если команда отработала без ошибок, настройка домена прошла успешно. Теперь нам осталось сконфигурировать вспомогательные службы и средства администрирования.
Настраиваем Mandriva Management Console
Настройка MMC очень проста. Основные параметры программы хранятся в файле /etc/mmc/agent/config.ini, параметры плагинов – в файлах /etc/mmc/ plugins/имя_плагина.ini. По умолчанию MMC-агент принимает входящие соединения по протоколу XMLRPC, инкапсулированному в HTTPS (слушается localhost:7080).
Все, что вам необходимо сделать на этом этапе – прописать параметры доступа к каталогу LDAP в файл /etc/mmc/plugins/base.ini:
baseDN = dc=mandriva,dc=com
rootName = cn=manager, %(basedn)s
password = example
|
Прочие плагины, находящиеся в директории /etc/mmc/plugins/, можно отключить, если они не нужны (установить параметр disable=1 в соответствующих конфигурационных файлах).
Теперь можно запустить MMC-агент:
/etc/init.d/mmc-agent start
|
Когда агент начинает работать, он ищет все установленные плагины и пытается их активизировать. Каждый плагин имеет собственную функцию тестирования для проверки его работоспособности. Например, если плагин «base» не может связаться с сервером LDAP, он не будет активизирован. Если SAMBA-scheme недоступна в LDAP, не запустится плагин «Samba» и т.д.
MMC-агент всегда пытается включить плагин «base» в первую очередь. Если этот плагин не может быть активизирован, MMC-агент работать не будет.
Настройка MMC web-interface
Web-интерфейс MMC написан на PHP4. Для его работы необходимо установить сервер Apache2 с поддержкой PHP4 (или PHP5). Кроме того вам понадобится модуль PHP XML-RPC. Приводить инструкцию по настройке Apache мы не будем – этой информации в сети более чем достаточно. Отметим только, что для работы консоли администратора необходимо создать SSL-сертификат:
# mkdir /etc/apache2/ssl/
# openssl req -new -x509 -keyout /etc/apache2/ssl/server.key
-out /etc/apache2/ssl/server.crt -days 365 -nodes
|
В процессе создания сертификата вам придется ответить на несколько вопросов. Затем необходимо изменить права доступа к файлу сертификата командой:
chmod 600 /etc/apache2/ssl/server.key
|
После запуска MMC-агента и Web-сервера Apache все действия по настройке домена можно производить через браузер (по умолчанию Web-интерфейс доступен по ссылке http://localhost/mmc; если нужен доступ к Web-интерфейсу с других машин локальной сети, отредактируйте конфигурационные файлы Apache). Вы сможете войти в Web-интерфейс MMC, используя логин «root» с администраторским паролем LDAP. Обращаю ваше внимание на то, что отключенные плагины не будут отображаться в консоли администрирования. Внешний вид консоли показан на рисунке 2.
Рисунок 2
Настраиваем BIND и DHCP
Поскольку настройка сервисов локальной сети, таких как PostFix или Squid, не является предметом нашей статьи, заострять внимание на этой теме не будем. Но кратко рассказать о настройке DNS- и DHCP-сервера необходимо, так как эти сервисы имеют самое непосредственное отношение к службе каталогов и контроллеру домена. Для управления зонами DNS, MMC-агент создает файлы в директории конфигурации BIND (/etc/bind). Они должны быть включены в основной конфигурационный файл BIND и загружаться из каталога LDAP. Для этого достаточно включить в named.conf файл /etc/bind/named.conf.ldap при помощи директивы include.
Стоит отметить, что в большинстве дистрибутивов Linux, BIND запускается раньше OpenLDAP при загрузке системы. Чтобы избежать связанных с этим ошибок, потребуется изменить порядок запуска скриптов во время старта системы.
Ниже приведен пример, как это можно сделать для дистрибутива Debian:
# update-rc.d -f slapd remove && update-rc.d slapd start 14 2 3 4 5 . stop 86 0 1 6
|
DHCP-сервер должен знать о том, как загрузить конфигурацию из каталога LDAP. Вот типичный пример файла dhcpd.conf (обычно этот файл находится в каталоге /etc/dhcp3/):
ldap-server "localhost";
ldap-port 389;
ldap-username "cn=admin, dc=mandriva, dc=com";
ldap-password "secret";
ldap-base-dn "dc=mandriva, dc=com";
ldap-method dynamic;
ldap-debug-file "/var/log/dhcp-ldap-startup.log";
|
Кроме того, мы уже говорили о новых схемах LDAP, которые должны быть импортированы в ваш каталог. Для сервисов DNS и DHCP потребуются dnszone.schema и dhcp.schema. В файл slapd.conf необходимо добавить следующие строки:
index zoneName,relativeDomainName eq
index dhcpHWAddress,dhcpClassData eq
|
Hello, World!
Итак, общими усилиями мы закончили настройку службы каталогов, доменного контроллера, дополнительных сервисов и средств администрирования домена. Самое время проверить работоспособность системы. Для этого рекомендую включить в домен компьютер под управлением Windows XP.
Сделать это очень просто:
- заведите пользователя домена через Web-интерфейс MMC;
- подключите к локальной сети Windows-машину (ip-адрес получаем автоматически);
- включите компьютер в домен (напоминаю, что делать это может только Administrator);
- перезагрузите компьютер и войдите в систему как пользователь домена.
Получилось? Поздравляю! Теперь ваш домен полностью готов к эксплуатации.
В следующих статьях мы рассмотрим более сложные вопросы, связанные с использованием MDS, а также проговорим о централизованном управлении рабочими станциями через службу каталогов.
Об авторе  | |  | Евгений Крестников cемь лет занимался прикладным программированием,
десять -- администрированием UNIX-систем. В возрасте 34-х лет решил
сменить "корпоративный рай" на перо свободного журналиста. В настоящее
время сотрудничает с различными печатными изданиями, такими как газета
"Коммерсантъ" и журнал "Linux Format Russia", а также с известными
российскими порталами: Ferra.ru, Nomobile.Ru (ИД "Газпром-Медиа") и
другими. Является одним из редакторов проекта IBM developerWorks
Russia.
|
Выскажите мнение об этой странице
|