Содержание
Настроив PDC + LDAP и прикрутив к LDAP почтовик и авторизацию Squid я задумался о следующем, а что если мой незаменимый LDAP сервер сломается и что тогда, куча разъярённых пользователей во главе с директором оставшиеся без почты, интернета, файл сервера и возможности зайти на свой компьютер, носятся по офису с криками а ну делай что нибудь, при этом директор то и дело рассказывает что он сделает с тобой если в ближайшее время всё не заработает ;). Ситуация как говорится не из приятных. Дабы избежать подобных ситуаций я решил настроить резервный сервер.
И так, имеется свежеустановленная Ubuntu 10.04 в процессе установки был выбран LAMP сервер, в связи с этим я здесь не буду описывать настройку apache2 + php5.
Все действия в этой статье выполняются от пользователя root.
Для настройки резервного сервера LDAP нам понадобятся все схемы установленные на основном сервере, их можно взять на основном сервере, если вы не сохраняли подготовленные для установки схемы, тогда их необходимо будет создать заново. В данной статье я буду создавать необходимые схемы заново.
Скачиваем Gosa 2.6 с оф. сайта.
wget -P /tmp http://oss.gonicus.de/pub/gosa/gosa-complete-2.6.12.tar.bz2
Распаковываем содержимое архива
tar xjf /tmp/gosa-complete-2.6.12.tar.bz2 -C /tmp
1. Приступаем к настройке LDAP
Устанавливаем необходимые пакеты
apt-get install slapd ldap-utils
Подключаем базовые схемы
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/misc.ldif
Теперь нужно подключить схемы которые мы подключали для работы Gosa и samba.
Копируем схему samba в каталог /etc/ldap/schema
cp /tmp/gosa-complete-2.6.12/contrib/openldap/samba3.schema /etc/ldap/schema/
Схему samba3.schema необходимо перевести в формат ldif. Для этого переходим в каталог /etc/ldap
cd /etc/ldap
и создаём файл schema_convert.conf
> schema_convert.conf
следующего содержания:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/samba3.schema
Затем создадим временный каталог и конвертируем в него схему
mkdir /tmp/ldif_output slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={6}samba3,cn=schema,cn=config" > /tmp/cn=samba3.ldif
Переходим в каталог с полученной схемой
cd /tmp/
Далее приступаем к редактированию полученной схемы. Открываем схему cn=samba3.ldif в вашем любимом редакторе (я пользуюсь редактором в mc) и приводим её к следующему виду
Редактируем заголовок:
было:
dn: cn={6}samba3,cn=schema,cn=config objectClass: olcSchemaConfig cn: {6}samba3
стало:
dn: cn=samba3,cn=schema,cn=config objectClass: olcSchemaConfig cn: samba3
В конце схемы удаляем строки примерно следующего содержания
structuralObjectClass: olcSchemaConfig entryUUID: 7ffcc302-2474-102f-8b3e-d5fe493c556a creatorsName: cn=config createTimestamp: 20100715155056Z entryCSN: 20100715155056.239425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20100715155056Z
То есть удаляем всё начиная с structuralObjectClass: и до конца файла.
Ну и на последок копируем и переименовываем файл схемы
cp /tmp/cn\=samba3.ldif /etc/ldap/schema/samba3.ldif
Далее необходимо подобным образом отредактировать все ldif файлы находящиеся в /tmp/gosa-2.6.11/contrib/openldap/
cd /tmp/gosa-complete-2.6.12/contrib/openldap/
К примеру возьмём файл trust.ldif.
Было:
dn: cn={13}trust objectClass: olcSchemaConfig cn: {13}trust olcAttributeTypes: {0}( 5.3.6.1.1.1.1.0 NAME 'trustModel' DESC 'Access scheme' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6 .1.4.1.1466.115.121.1.26 SINGLE-VALUE ) olcAttributeTypes: {1}( 5.3.6.1.1.1.1.1 NAME 'accessTo' DESC 'Access to which servers user is allowed' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Subs tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcObjectClasses: {0}( 5.3.6.1.1.1.2.0 NAME 'trustAccount' DESC 'Sets trust ac counts information' SUP top AUXILIARY MUST trustModel MAY accessTo ) structuralObjectClass: olcSchemaConfig entryUUID: fbafdc48-f065-102e-960d-79233977c302 creatorsName: cn=config createTimestamp: 20100510095600Z entryCSN: 20100510095600.855485Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20100510095600Z
Стало:
dn: cn=trust,cn=schema,cn=config objectClass: olcSchemaConfig cn: trust olcAttributeTypes: {0}( 5.3.6.1.1.1.1.0 NAME 'trustModel' DESC 'Access scheme' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6 .1.4.1.1466.115.121.1.26 SINGLE-VALUE ) olcAttributeTypes: {1}( 5.3.6.1.1.1.1.1 NAME 'accessTo' DESC 'Access to which servers user is allowed' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5Subs tringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) olcObjectClasses: {0}( 5.3.6.1.1.1.2.0 NAME 'trustAccount' DESC 'Sets trust ac counts information' SUP top AUXILIARY MUST trustModel MAY accessTo )
Теперь копируем их в каталог /etc/ldap/schema
cp /tmp/gosa-complete-2.6.12/contrib/openldap/*.ldif /etc/ldap/schema/ && cp /tmp/gosa-complete-2.6.12/contrib/openldap/*.schema /etc/ldap/schema/
Подключаем схемы в следующем порядке
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/trust.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba3.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/gosystem.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/gofon.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/goto.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/goto-mime.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/gosa-samba3.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/gofax.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/goserver.ldif
Так как при подключении почтовика была добавлена ещё одна схема то её также необходимо будет добавить. Переходим в каталог /tmp/gosa-complete-2.6.12/contrib/plugins/fai и редактируем файл схемы fai.ldif, так как это описывалось выше т.е.:
Строки в начале приводим к виду
dn: cn=fai,cn=schema,cn=config objectClass: olcSchemaConfig cn: fai
и в конце файла удаляем всё начиная с structuralObjectClass: и до конца файла.
Добавляем эту схему в LDAP
cp /tmp/gosa-complete-2.6.12/contrib/plugins/fai/fai.ldif /etc/ldap/schema/ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/fai.ldif
Переходим в каталог /etc/ldap
cd /etc/ldap
Создаём базу LDAP такую же как создавали для основного сервера. Для этого создаём файл db.ldif
>db.ldif
следующего содержания:
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_hdb dn: olcDatabase={1}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcSuffix: dc=example,dc=com olcDbDirectory: /var/lib/ldap olcRootDN: cn=admin,dc=example,dc=com olcRootPW: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== olcDbConfig: set_cachesize 0 2097152 0 olcDbConfig: set_lk_max_objects 1500 olcDbConfig: set_lk_max_locks 1500 olcDbConfig: set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcLastMod: TRUE olcDbCheckpoint: 512 30 olcAccess: to attrs=sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet,userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none olcAccess: to attrs=shadowLastChange by self write by * read olcAccess: to dn.base="" by * read olcAccess: to dn.subtree="" by * read olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
Исправьте в созданном файле имя домена на то что у вас указанно в основном сервере. Например, если у вас на основном сервере домен dc=kontora,dc=ru то и здесь замените домен dc=example,dc=com на dc=kontora,dc=ru во всём тексте.
Установите пароль администратора такой же как на основном сервере в соответствующей строке файла
olcRootPW: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== в данном примере пароль будет secret
для получения шифрованного пароля была использована утилита slappasswd, использовать её надо следующим образом
slappasswd -h {<МЕТОД_ХЕШИРОВАНИЯ>} -s ПАРОЛЬ
Например
slappasswd -h {MD5} -s secret
Вывод: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
Теперь загрузим эту конфигруацию:
ldapadd -Y EXTERNAL -H ldapi:/// -f db.ldif
Далее включаем шифрование для нашего резервного LDAP.
Идём на наш основной LDAP сервер.
Создаём папку для сертификатов backup сервера и заходим в неё
mkdir /etc/ssl/ldap02-ssl && cd /etc/ssl/ldap02-ssl
Создаём ключ для резервного сервера
certtool --generate-privkey > ldap02_slapd_key.pem
Создаём файл ldap02.info следующего содержания
country = US state = North Carolina locality = Winston-Salem organization = Example Company cn = mail.example.com tls_www_client encryption_key signing_key
Первые пять значений меняйте на свои. Значение параметра «cn» установите равным результату команды «hostname -f» выполненной на резервном сервере.
Создаём сертификат
certtool --generate-certificate --load-privkey ldap02_slapd_key.pem \ --load-ca-certificate /etc/ssl/certs/cacert.pem --load-ca-privkey /etc/ssl/private/cakey.pem \ --template ldap02.info --outfile ldap02_slapd_cert.pem
Копируем СА сертификат
cp /etc/ssl/certs/cacert.pem .
Теперь содержимое папки ldap02-ssl необходимо скопировать на backup сервер следующим образом: файлы cacert.pem и ldap02_sldapd_cert.pem необходимо положить в папку /etc/ssl/certs на backup сервере, файл ldap02_sldapd_key.pem необходимо положить в папку /etc/ssl/private на backup сервере.
Теперь мы имеем certificate, key, и CA cert для установки, используем утилиту ldapmodify для добавления новых опций в конфигурацию.
Вводим в консоли
ldapmodify -Y EXTERNAL -H ldapi:///
затем вставляем следующее:
dn: cn=config add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/ldap02_slapd_cert.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap02_slapd_key.pem
После чего жмём дважды enter должна появится надпись modifying entry «cn=config» и Ctrl+D для выхода.
Далее редактируем /etc/default/slapd опцию SLAPD_SERVICES
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
Теперь пользователь openldap дорлжен иметь доступ к сертификату (не забываем менять ldap02 на своё)
adduser openldap ssl-cert && chgrp ssl-cert /etc/ssl/private/ldap02_slapd_key.pem && chmod g+r /etc/ssl/private/ldap02_slapd_key.pem
Перезагружаем LDAP
/etc/init.d/slapd restart
Если после перезагрузки ldap не запустился, а в syslog присутствует main: TLS init def ctx failed: -1, это ошибка конфигурации, проверьте содержимое файла /etc/ldap/slapd.d/cn=config.ldif правильно ли в нём указаны пути и названия сертификатов и убедитесь в том что группа ssl-cert имеет возможность читать закрытый ключ /etc/ssl/private/ldap02_slapd_key.pem
Теперь добавим индексы для samba
cd /etc/ldap
Создаём samba_indexes.ldif следующего содержания:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
Добавляем в базу
ldapmodify -Y EXTERNAL -H ldapi:/// -f samba_indexes.ldif
Добавим индексы для gosa
Создаём gosa_indexes.ldif следующего содержания:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: mail eq,sub olcDbIndex: gosaMailAlternateAddress,gosaMailForwardingAddress eq olcDbIndex: cn,sn,givenName,ou pres,eq,sub olcDbIndex: gosaSubtreeACL,gosaObject,gosaUser pres,eq olcDbIndex: displayName eq olcDbIndex: ipHostNumber eq olcDbIndex: postfixMyDestinations eq olcDbIndex: entryCSN eq
Добавляем в базу
ldapmodify -Y EXTERNAL -H ldapi:/// -f gosa_indexes.ldif
Редактируем /etc/ldap/ldap.conf
Указываем суффикс базы, в данном случае это dc=example,dc=com
BASE dc=example,dc=com URI ldap://localhost ldaps://«hostname -f вашего сервера» TLS_CERT /etc/ssl/certs/ldap02_slapd_cert.pem TLS_KEY /etc/ssl/private/ldap02_slapd_key.pem TLS_CACERT /etc/ssl/certs/cacert.pem
Перезагружаем LDAP
/etc/init.d/slapd restart
2. Перенос данных с основного LDAP сервера на резервный
Переходим на основной LDAP сервер, останавливаем LDAP, делаем резервную копию данных и запускаем LDAP.
cd /etc/ldap /etc/init.d/slapd stop slapcat -v -l backup.ldif /etc/init.d/slapd start
Переносим файл backup.ldif на backup сервер в папку /etc/ldap.
Переходим на backup сервер.
Останавливаем LDAP
/etc/init.d/slapd stop
Прежде чем восстановить резервную копию данных необходимо очистить всё содержимое папки /var/lib/ldap
rm -f /var/lib/ldap/*
Восстанавливаем резервную копию данных и выполняем переиндексацию
cd /etc/ldap sudo -u openldap slapadd -v -c -l backup.ldif sudo -u openldap slapindex -v
Запускаем LDAP
/etc/init.d/slapd start
Для проверки восстановленных данных можно выполнить поиск
ldapsearch -x -b ou=Users,dc=citramon,dc=donetsk,dc=ua "uid=*"
в данном случае должны отобразиться все пользователи, если в ответ получаем всех пользователей из основного LDAP сервера то всё ок, данные перенесены успешно.
3. Настраиваем репликацию LDAP
3.1 Настройка репликаций на основном сервере LDAP
Проверьте содержимое файла /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
на наличие следующих строк
olcDbIndex: entryCSN eq olcDbIndex: entryUUID eq
Если они отсутствуют тогда в /etc/ldap создайте файл addindex.ldif следующего содержания
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryCSN eq - add: olcDbIndex olcDbIndex: entryUUID eq
и внесите изменения в базу командой
ldapmodify -Y EXTERNAL -H ldapi:/// -f addindex.ldif
Если данные строки присутствуют то выше указанные действия выполнять не нужно.
Далее создаём файл provider_sync.ldif следующего содержания
#Загрузка syncprov и accesslog модулей. dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov - add: olcModuleLoad olcModuleLoad: accesslog # Создание БД Accesslog dn: olcDatabase={2}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap/accesslog olcSuffix: cn=accesslog olcRootDN: cn=admin,dc=example,dc=com olcDbIndex: default eq olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart # Добавление syncprov в БД Accesslog. dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE olcSpReloadHint: TRUE # Добавление syncprov в основную БД dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpNoPresent: TRUE # Добавление определения accesslog для основной БД dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcAccessLogConfig olcOverlay: accesslog olcAccessLogDB: cn=accesslog olcAccessLogOps: writes olcAccessLogSuccess: TRUE # Сканировать БД accesslog каждый день, и удалять записи старше 7 дней olcAccessLogPurge: 07+00:00 01+00:00
Вместо cn=admin,dc=example,dc=com подставьте своё значение.
Отредактируем файл /etc/apparmor.d/usr.sbin.slapd добавив в него:
/var/lib/ldap/accesslog/ r, /var/lib/ldap/accesslog/** rwk,
Создаём необходимую директорию, скопировать DB_CONFIG и перезагружаем профиль apparmor
sudo -u openldap mkdir /var/lib/ldap/accesslog sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog/ sudo /etc/init.d/apparmor reload
Внесём изменения в БД LDAP
ldapadd -Y EXTERNAL -H ldapi:/// -f provider_sync.ldif
Перезагрузим LDAP
/etc/init.d/slapd restart
Всё основной сервер настроен на проведение репликаций.
3.2 Настройка репликаций на резервном сервере LDAP
Создаём файл consumer_sync.ldif следующего содержания
#Load the syncprov module. dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov # syncrepl specific indices dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: entryUUID eq - add: olcSyncRepl olcSyncRepl: rid=0 provider=ldap://ldap01.example.com bindmethod=simple binddn="cn=admin,dc=example,dc=com" credentials=secret searchbase="dc=example,dc=com" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog starttls=yes - add: olcUpdateRef olcUpdateRef: ldap://ldap01.example.com
В olcSyncRepl следующие значения поменяйте на свои
provider=ldap://ldap01.example.com — основной LDAP сервер, вместо ldap01.example.com можно указать IP сервера binddn="cn=admin,dc=example,dc=com" — админ LDAP основного сервера credentials=secret — пароль админа LDAP основного сервера (здесь пароль secret) searchbase="dc=example,dc=com" — база для репликаций
Так же поменяйте на своё значение olcUpdateRef.
Внесём изменения в БД LDAP
ldapadd -c -Y EXTERNAL -H ldapi:/// -f consumer_sync.ldif
Перезагружаем LDAP
/etc/init.d/slapd restart
3.3 Проверка работы репликации
Допустим в LDAP присутствует пользователь test, выполним на backup сервере следующий запрос
ldapsearch -x -b ou=Users,dc=citramon,dc=donetsk,dc=ua "uid=test"
Результатом данного запроса будет информация по пользователю test, смотрим значение параметра sn оно равно test, теперь заходим в gosa на основном сервере, открываем пользователя test для редактирования и меняем значение поля Last Name значение этого поля и есть значение параметра sn в LDAP, возвращаемся на backup сервер и снова выполняем запрос указанный выше, теперь значение параметра sn должно быть таким как вы указали его в gosa. Если всё так и есть то репликация работает.
На этом настройка LDAP окончена.
4. Конфигурируем сервер на использование LDAP аутентификации
Устанавливаем необходимые пакеты
apt-get install libnss-ldap
На вопросы отвечаем следующим образом:
Should debconf manage LDAP configuration?: Yes LDAP server Uniform Resource Identifier: ldaps://«hostname -f вашего сервера» Distinguished name of the search base: dc=example,dc=com LDAP version to use: 3 Make local root Database admin: Yes Does the LDAP database require login? No LDAP account for root: cn=admin,dc=example,dc=com LDAP root account password: secret
Если в процессе ответов на вопросы вы ошиблись, исправить можно запустив переконфигурацию пакета ldap-auth-config командой
dpkg-reconfigure ldap-auth-config
Вносим изменения в аутентификацию на сервере
auth-client-config -t nss -p lac_ldap
Настраиваем pam аутентификацию, для этого выполняем
pam-auth-update
и активируем профили аутентификации LDAP и UNIX.
5. Конфигурируем samba
Устанавливаем необходимые пакеты
apt-get install samba samba-doc
Идём в /etc/samba и делаем копию дефолтного конфига
cp smb.conf smb.conf.orig
Ниже приведу конфиг моей самбы:
[global] server string = workgroup = EXAMPLE netbios name = bdc #================================================================================= passdb backend = ldapsam:ldap://localhost obey pam restrictions = no security = user encrypt passwords = true unix extensions = no #================================================================================= local master = yes os level = 250 domain master = no preferred master = yes time server = yes admin users = admins #================================================================================= log level = 1 log file = /var/log/samba/workstations/%m.log max log size = 50 #================================================================================= socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384 getwd cache = yes read raw = yes write raw = yes max xmit = 65536 wins support = yes wins proxy = yes dns proxy = no name resolve order = wins hosts bcast lmhosts wide links = yes hosts allow = 192.168. 127.0.0.1 127.0.1.1 hosts deny = 0.0.0.0/0 idmap uid = 10000-20000 idmap gid = 10000-20000 #================================================================================= logon script = %U.cmd logon path = ldap suffix = dc=example,dc=com ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ldap admin dn = cn=admin,dc=example,dc=com ldap ssl = start tls ldap passwd sync = yes ldap delete dn = no domain logons = yes invalid users = root load printers = no enhanced browsing = Yes remote announce = «IP PDC сервера»/EXAMPLE #================================================================================= [netlogon] comment = Network logon service path = /etc/samba/netlogon writable = yes browseable = no guest ok = yes #=========Шары описываем сами :)====================================================
Создаём необходимые каталоги, в моём случае это
mkdir /var/log/samba/workstations/ mkdir /etc/samba/netlogon/
Перезагружаем smbd
service smbd restart
Перезагружаем nmbd
service nmbd restart
Теперь samba необходимо указать пароль админа LDAP
smbpasswd -w secret
вместо secret поставьте ваш пароль.
Устанавливаем пароль админу samba такой же как на PDC
smbpasswd -a admins
Извлекаем SID домена EXAMPLE из главного контроллера домена
net rpc getsid
Добавляем BDC в домен EXAMPLE
net rpc join -S pdc -U admins%password (здесь «pdc» это netbios name главного контроллера домена)
Проверяем как работает samba для этого получим список групп в домене
net groupmap list
ответом должно быть
Domain Admins (S-1-5-21-2302747472-2920907650-383109413-512) -> Domain Admins Domain Users (S-1-5-21-2302747472-2920907650-383109413-513) -> Domain Users Domain Guests (S-1-5-21-2302747472-2920907650-383109413-514) -> Domain Guests Domain Computers (S-1-5-21-2302747472-2920907650-383109413-515) -> Domain Computers Administrators (S-1-5-32-544) -> Administrators Account Operators (S-1-5-32-548) -> Account Operators Print Operators (S-1-5-32-550) -> Print Operators Backup Operators (S-1-5-32-551) -> Backup Operators Replicators (S-1-5-32-552) -> Replicators ...И все остальные группы из LDAP...
Дадим группе Domain Admins права администратора домена для этого выполним следующее:
net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SeTakeOwnershipPrivilege \ SeBackupPrivilege SeRestorePrivilege SeRemoteShutdownPrivilege SePrintOperatorPrivilege \ SeAddUsersPrivilege SeDiskOperatorPrivilege -Uadmins%password
Ответом должно быть Successfully granted rights.
Всё настройка samba окончена.
6. Настраиваем PhpLdapAdmin.
Для просмотра содержимого резервного LDAP сервера будем использовать phpldapadmin (хочу отметить что именно для просмотра, все изменения необходимо производить на основном LDAP сервере).
В настройке phpldapadmin нет ничего сложного, итак приступим.
Заходим на сайт https://launchpad.net/ubuntu/+source/phpldapadmin/ и скачиваем последнюю версию phpldapadmin
wget https://launchpad.net/ubuntu/+archive/primary/+files/phpldapadmin_1.2.0.5-2ubuntu1_all.deb
Устанавливаем необходимые пакеты
apt-get install php5-ldap
Устанавливаем phpldapadmin
dpkg -i phpldapadmin_1.2.0.5-2ubuntu1_all.deb
Переходим в директорию /etc/phpldapadmin
cd /etc/phpldapadmin
Редактируем файл config.php, находим в нём следующие строки и меняем на свои
$servers->setValue('server','name','My LDAP Server'); # название вашего LDAP сервера $servers->setValue('server','base',array('dc=example,dc=com')); # база для подключения $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); # админ LDAP сервера
Перезагружаем apache
/etc/init.d/apache2 restart
Теперь можно заходить в phpldapadmin по адресу
http://«Ваш сервер»/phpldapadmin
Всё настройка законченна :)
Обсудить данную статью можно на форуме.
7. Перечень ссылок использованных при написании статьи:
https://help.ubuntu.com/10.04/serverguide/C/openldap-server.html#openldap-server-replication
http://www.lissyara.su/articles/freebsd/programms/samba+pdc+bdc+ldap/
http://www.server-world.info/en/note?os=Ubuntu_10.04&p=samba&f=6