Настройка и использование
централизованного управления сервисами
с использованием сервера LDAP.
Общие сведения о системе LDAP.
Современные информационные структуры, каковой, например, является
обычная локальная сеть, обладают широким набором функций и
возможностей, реализация которых требует четкой организации и
структурирования. Одним из решений проблемы управления такой системой
является база данных LDAP. LDAP - это обслуживаемая база данных,
оптимизированная для использования в качестве сервера каталогов. Данная
база может быть использована для хранения сведений при организации
корпоративного домена или обслуживания сервисов локальной сети. В
статье рассмотрены случаи настройки ISC BIND (DNS), Cyrus (POP3, IMAP),
Postfix (SMTP), Apache 2 (HTTP), Proftpd (FTP) и ISC dhcpd (DHCP) с
примерами для Linux Gentoo.
Установка и настройка OpenLDAP.
В качестве LDAP-сервера
выбрана реализация OpenLDAP. Сайт проекта http://www.OpenLDAP.org. Для
установки этого сервера под Gentoo Linux необходимо выполнить команду:
emerge openldap
После установки необходимо
отредактировать конфигурационный файл /etc/openldap/slapd.conf.
Следует
добавить загрузку следующих схем:
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/dlz.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/mod_cfg_ldap.schema
также следует добавить строку разрешающую подключаться по протоколу
LDAP версии 2:
В
данном случае указано, что все запросы к данному LDAP-серверу будут
проводиться в пределах дерева dc=amalfi,dc=netup,dc=ru.
также указано,
с каким именем и паролем должен подключаться администратор. В этом
примере и далее будут указываться значения, использованные на тестовом
стенде компании NetUP.
Следует отметить, что файл dlz.schema
необходимо получить,
отдельно
скачав архив с исходными текстами dlz по адресу http://bind-dlz.sourceforge.net/downloads.html.
Файл
mod_cfg_ldap.schema
необходимо получить, скачав архив с исходными
текстами модуля mod_cfg_ldap
по адресу http://sourceforge.net/projects/modcfgldap/.
После того как файл откорректирован, можно произвести запуск
LDAP-сервера:
/etc/init.d/slapd start
Для более удобного просмотра
информации находящейся в базе данных LDAP-сервера можно использовать
графическую утилиту http://www-unix.mcs.anl.gov/~gawor/ldap/
Данная
утилита написана на языке Java и может работать под ОС Linux, FreeBSD,
Windows, Mac OS.
Рис 1 Настройки подключения к LDAP-серверу.
Если установка LDAP-сервера производится впервые, то необходимо создать
файл main.ldiff следующего
содержания:
dn: dc=amalfi,dc=netup,dc=ru objectClass: dcObject objectClass: organization o: Amalfi the best dc: amalfi
В
данной главе описывается настройка сервера DNS на базе операционной
системы Gentoo Linux и пакетов ISC BIND с dlz-патчем и OpenLDAP. Все
настройки зон хранятся в базе LDAP, таким образом обеспечивается
удобный интерфейс для оперативного обновления информации о доменах и
хостах. также единая точка хранения информации позволяет организовать
более удобную работу с большим количеством доменов.
После установки LDAP-сервера необходимо установить пакет ISC BIND с
dlz-патчем. Сайт проекта ISC BIND - http://www.isc.org.
Сайт проекта
DLZ - http://bind-dlz.sourceforge.net/.
Для установки под Gentoo Linux
выполните команды:
export USE="dlz ldap" emerge bind
Для того, что бы
DNS-сервер запрашивал информацию о доменных именах в LDAP-сервере
необходимо произвести корректировку файла /etc/bind/named.conf.
Добавьте информацию о следующей зоне:
Если
в результате DNS-сервер выдаст верные IP-адреса для этих хостов, то
схема считается настроенной и можно проводить заполнение базы.
Рис 2. Дерево LDAP с информацией DNS.
Для
более удобной работы с LDAP можно использовать биллинговую систему
NetUP UTM версии 5.0. При добавлении email-адреса к абоненту, либо при
регистрации виртуального домена, данная система автоматически
производит добавление записей о доменной зоне в LDAP. Более подробную
информацию по биллинговой системе вы можете получить на сайте
www.netup.ru.
Настройка почтового сервера с виртуальными доменами на
базе postfix, cyrus и OpenLDAP.
В
данной главе описывается настройка почтового сервера на базе
операционной системы Gentoo Linux и пакетов postfix (SMTP-сервер),
cyrus-imapd (POP3, IMAP-сервер) и OpenLDAP. Все настройки относительно
почтовых ящиков хранятся в базе LDAP, таким образом, обеспечивается
удобный интерфейс для оперативного добавления и обновления информации.
также, единая точка хранения информации позволяет организовать удобную
работу с большим количеством почтовых ящиков созданных в разных
виртуальных доменах.
Установка cyrus
После установки LDAP-сервера необходимо
установить сервер POP3 и IMAP. В качестве этого сервера выбран проект
cyrus. Сайт проекта cyrus в Интернете - http://asg.web.cmu.edu/cyrus/imapd/.
Установка делится на два этапа. Первый - установка пакета cyrus-sasl с
поддержкой ldap. Второй - установка пакета cyrus-imapd с патчем
autocreate mailbox. Сайт разработчиков патча в Интернете - http://email.uoa.gr/projects/cyrus/autocreate/.
Для установки пакета cyrus-sasl
с поддержкой ldap под Gentoo Linux
выполните следующие команды:
export USE="ldap -gdbm" emerge cyrus-sasl
После
установки пакета необходимо откорректировать конфигурационный файл
/etc/conf.d/saslauthd. В этом файле должна присутствовать строка:
SASLAUTHD_OPTS="${SASLAUTH_MECH} -a ldap -r"
Опция -a
ldap указывает на то, что необходимо использовать LDAP в качестве
источника. Ключ -r указывает на то, что необходимо проводить проверку
email-адресов полностью т.е. с частью до символа @ и после. Данная
опция позволяет создавать почтовые ящики с одинаковым именем (часть до
символа @), но в разных доменах. Например, адреса вида
info@amalfi.netup.ru и info@support.amalfi.netup.ru будут считаться
независимыми. также необходимо создать файл /etc/saslauthd.conf
и
внести в него следующую информацию:
Данная информация будет использоваться демоном saslauthd при
подключении к серверу LDAP. Запустите сервер saslauthd
командой:
/etc/init.d/saslauthd start
Для установки пакета
cyrus-imapd с патчем autocreate mailbox необходимо скачать патч для
ebuild'а, т.к. текущая версия ebuild'а на дату написания статьи не
поддерживала сборку с патчем autocreate mailbox. Патч для ebuild'a
разработан сотрудниками компании NetUP. Скачивание можно произвести по
адресу -
http://www.netup.ru/downloads/autocreate_cyrus_2.2.12.ebuild.patch.
После скачивания патча наложите его командами:
Закомментируйте
в этом конфигурационном файле строки начинающиеся на sasl_sql_. также
необходимо откорректировать файл /etc/cyrus.conf.
Добавьте в раздел
SERVICES строку:
Lmtp cmd="lmtpd -a" listen="localhost:lmtp"
Произведите запуск почтового сервера cyrus
командой:
/etc/init.d/cyrus start
На этом установка сервера POP3/IMAP окончена.
Установка postfix
После установки cyrus-imapd
необходимо
установить почтовый сервер на прием почты - SMTP. В качестве
SMTP-сервера выбран пакет postfix с поддержкой ldap. Сайт проекта
postfix в Интернете - http://www.postfix.org/.
Для установки этого
пакета под Gentoo Linux выполните команды:
export USE="ldap" emerge postfix newaliases
Важно!
После установки необходимо зарегистрировать пользователя postfix в
группе mail. Для этого следует
откорректировать файл /etc/group,
заменив строку:
mail:x:12:mail
на строку:
mail:x:12:mail, postfix
В противном случае пользователь postfix не будет иметь доступа к файлу
/var/imap/socket/lmtp.
После установки пакета необходимо
откорректировать конфигурационный файл /etc/postfix/main.cfg.
Добавьте
в него следующую информацию:
После этого можно регистрировать
информацию о почтовых ящиках. Если заполнение LDAP базы производится
впервые, то необходимо создать файл ou_users.ldiff
следующего
содержания:
В
результате, в LDAP будет зарегистрирован почтовый ящик
info@amalfi.netup.ru. Для получения сообщений настройте любой почтовый
клиент, поддерживающий POP3. В качестве учетной записи (логина) укажите
полный почтовый ящик - info@amalfi.netup.ru. Пароль при создании
абонента задается в виде MD5 hash. Получить hash можно командой:
slappasswd -h {MD5}
Рис 4. Почтовый ящик в LDAP
Пароль
также можно сменить в графической утилите для работы с LDAP. Для более
удобной работы с LDAP можно использовать биллинговую систему NetUP UTM
версии 5.0. При добавлении абоненту email-адреса, либо при регистрации
виртуального домена, данная система автоматически производит добавление
записей о доменной зоне в LDAP, а также производит создание информации
о почтовом ящике.
Рис 5. Регистрация E-mail адреса в биллинговой системе
NetUP UTM версии 5.0
При этом необходимо в биллинговой системе в разделе "Настройки" указать
следующие переменные: www_prefix - путь к папке с веб-страницами. Значение по
умолчанию /var/www. hosting_ip - IP-адрес сервера с сервером apache2 с
настроенными виртуальными хостами. Значение по умолчанию 127.0.0.1. mail_server_ip - IP-адрес почтового сервера. Значение по
умолчанию 127.0.0.1.
Более подробную информацию по биллинговой системе вы можете получить на
сайте www.netup.ru.
Настройка веб-хостинга с учетом IP-трафика на
базе apache2 и OpenLDAP.
В данной главе описывается настройка веб-сервера на базе операционной
системы Gentoo Linux и пакетов apache2
и OpenLDAP. Все настройки
относительно виртуальных хостов хранятся в базе LDAP, таким образом,
обеспечивается удобный интерфейс для оперативного добавления и
обновления информации. также единая точка хранения информации позволяет
организовать удобную работу с большим количеством виртуальных хостов.
Установка apache2
Под Gentoo Linux веб-сервер apache2
можно установить
следующей командой:
emerge apache
Далее необходимо установить модуль
mod_cfg_ldap для того, что бы apache2 брал настройки для
виртуальных
хостов из хранилища LDAP. Веб-сайт проекта в Интернете - http://sourceforge.net/projects/modcfgldap/
. Для установки необходимо
скачать файл mod_cfg_ldap-1.2.tar.gz.
Далее установите модуль
командами:
tar xvfz mod_cfg_ldap-1.2.tar.gz cd mod_cfg_ldap-1.2 make make install
После
установки модуля необходимо откорректировать конфигурационный файл
/etc/apache2/conf/apache2.conf.
Необходимо добавить следующую
информацию:
EnableCfgLdap on CfgLdapUseTLS off CfgLdapTrustedCA "/etc/apache2/ssl/ca.crt" CfgLdapServer "127.0.0.1" CfgLdapBindDN "cn=Manager,dc=amalfi,dc=netup,dc=ru" CfgLdapCredentials "secret" CfgLdapBaseDN "ou=vhosts,dc=amalfi,dc=netup,dc=ru" CfgLdapFilter "(objectClass=apacheConfig)" # otherwise you could filter based on cosine.schema's ARecord # CfgLdapFilter "(|(ARecord=127.0.0.1)(ARecord=127.0.0.2))" CfgLdapCacheTTL 60
После этого можно произвести запуск веб-сервера командой:
/etc/init.d/apache start
После этого можно регистрировать
информацию о виртуальных доменах. Если заполнение LDAP базы
производится впервые, то необходимо создать файл ou_vhosts.ldiff
следующего содержания:
Не
забудьте добавить запись в DNS о хосте info.amalfi.netup.ru как описано
выше. Далее необходимо создать директорию
/var/www/info.amalfi.netup.ru, в которую положить файлы веб-страницы.
Запустите обычный Интернет браузер и попробуйте зайти на сайт
info.amalfi.netup.ru. Если отобразилась ожидаемая страница, то значит
всё настроено правильно, и можно приступать к добавлению других
виртуальных хостов.
Организация доступа абонентов через FTP для закачки
веб-страниц
После
того, как создана папка для загрузки веб-страниц, необходимо
организовать доступ для закачки содержимого. Наиболее удобно обеспечить
доступ по протоколу FTP, при этом логин для доступа к FTP-серверу будет
совпадать с именем виртуального хоста. Для примера возьмем хост
info.amalfi.netup.ru.
В качестве FTP-сервера будем использовать пакет proftpd с поддержкой
LDAP. Под Gentoo Linux его можно установить командами:
После того как FTP-сервер установлен, необходимо произвести
корректировку конфигурационного файла /etc/proftpd/proftpd.conf.
Необходимо добавить строки:
LDAPServer localhost LDAPDNInfo cn=Manager,dc=amalfi,dc=netup,dc=ru secret LDAPDoAuth on "ou=users,dc=amalfi,dc=netup,dc=ru" DefaultRoot ~ User ftp Group ftp
Произведите запуск FTP-сервера командой:
/etc/init.d/proftpd start
Для регистрации учетной записи необходимо создать файл ftp_user.ldiff
следующего содержания:
В
результате в LDAP будет создана учетная запись с логином
info.amalfi.netup.ru и паролем qwe123. Эти данные можно использовать
для подключения по FTP. Таким образом, мы организовали доступ абонентов
к папкам, содержащим документы, относящиеся к их веб-страницам. При
этом просмотр чужих папок запрещен.
Зачастую
возникает необходимость учитывать объем IP-трафика, переданного и
принятого виртуальными хостами. Для этих целей был разработан модуль
mod_accounting для веб-сервера apache. Страница проекта в Интернете - http://sourceforge.net/projects/mod-acct/.
Информацию по потребленному
IP-трафику данный модуль записывает в базу данных MySQL либо
PostgreSQL. В данной статье будет описана работа с базой данных MySQL.
Для установки базы данных PostgreSQL под Gentoo Linux выполните
команду:
emerge postgresql
Рекомендуется выполнить эту команду
даже если вы планируете использовать только MySQL. Библиотеки
установленные с этой базой данных потребуются для сборки модуля
apache2. Для установки базы
данных MySQL под Gentoo Linux выполните
команды:
emerge mysql mysql_install_db /etc/init.d/mysql start
В
итоге у вас должен быть запущен и работать сервер базы данных MySQL.
Для установки модуля mod_accounting необходимо скачать файл
mod_accounting-0.5.tar.gz. также необходимо скачать патч, разработанный
сотрудниками компании NetUP, позволяющий скомпилировать данный модуль
для apache2. Патч можно скачать по адресу - http://www.netup.ru/downloads/mod_accounting-0.5_httpd2x.patch
Установите модуль командами:
tar xvfz mod_accounting-0.5.tar.gz cd mod_accounting-0.5/ patch -p1 < mod_accounting-0.5_httpd2x.patch make make install
После
установки необходимо провести корректировку конфигурационного файла
/etc/apache2/conf/apache2.conf.
Добавьте следующую информацию:
При этом в базе данных mysql
необходимо создать базу accounting. Это
можно сделать командой:
mysqladmin create accounting mysql accounting < schema.sql
также необходимо разрешить доступ к этой базе данных пользователем acct
и паролем acct с локального хоста. Это можно сделать командой:
mysql -u root
далее как появится приглашение mysql> ввести команду:
GRANT ALL ON accounting.* TO acct@localhost IDENTIFIED BY 'acct';
После внесения изменений произведите перезапуск веб-сервера apache2
командой:
/etc/init.d/apache2 restart
Для тестирования связки
загрузите информацию с виртуального хоста info.amalfi.netup.ru. В базе
данных должна появиться информация о прокачанных объемах трафика. Для
просмотра можно воспользоваться утилитой mysql. Запустите утилиту
командой:
mysql accounting
После того, как появится приглашение mysql>, ввести команду:
select * from ipacct;
должна появится примерно следующая информация:
+--------------+------------------------+------+---------+-----------+ | tstamp | vhost | user | bytesin | bytesout | +--------------+------------------------+------+---------+-----------+ | 1123510098 | info.amalfi.netup.ru | | 417 | 2163963 | +--------------+------------------------+------+---------+-----------+ 1 row in set (0.00 sec)
Как
видно из этой таблицы, к виртуальному хосту info.amalfi.netup.ru было
передано 417 байт информации, а в обратном направлении - 2163963 байт
информации. Для более удобной обработки и тарификации этих данных
рекомендуется использовать биллинговую систему NetUP UTM версии 5.0. В
данной биллинговой системе реализована гибкая политика тарификации
трафика из разных источников, что очень удобно при наличии абонентов
выделенной линии и абонентов, пользующихся услугами хостинга с
тарификацией по трафику. Более подробную информацию по биллинговой
системе вы можете получить на сайте www.netup.ru.
tar xvfz dhcp-3.0pl2.tar.gz
gzip -d dhcp-3.0pl2.ldap.diff.gz
cp dhcp-3.0pl2.ldap.diff dhcp-3.0pl2
cd dhcp-3.0pl2
patch -p1 < dhcp-3.0pl2.ldap.diff ./configure
В файле work.linux-2.2/server/Makefile
замените строку LIBS = на LIBS =
-lldap и выполните команды:
make
make install touch /var/state/dhcp/dhcpd.leases
также необходимо скопировать файл с LDAP-схемой командой:
cp contrib/dhcp.schema /etc/openldap/schema/
В конфигурационный файл /etc/openldap/slapd.conf
необходимо добавить
строку:
include /etc/openldap/schema/dhcp.schema
После чего необходимо перезапустить LDAP-сервер командой:
/etc/init.d/slapd restart
Если у вас уже имеется файл
конфигурации dhcpd.conf,
то для автоматического переноса данных в LDAP
следует использовать скрипт contrib/dhcpd-conf-to-ldap.pl
(предварительно в него необходимо вписать ваши данные). На этом
установка DHCP-сервера с поддержкой LDAP окончена. Далее необходимо
произвести корректировку конфигурационного файла /etc/dhcpd.conf.
Создайте файл следующего содержания:
Запуск сервера DHCP произведите командой (вместо eth0 укажите ваш
интерфейс):
/usr/sbin/dhcpd eth0
В результате, поиск данных для выдачи
IP-адресов по DHCP будет производиться в LDAP. Далее необходимо создать
в LDAP записи о параметрах настроек сетей, которые мы будем раздавать
по DHCP. Если заполнение данных проводится впервые, то необходимо
создать файл dhcp_config.ldiff
следующего содержания:
dn: cn=dhcpd.amalfi.netup.ru,dc=amalfi,dc=netup,dc=ru
objectClass: top
objectClass: dhcpServer
cn: dhcpd.amalfi.netup.ru
dhcpServiceDN: cn=DHCP Config,dc=amalfi,dc=netup,dc=ru
# Важно! Вместо строки dhcpd.amalfi.netup.ru укажите имя вашего хоста, # где будет производиться запуск DHCP-сервера. Получить имя хоста можно # выполнив команду hostname.
dn: cn=DHCP Config, dc=amalfi,dc=netup,dc=ru
cn: DHCP Config
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptionsv
dhcpPrimaryDN: cn=amalfi, dc=amalfi,dc=netup,dc=ru
dhcpStatements: default-lease-time 600
dhcpStatements: max-lease-time 7200
dhcpStatements: log-facility local7
dhcpOption: domain-name "amalfi.netup.ru" dhcpOption: domain-name-servers 10.1.2.1
После этого можно добавлять информацию о сетях, либо отдельных хостах.
Например, для регистрации сети 10.1.2.0/24 необходимо создать файл
dhcp_net.ldiff следующего
содержания:
При
необходимости зарегистрировать один IP-адрес и указать, на какой
MAC-адрес он должен выдаваться, следует создать файл dhcp_host.ldiff
следующего содержания:
dn: cn=test, cn=DHCP Config, dc=amalfi,dc=netup,dc=ru
cn: test
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
dhcpHWAddress: ethernet 00:00:e2:58:ac:a6 dhcpStatements: fixed-address 10.1.2.45
В результате проведенных настроек вся информация по сетям,
обслуживаемым DHCP, хранится в хранилище LDAP.
Хранение системных пользователей в LDAP.
Зачастую в
локальных компьютерных сетях появляется необходимость организовать
централизованное хранение информации по пользователям, включая пароли.
Данную схему можно организовать на базе операционной системы Gentoo
Linux и пакетов pam_ldap, nss_ldap и OpenLDAP. Страница проекта в
Интернете - http://www.padl.com/Contents/Documentation.html.
Установить модули под Gentoo Linux можно командами:
emerge pam_ldap emerge nss_ldap
После установки необходимо отредактировать конфигурационный файл
/etc/ldap.conf.
Необходимо указать следующие строки:
На этом настройка окончена. Можно приступить к регистрации
пользователей.
Для регистрации учетной записи необходимо создать файл
system_user.ldiff следующего
содержания:
Как
видно, данная запись отличается от той, что регистрируется для доступа
по FTP, наличием двух атрибутов - shadowAccount и loginShell. Второй
атрибут указывает на командную оболочку, которая будет выдана
пользователю при подключении. При этом абонент может открывать сессию в
X Window и т .д. Для тестирования можно выполнить подключение к системе
(например, удаленно, по ssh либо локально, с клавиатуры) с логином
acc.amalfi.netup.ru и паролем qwe123. Пароль при создании абонента
задается в виде MD5 Hash. Получить hash можно командой:
slappasswd -h {MD5}