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

Все права защищены (c) 2001-2011 NetUP (www.netup.ru)
Перепечатка материалов разрешается только с предварительного разрешения
компании NetUP (info@netup.ru)
Обращаем ваше внимание на то, что информация в данной статье может быть не актуальной.
Настройка и использование централизованного управления сервисами с использованием сервера 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. Сайт проекта 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: dhcpOptions
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 required /lib/security/pam_env.so
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
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 required /lib/security/pam_env.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_unix.so nullok md5 shadow use_authtok
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
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}