Pull to refresh

LDAP для интернет-проекта. Часть 2

System administration *
Ссылки на остальные части: первая, третья, четвертая, пятая.

Продолжаю повествование.
Напомню, что в первой части мы установили OpenLDAP на два сервера и настроили между ними репликацию.

2. Настроим резервное копирование, благо это не так сложно.

Для резервного копирования я использую систему bacula. Установку и настройку «серверных» модулей Director и Storage я оставлю за пределами данной статьи, остановившись на настройке клиента.
Устанавливаеем: bacula-fd
Редактируем /etc/bacula/bacula-fd.conf
cat > /etc/bacula/bacula-fd.conf << "EOF"
Director {
Name = backup.habr.ru-dir
Password = "<пароль, указанный в конфиге Director>"
}
FileDaemon {
Name = ldap01.habr.ru-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20
#если хотите чтобы демон работал только на внутреннем интерфейсе, раскомментируйте следующую строку
# FDAddress = 192.168.100.1
}
Messages {
Name = Standard
director = bkp01.habr.ru-dir = all, !skipped, !restored
}
EOF

Создаём необходимые каталоги: mkdir /root/scripts /var/backups/openldap
Для выгрузки дампа нам потребуется следующий скрипт:
cat > /root/scripts/ldap_backup.sh << "EOF"
#!/bin/sh
/usr/sbin/slapcat > /var/backups/openldap/habr.ru.ldif
EOF

Сжимать файл не обязательно — это сделает bacula.

Для удаления после резервного копирования делаем ещё один скрипт:
cat > /root/scripts/ldap_backup_clean.sh << "EOF"
#!/bin/sh
rm /var/backups/openldap/habr.ru.ldif
EOF

Перезапускаем bacula-fd: /etc/init.d/bacula-fd restart

На сервере backup.habr.ru в файл /etc/bacula/director.conf
Добавляем примерно следующее
cat >> /etc/bacula/director.conf << "EOF"
Client {
Name = ldap01.habr.ru-fd
Address = 192.168.100.1
FDPort = 9102
Catalog = MyCatalog
Password = "пароль из первого конфига"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

FileSet {
Name = "ldap"
Include {
Options {
signature = MD5
}
File = /var/backups/openldap/
}
}
Job {
Name = "ldap01.habr.ru-system"
Client = ldap01.habr.ru-fd
JobDefs = "DefaultJob"
FileSet = "ldap"
Write Bootstrap = "/var/lib/bacula/ldap01.habr.ru-log.bsr"
ClientRunBeforeJob = "/root/scripts/ldap_backup.sh"
ClientRunAfterJob = "/root/scripts/ldap_backup_clean.sh"
}
EOF

Перезагружаем конфигурацию bacula-dir: /etc/init.d/bacula-dir reload
Проверить работу можно через bconcole.

3. Ставим удобную web-панель администрирования — phpldapadmin.
Пакет phpldapadmin у нас уже установлен, если пропустили, то ставим через apt: apt-get install phpldapadmin
Он установит свой конфиг апача в /etc/apache2/conf.d/phpldapadmin и после перезагрузки httpd будет доступен по адресу habr.ru/phpldapadmin
Рекомендую сразу поднять его на отдельном вирутальном хосте типа ldap01.habr.ru и с SSL.
Далее нас будет интересовать конфиг phpldapadmin'а: /etc/phpldapadmin/config.php.
Изменяем в нём строчки:
$ldapservers->SetValue($i,'server','name','Habrahabr');
$ldapservers->SetValue($i,'server','host','ldap01.habr.ru');
$ldapservers->SetValue($i,'server','base',array('dc=habr,dc=ru'));

После чего можно зайти в нашу админку, указав в поле Login DN cn=admin,dc=habr,dc=ru
и пароль в соответствующем поле.
Дальше нам необходимо создать organizationalUnit для пользователей, и organizationalUnit для групп.
Я не создаю свою собственную схему и использую два стандартных шаблона для пользователей: posixAccount для пользователей, которые должны иметь shell-доступ к серверам и simpleSecurityObject для всех остальных. К simpleSecurityObject я обычно добавляю атрибут description, в который пишу ФИО и контакты.
Также будет логичным создавать simpleSecurityObject-пользователей в одной organizationalUnit, а posixAccount в другой.
Группы я создаю на основе шаблона groupOfUniqueNames, а в качестве uniqueMember добавляю пользователей.

Всю эту кухню в действии мы попробуем в следующей части статьи.
На сегодня всё, спасибо за внимание.
Tags:
Hubs:
Total votes 2: ↑2 and ↓0 +2
Views 6.7K
Comments Comments 4