Настройка и использование централизованного управления сервисами с использованием сервера LDAP

Оригинал статьи находится по адресу: http://www.netup.ru/articles.php?n=11

Настройка и использование централизованного управления сервисами

с использованием сервера 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:
allow bind_v2
И указать информацию в полях:
suffix "dc=amalfi,dc=netup,dc=ru"
rootdn "cn=Manager,dc=amalfi,dc=netup,dc=ru"
rootpw secret
В данном случае указано, что все запросы к данному 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
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret
-P 2 -x < main.ldiff

Установка и настройка ISC BIND.

В данной главе описывается настройка сервера 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. Добавьте информацию о следующей зоне:
dlz "ldap zone" {
    database "ldap 2
    v3 simple {cn=Manager,dc=amalfi,dc=netup,dc=ru} {secret} {127.0.0.1}
   
ldap:///dlzZoneName=%zone%,ou=dns,dc=amalfi,dc=netup,dc=ru???objectclass=dlzZone
ldap:///dlzHostName=%record%,dlzZoneName=%zone%,ou=dns,dc=amalfi,dc=netup,dc=ru?dlzTTL,
dlzType,dlzPreference,dlzData,dlzIPAddr,dlzPrimaryNS,dlzAdminEmail
,dlzSerial,dlzRefresh,dlzRetry,dlzExpire,dlzMinimum?sub?objectclass=dlzAbstractRecord";
};
После того, как файл откорректирован, можно произвести запуск DNS-сервера:
/etc/init.d/named start
Комплекс готов к работе.
Для тестирования добавим описание одной зоны и трех хостов в этой зоне. Создайте файл zones.ldiff следующего содержания:
dn: ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: organizationalUnit
ou: dns
Примените его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret
-P 2 -x < zones.ldiff
Затем необходимо создать файл zone.ldiff непосредственно с описанием зоны:
dn: dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzZone
dlzZoneName: amalfi.netup.ru
# MX
dn: dlzHostName=@,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzHost
dlzHostName: @
dn: dlzRecordID=1,dlzHostName=@,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzMXRecord
dlzRecordID: 1
dlzHostName: @
dlzType: mx
dlzData: mail
dlzPreference: 20
dlzTTL: 10
# SOA
dn: dlzRecordID=2,dlzHostName=@,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzSOARecord
dlzRecordID: 2
dlzHostName: @
dlzType: soa
dlzSerial: 2
dlzRefresh: 2800
dlzRetry: 7200
dlzExpire: 604800
dlzMinimum: 86400
dlzAdminEmail: aospan.netup.ru
dlzPrimaryns: ns.amalfi.netup.ru
dlzTTL: 10
# default A record
dn: dlzRecordID=3,dlzHostName=@,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzARecord
dlzRecordID: 3
dlzHostName: @
dlzType: a
dlzIPAddr: 10.1.2.4
dlzTTL: 10
Примените его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < zone.ldiff
После этого можно добавить описание трех хостов. Создайте файл hosts.ldiff следующего содержания:
# mail host
dn: dlzHostName=mail,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzHost
dlzHostName: mail
dn: dlzRecordID=1,dlzHostName=mail,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzARecord
dlzRecordID: 1
dlzHostName: mail
dlzType: a
dlzIPAddr: 10.1.2.4
dlzTTL: 10
# ns host
dn: dlzHostName=ns,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzHost
dlzHostName: ns
dn: dlzRecordID=1,dlzHostName=ns,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzARecord
dlzRecordID: 1
dlzHostName: ns
dlzType: a
dlzIPAddr: 10.1.2.4
dlzTTL: 10
# another host
dn: dlzHostName=info,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzHost
dlzHostName: info
dn: dlzRecordID=1,dlzHostName=info,dlzZoneName=amalfi.netup.ru,ou=dns,dc=amalfi,dc=netup,dc=ru
objectclass: dlzARecord
dlzRecordID: 1
dlzHostName: info
dlzType: a
dlzIPAddr: 10.1.2.4
dlzTTL: 10
Примените его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < hosts.ldiff
Для проверки работоспособности выполните следующие запросы:
nslookup mail.amalfi.netup.ru
nslookup ns.amalfi.netup.ru
Если в результате 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 и внести в него следующую информацию:
ldap_sasl: 1
ldap_servers: ldap://127.0.0.1/
ldap_bind_dn: cn=Manager,dc=amalfi,dc=netup,dc=ru
ldap_password: secret
ldap_search_base: ou=users,dc=amalfi,dc=netup,dc=ru
ldap_mech: DIGEST_MD5
ldap_auth_method: custom
ldap_debug: 1
Данная информация будет использоваться демоном 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. После скачивания патча наложите его командами:
cd /usr/portage/net-mail/cyrus-imapd
patch < autocreate_cyrus_2.2.12.ebuild.patch
rm -f autocreate_cyrus_2.2.12.ebuild.patch
ebuild /usr/portage/net-mail/cyrus-imapd/cyrus-imapd-2.2.12.ebuild
digest
После этого можно произвести установку сервера cyrus-imapd командами:
export USE="autocreate"
emerge cyrus-imapd
После установки пакета необходимо откорректировать конфигурационный файл /etc/imapd.conf. Добавьте в него следующую информацию:
hashimapspool: yes
allowanonymouslogin: yes
allowplaintext: yes
sasl_pwcheck_method: saslauthd
mboxlist_db: flat
autocreatequota: 10000000
createonpost: yes
sasl_mech_list: CRAM-MD5
force_sasl_client_mech: CRAM-MD5
virtdomains: on
Закомментируйте в этом конфигурационном файле строки начинающиеся на 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. Добавьте в него следующую информацию:
mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
virtual_transport = lmtp:unix:/var/imap/socket/lmtp
alias_database = hash:/etc/mail/aliases ldap:ldapsource
alias_maps = hash:/etc/mail/aliases ldap:ldapsource
virtual_mailbox_maps = ldap:ldapsource
virtual_alias_maps = ldap:ldapsource
ldapsource_server_host = localhost
ldapsource_search_base = ou=users,dc=amalfi,dc=netup,dc=ru
ldapsource_version = 3
ldapsource_bind_dn = cn=Manager,dc=amalfi,dc=netup,dc=ru
ldapsource_bind_pw = secret
ldapsource_result_attribute = mail
ldapsource_query_filter = (&(mail=%s))
virtual_mailbox_domains = ldap:domains
domains_server_host = localhost
domains_base_dn = ou=dns,dc=amalfi,dc=netup,dc=ru
domains_scope = one
domains_bind_dn = cn=Manager,dc=amalfi,dc=netup,dc=ru
domains_bind_pw = secret
domains_search_base = ou=dns,dc=amalfi,dc=netup,dc=ru
domains_query_filter = (&(objectClass=dlzZone)(dlzZoneName=%s))
domains_result_attribute = dlzZoneName
Произведите запуск почтового сервера postfix командой:
/etc/init.d/postfix start
После этого можно регистрировать информацию о почтовых ящиках. Если заполнение LDAP базы производится впервые, то необходимо создать файл ou_users.ldiff следующего содержания:
dn: ou=users,dc=amalfi,dc=netup,dc=ru
objectClass: organizationalUnit
ou: users
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < ou_users.ldiff
Для регистрации почтового ящика создайте файл mail_user.ldiff следующего содержания:
dn: cn=info, ou=users, dc=amalfi,dc=netup,dc=ru
mail: info@amalfi.netup.ru
userPassword:: e01ENX1JQWdnNHlKNEZlMFhWcWExTWVmZzBnPT0=
uid: info@amalfi.netup.ru
objectClass: inetOrgPerson
objectClass: uidObject
objectClass: organizationalPerson
objectClass: top
givenName: info
sn: UTM created mail account
cn: info
и примените его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < mail_user.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 следующего содержания:
dn: ou=vhosts,dc=amalfi,dc=netup,dc=ru
objectClass: organizationalUnit
ou: vhosts
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < ou_vhosts.ldiff
Для регистрации виртуального домена необходимо создать файл vhost.ldiff следующего содержания:
dn: cn=info, ou=vhosts, dc=amalfi,dc=netup,dc=ru
apacheServerAlias: info.amalfi.netup.ru
apacheServerName: info.amalfi.netup.ru
objectClass: apacheConfig
objectClass: organizationalPerson
apacheDocumentRoot: /var/www/info.amalfi.netup.ru
sn: UTM created www vhost
cn: info
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < vhost.ldiff

Рис 6. Виртуальный хост в LDAP
Не забудьте добавить запись в 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 его можно установить командами:
export USE="ldap"
emerge proftpd
cp /etc/proftpd/proftpd.conf.sample /etc/proftpd/proftpd.conf
После того как 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 следующего содержания:
dn: cn=info.amalfi.netup.ru,ou=users,dc=amalfi,dc=netup,dc=ru
givenName: info.amalfi.netup.ru
sn: UTM created FTP-account
userPassword:: e01ENX1JQWdnNHlKNEZlMFhWcWExTWVmZzBnPT0=
uidNumber: 10001
gidNumber: 10001
objectClass: inetOrgPerson
objectClass: uidObject
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: top
uid: info.amalfi.netup.ru
cn: info.amalfi.netup.ru
homeDirectory: /var/www/info.amalfi.netup.ru

и применить его командой:

ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < ftp_user.ldiff

Рис 7. FTP-аккаунт в LDAP
В результате в LDAP будет создана учетная запись с логином info.amalfi.netup.ru и паролем qwe123. Эти данные можно использовать для подключения по FTP. Таким образом, мы организовали доступ абонентов к папкам, содержащим документы, относящиеся к их веб-страницам. При этом просмотр чужих папок запрещен.

Учет IP-трафика, потребленного виртуальными хостами.

Зачастую возникает необходимость учитывать объем 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. Добавьте следующую информацию:
LoadModule accounting_module modules/mod_accounting.so
AccountingQueryFmt "INSERT INTO ipacct( tstamp, vhost, user, bytesin, bytesout ) VALUES( unix_timestamp(NOW()) , '%h', '%u', %r, %s )"
AccountingDatabase accounting
AccountingDatabaseDriver mysql
AccountingDBHost localhost 3306
AccountingLoginInfo acct acct


При этом в базе данных 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.

Настройка DHCP на базе isc-dhcpd и OpenLDAP.

Так как DHCP-сервер, идущий в поставке Gentoo Linux пока не поддерживает хранение информации в LDAP, установка будет произведена из исходных текстов с наложением патча. Скачайте сервер DHCP по адресу ftp://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-3.0pl2.tar.gz и обновление к нему по адресу http://www.lunytune.net/dhcp-3.0pl2.ldap.diff.gz. Установите командами:
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. Создайте файл следующего содержания:
ldap-server "localhost";
ldap-port 389;
ldap-username "cn=Manager,dc=amalfi,dc=netup,dc=ru";
ldap-password "secret";
ldap-base-dn "dc=amalfi,dc=netup,dc=ru";
ldap-method dynamic;
ddns-update-style ad-hoc;
Запуск сервера 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
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < dhcp_config.ldiff
После этого можно добавлять информацию о сетях, либо отдельных хостах. Например, для регистрации сети 10.1.2.0/24 необходимо создать файл dhcp_net.ldiff следующего содержания:
dn: cn=10.1.2.0, cn=DHCP Config,dc=amalfi,dc=netup,dc=ru
cn: 10.1.2.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 10.1.2.2 10.1.2.253
dhcpOption: domain-name-servers 10.1.2.1
dhcpOption: routers 10.1.2.1
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < 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
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=etUP,dc=ru" -w secret -P 2 -x < dhcp_host.ldiff

Рис 8. Настройки DHCP-сервера в хранилище LDAP
В результате проведенных настроек вся информация по сетям, обслуживаемым 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. Необходимо указать следующие строки:
host 127.0.0.1
base ou=users,dc=amalfi,dc=netup,dc=ru
binddn cn=Manager,dc=amalfi,dc=netup,dc=ru
bindpw secret
rootbinddn cn=Manager,dc=amalfi,dc=netup,dc=ru
pam_password md5
nss_base_shadow ou=users,dc=amalfi,dc=netup,dc=ru?sub?objectClass=posixAccount
Внесите изменения в файл /etc/nsswitch.conf. Вместо строк:
passwd: compat
shadow: compat
укажите строки:
passwd: compat ldap
shadow: compat ldap
Внесите изменения в файл /etc/pam.d/system-auth. Вместо строк:
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
auth required /lib/security/pam_env.so password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
укажите строки:
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so debug use_first_pass
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_ldap.so debug use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
auth required /lib/security/pam_env.so password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
session optional /lib/security/pam_ldap.so debug
На этом настройка окончена. Можно приступить к регистрации пользователей. Для регистрации учетной записи необходимо создать файл system_user.ldiff следующего содержания:
dn: cn=acc.amalfi.netup.ru,ou=users,dc=amalfi,dc=netup,dc=ru
givenName: acc.amalfi.netup.ru
sn: UTM created System-account
userPassword:: e01ENX1JQWdnNHlKNEZlMFhWcWExTWVmZzBnPT0=
uidNumber: 10001
gidNumber: 10001
objectClass: inetOrgPerson
objectClass: uidObject
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
loginShell: /bin/bash
uid: acc.amalfi.netup.ru
cn: acc.amalfi.netup.ru
homeDirectory: /mnt/rouming_home/acc.amalfi.netup.ru
и применить его командой:
ldapadd -D "cn=Manager,dc=amalfi,dc=netup,dc=ru" -w secret -P 2 -x < system_user.ldiff

Рис 8. Системный пользователь в хранилище LDAP.

Как видно, данная запись отличается от той, что регистрируется для доступа по FTP, наличием двух атрибутов - shadowAccount и loginShell. Второй атрибут указывает на командную оболочку, которая будет выдана пользователю при подключении. При этом абонент может открывать сессию в X Window и т .д. Для тестирования можно выполнить подключение к системе (например, удаленно, по ssh либо локально, с клавиатуры) с логином acc.amalfi.netup.ru и паролем qwe123. Пароль при создании абонента задается в виде MD5 Hash. Получить hash можно командой: slappasswd -h {MD5}

© 2005 NetUP Inc. All Right reserved.
тел: +7 (095) 543-9220 (многоканальный)
+7 (095) 510-1025 (многоканальный)
тел/факс: +7 (095) 540-9652, 540-9653
info@netup.ru