- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF144:LDAP
Материал из Linuxformat.
Содержание |
Службы с LDAP-аутентификацией
- Андрей Андреев продолжает рассказ об OpenLDAP как альтернативе Active Directory. Сегодня речь пойдет об интеграции с ним базовых сетевых служб.
В прошлой статье мы рассматривали вопросы, касающиеся первоначальной установки и настройки службы каталогов OpenLDAP в дистрибутиве CentOS, а также базовые понятия о службах каталогов.Теперь, с учетом сказанного и описанного ранее, можно приступать к более детальному изучению возможностей использования служб каталогов. Под более детальным рассмотрением подразумевается использование различных служб/сервисов, которые будут использовать для своей работы информацию, хранящуюся в OpenLDAP.
Первоначально следует определиться с набором служб/сервисов, которые мы хотим интегрировать c OpenLDAP.
Сервисы/службы:
- Прокси-сервер
- Файловый сервер
- Почтовый сервер
- Аутентификация
Это только часть списка служб, способных работать с протоколом LDAP. Для реализации их работы определим набор пакетов.
Пакеты:
- Squid
- Samba + smbldap-tools
- Postfix + Dovecot
- PAM
В данной статье будет рассматриваться установка и настройка перечисленных пакетов на Ubuntu Server 10.04.02 LTS. Это связано с тем, что процесс установки и настройки службы каталогов в Ubuntu Server отличается от тех же манипуляций в CentOS, Debian или Fedora.
Перво-наперво, в Ubuntu нет конфигурационного файла slapd.conf OpenLDAP. Вся настройка производится динамически командой ldapadd. Установка же выполняется следующей командой:
apt-get install slapd ldap-utils
Команды для установки и пример настройки службы каталогов OpenLDAP приводятся в скрипте на диске; вы можете взглянуть на них на досуге. А мы сразу же перейдем к рассмотрению прокси-сервера.
Squid
Squid – кэширующий прокси-сервер, работающий по протоколам HTTP и FTP, Gopfer. Имеет возможность взаимодействия со службой каталогов путем аутентификации через LDAP, что позволяет разграничить доступ к интернет-ресурсам пользователей, которые имеют учетные записи; также позволяет организовать «нарезку» интернет-трафика для различных пользователей.
Установка его выполняется так:
apt-get install squid
Из всех служб проще всего настроить именно эту. Основной конфигурационный файл – /etc/squid/squid.conf. Для использования аутентификации через LDAP в основном конфигурационном файле достаточно расскоментировать строку auth_param basic program, указать параметры LDAP-сервера и добавить правило (acl) с разрешением доступа к ресурсу.
auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b “dc=yourcompany,dc=com” -D uid=squid,dc=example,dc=com -w password -f uid=%s ldap.example.com acl ldap-auth proxy_auth REQUIRED http_access allow ldap-auth http_access allow localhost http_access deny all
Здесь мы указали, что будем использовать модуль squid_ldap_auth с параметрами:
- -v – версия протокола LDAP.
- -b – ветка дерева каталога с которой начнется поиск пользователя.
- -D – пользователь, который будет осуществлять поиск записей (рекомендуется создать для каждой службы своего пользователя).
- -w – пароль пользователя для доступа к дереву каталога.
- -f – «шаблон» поиска.
- ldap.example.com – имя хоста LDAP-cервера.
Если мы не хотим разрешать доступ к прокси всем пользователям, записанным в службе каталогов, можно создать собственную схему с атрибутом и объектным классом, указывающие на то, что данный пользователь имеет доступ к прокси.
Наша схема /etc/openldap/schema/squid.schema будет выглядеть примерно так:
attributetype ( 1.3.6.1.4.1.1000.1 NAME 'ProxyAccess' DESC 'Proxy Access' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7) objectclass ( 1.3.6.1.4.1.1000.200 NAME 'SquidAccess' DESC 'Access to Squid Proxy' SUP top AUXILIARY MUST ProxyAccess )
В схеме определен один атрибут с именем “ProxyAcces” и типом booleanMatch – то есть атрибут может принимать значения либо TRUE, либо FALSE. Также в схеме описан объектный класс “SquidAccess” с обязательным атрибутом “ProxyAccess”. С учетом схемы, строка с модулем squid_ldap_auth будет выглядеть так:
auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b “dc=yourcompany,dc=com” -D uid=squid,dc=example,dc=com -w password -f (&(ProxyAccess=TRUE)(uid=%s)) ldap.example.com
Теперь доступ к прокси будут иметь только те пользователи, у которых есть атрибут ProxyAccess со значением TRUE.
Samba
Ресурсы, которые могут пригодиться – http://smb-conf.ru и http://samba.org.
Samba – свободное программное обеспечение, реализующее сетевой протокол SMB/CIFS. Samba может выступать в роли основного контроллера домена (PDC), либо члена уже существующего домена. Она также может быть частью домена Active Directory. Основной конфигурационный файл – /etc/samba/smb.conf. Для простоты настройки будем использовать пакет smbldap-tools.
Установка делается командой:
apt-get install samba samba-doc smbldap-tools
Для работы Samba c LDAP в основном конфигурационном файле необходимо указать следующие параметры LDAP-сервера:
passdb backend = ldapsam:ldap://localhost ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=Manager,dc=example,dc=com ldap ssl = off ldap passwd sync = yes ldap delete dn = no
Еще понадобится настроить smbldap-tools. Настройка проста.
Распаковываем специально подготовленный скрипт:
gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
Запускаем его и отвечаем на вопросы
perl /usr/share/doc/smbldap-tools/configure.pl
Далее, в вашем любимом редакторе можно открыть конфигурационный файл sambaldap.conf и проверить его правильность.
vim /etc/smbldap-tools/sambaldap.conf
Для корректной работы сервера нам понадобится узнать его локальный идентификатор безопасности (SID, Security Identifier); для этого выполним
net getlocalsid ldap
где ldap – имя хоста с установленными пакетами samba. Полученный SID следует записать в конфигурационный файл smbldap-tools – /etc/smbldap-tools/sambaldap.conf.
Теперь можно приступать к созданию начальной структуры каталога, и для этого мы воспользуемся командами smbldap-populate и ldapadd.
smbldap-populate -a admin -e /etc/ldap/sambadb.ldif ldapadd -x -D cn=Manager,dc=example,dc=com -w secret -f sambadb.ldif
После выполнения команд в службе каталогов OpenLDAP будут храниться записи о корневом элементе (dc=example, dc=com), группах (Domain Admins, Domain Users, Computers и т.д.), пользователях (nobody, admin) и запись sambaDomainName.
Для задания пароля пользователю существует команда smbldap-passwd, и т.к. в начальной структуре каталога записи о паролях отсутствуют, самое время их создать.
smbldap-passwd -a admin
Для добавления пользователей удобно воспользоваться командой smbldap-useradd:
smbldap-useradd -a -P User
На этом этап настройки smbldap-tools закончен; переходим к samba.
Сохраним резервную копию основного конфигурационного файла /etc/samba/smb.conf.
cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Теперь укажем в файле /etc/samba/smb.conf параметры LDAP, параметры домена и расширенные ресурсы. Все конфигурационные файлы и команды, необходимые для настройки, расположены в скрипте ubuntu_ldap.sh на диске; здесь приводятся только основные фрагменты файла /etc/samba/smb.conf.
[global] server string = SAMBA PDC workgroup = EXAMPLE netbios name = LDAP passdb backend = ldapsam:ldap://localhost security = user domain master = yes admin users = admin socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384 wins support = yes wins proxy = yes name resolve order = wins hosts bcast lmhosts wide links = yes idmap uid = 10000-20000 idmap gid = 10000-20000 ldap suffix = dc=example,dc=com ldap user suffix = ou=People ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=sapr,dc=guap,dc=spb,dc=ru ldap ssl = off ldap passwd sync = yes ldap delete dn = no add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w “%u” passwd program = /usr/sbin/smbldap-passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* domain logons = yes ##=========Шары======================== [homes] comment = Home Directories browseable = yes valid users = %S writable = yes
В данном конфигурационном скрипте мы указали на то, что samba будет использовать протокол LDAP, а за добавление пользователей и проверку пароля будет отвечать smbldap-tools. Так же указаны администратор samba – пользователь admin (локальный пользователь, который будет перенесен в службу каталогов) и параметры, необходимые для работы.
Перезапускаем службу smbd:
service smbd restart
Для работы связки Samba и LDAP необходимо указать пароль администратора службы каталогов (rootdn) и администратора Samba:
smbpasswd -w secret smbpasswd -a admin
Перезапускаем службу nmbd и проверяем список групп:
service nmbd restart net groupmap list
Результатом выполнения команды является список групп домена (Domain Admins, Domain Users, Computers и т.д). Для работы пользователю admin следует дать права администратора домена.
net rpc rights grant “Domain Admins” SeMachineAccountPrivilege SeTakeOwnershipPrivilege \ SeBackupPrivilege SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege \ SeAddUsersPrivilege SeDiskOperatorPrivilege -U admin%123456
Финальный штрих – вводим наш сервер в домен:
Почтовый сервер
Postfix
Postfix – это агент передачи сообщений (MTA, message transport agent), который занимается пересылкой по протоколу SMTP сообщений от пользовательского почтового агента (MUA, mail user agent), называемого также почтовым клиентом, к удаленному почтовому серверу.
MTA также принимает сообщения от удаленных почтовых серверов и пересылает их другим MTA или доставляет в локальные почтовые ящики. Переслав или доставив сообщение, Postfix заканчивает свою работу. За доставку сообщения конечному пользователю отвечают другие серверы. Например, такие MTA, как серверы POP3 или IMAP, передают сообщения почтовым клиентам – Mutt, Outlook или Apple Mail, с помощью которых пользователь может прочитать их.
С точки зрения современного взгляда на задачу передачи и обработки сообщений Postfix представляет собой самую сердцевину комплекса почтового ПО.
Убедитесь, что порт 25 TCP на вашем сервере ничем не заблокирован. Если у вас установлен межсетевой экран, убедитесь, что его политика разрешает входящие и исходящие соединения с портом 25.
Причина, по которой порт 25 TCP должен быть открыт, заключается в том, что Postfix и другие почтовые серверы прослушивают его в ожидании соединений. Этот порт официально назначен для SMTP агентством IANA (полный список доступен по адресу http://www.iana.org/assignments/port-numbers). Организация IANA является главным регистратором нумерации интернет-протоколах, распределяющим номера портов, протоколов, компаний, параметров, кодов и типов.
Установка – все тем же манером:
apt-get install postfix
Основные конфигурационные файлы, которые мы будем использовать – /etc/postfix/main.cf, /etc/postfix/master.cf.
Как и во всех службах, здесь нам надо указать способы аутентификации. В нашем случае это LDAP. Для этого в файле /etc/postfix/main.cf пропишем строки
local_recipient_maps = $alias_maps, ldap:/etc/postfix/ldap-users.cf virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf
А параметры аутентификации LDAP мы укажем в файлах ldapusers.cf и ldap-aliases.cf.
Файл /etc/postfix/ldap-users.cf содержит
server_host = ldap.lw.lan search_base = dc=lw,dc=lan server_port = 389 bind = yes bind_dn = cn=Manager,dc=lw,dc=lan bind_pw = secret query_filter = (mail=%s)
Содержимое файла /etc/postfix/ldap-aliases.cf:
server_host = ldap.lw.lan search_base = dc=lw,dc=lan server_port = 389 bind = yes bind_dn = cn=Manager,dc=lw,dc=lan bind_pw = secret query_filter = (mail=%s) result_attribute = mail special_result_filter = %s@%d
Файлы содержат стандартные параметры работы с OpenLDAP. В /etc/postfix/ldap-users.cf описываем параметры пользователей, а именно, фильтр поиска пользователей – атрибут mail. Файл /etc/postfix/ldap-aliases.cf содержит параметры для доставки почты; в нем указывается, что почту нужно доставлять на почтовый адрес, указанный в атрибуте mail.
Dovecot
Ресурсы, которые могут пригодиться – http://wiki1.dovecot.org.
Так как мы собираемся не только отправлять почту, но и принимать ее, для создания почтового сервера нам понадобится Dovecot.
Dovecot – свободный IMAP- и POP3-сервер, разрабатываемый в расчете на безопасность, гибкость настройки и быстродействие. Первый релиз состоялся в 2002 году. Основные особенности сервера:
- Поддержка форматов почтовых ящиков mbox и Maildir, а также собственные форматы dbox и Cydir.
- Высокое быстродействие, благодаря индексации содержимого ящиков.
- Большое количество поддерживаемых механизмов хранения аутентификационной информации (включая LDAP) и самой аутентификации (поддерживается SSL).
- Собственная реализация SASL. Postfix 2.3+ и Exim 4.64+ могут аутентифицироваться напрямую через Dovecot.
- Полная поддержка IMAP ACL для гибкой настройки прав пользователей.
- Поддержка общих ящиков и папок [shared mailboxes and folders].
- Расширяемость при помощи плагинов.
- Собственный MDA с поддержкой Sieve.
- Строгое следование стандартам: Dovecot – один из немногих, кто проходит тест на соответствие всем стандартам IMAP.
- Возможность модификации индексов с нескольких компьютеров, что позволяет ему работать с NFS и кластерными файловыми системами.
- Поддерживает различные виды квот.
- Поддержка различных ОС: Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X.
- Простота настройки.
Установка:
apt-get install dovecot
Основной конфигурационный файл – /etc/dovecot.conf. В нем необходимо найти секцию, описывающую способы аутентификации – auth default, где надо расскомментировать строки, связанные с LDAP.
auth default { mechanisms = plain passdb ldap { args = /etc/dovecot-ldap.conf } userdb ldap { args = /etc/dovecot-ldap.conf } user = root ssl_require_client_cert = no ssl_username_from_cert = no }
Здесь мы указали некий файл /etc/dovecot-ldap.conf. Что же хранится в этом файле?
hosts = ldap.example.com dn = cn=Manager,dc=example,dc=com dnpass = secret ldap_version = 3 base = dc=example,dc=com deref = never scope = subtree user_filter = (uid=%u) pass_filter = (&(objectClass=posixAccount)(uid=%u)) default_pass_scheme = CRYPT
Как вы можете заключить по содержанию файла, в нем хранятся параметры подключения к LDAP-серверу, описание которых мы уже приводили выше, и фильтры поиска записей. Итак, почтовый сервер готов; можно начинать проверять его работу, принцип которой был проиллюстрирован рисунком на предыдущей странице.
PAM
Pluggable Authentication Modules (PAM, подключаемые модули аутентификации) – это набор разделяемых библиотек, дающих возможность интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации. Данный механизм является одной из частей стандартного механизма обеспечения безопасности UNIX-систем.
Здесь необходимо указать, что наша система будет проходить аутентификацию по протоколу LDAP, обращаясь за данными к службе каталогов OpenLDAP.
Установка и конфигурирование:
apt-get install libnss-ldap auth-client-config -t nss -p lac_ldap pam-auth-update
Желательно после выполнения настройки PAM выполнить команду reboot.
LDAP-сервер
На данном этапе наш сервер готов к работе, выполняя роль прокси-сервера, файлового сервера, почтового сервера. Не хватает одного: базы пользователей. Если сервер делается с нуля, то всех пользователей легко и просто задать через графическую систему управления GOsa. Если же сервер является заменой Active Directory (AD), то надо бы выполнить миграцию пользователей. Об этом наш следующий пункт.
Active Directory
А что же с Active Directory? Самое время подумать об этом. Имея настроенный сервер LDAP и Samba, можно выполнить миграцию пользователей AD. Примем за основу настройки Samba, приведенные выше в пункте Samba, и изменим их.
Самое главное – это SID’ы. Если ранее мы использовали локальный SID, то теперь для корректной работы файлового сервера нам понадобится SID сервера с AD.
net rpc getsid -S DOMAIN -U Administrator%password
Полученный SID запишем в /etc/smbldap-tools/sambaldap.conf.
В начале нужно перевести Samba из режима PDC (Primary Domain Controller) в BDC (Backup Domain Controller). За это отвечает параметр domain master, значение которого “yes” для PDC и “no” для BDC. Изменим его значение на “no”. Основные изменения закончены. Теперь введем наш сервер в домен AD:
net ads join -U Administrator%password
Можно приступать к миграции пользователей. Для этого выполним команду
net rpc vampire
Данная команда выполнит миграцию пользователей AD и запись данных в LDAP-сервер. Если же вы не хотите добавлять все записи или есть необходимость отредактировать их, то вам следует сделать запись в ldif-файл. Поcле редактирования останется только добавить содержимое файла в OpenLDAP.
net rpc vampire ldif filename.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f filename.ldif
Итог
В результате мы имеем серверное решение, не уступающее проприетарному, а возможно, и превосходящее его.
Плюсы:
- Полностью свободное ПО.
- Неограниченный функционал, т.е. администратор способен настроить службы так, как это ему необходимо, а по возможности и расширить данное решение.
Минусы:
- Минус один, но в общем решаемый! На данном этапе не реализован механизм групповых политик.
Для решения этой задачи можно воспользоваться репозиторием Samba 4, которая сейчас находится в стадии бета-тестирования. Но пока никто не выдаст вам гарантии того, что после обновления файлового сервера все будет работать так, как положено. Поэтому придется дожидаться появления очередного релиза.