авг 022012
Для автоматического изменения паролей дополнительных сервисов (Kerberos, Samba и т.д.) была выбрана возможность протоколирования изменений дерева OpenLDAP через сокет.
Необходимо выполнить следующие шаги:
- Добавить в OpenLDAP модули (если у вас их еще нет) для протоколирования и использования в качестве базы скриптов:
ldapmodify -xWD cn=admin,cn=config << __EOF__
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: back_sock
-
add: olcModuleLoad
olcModuleLoad: accesslog
__EOF__
- Для того, чтобы разрешить openldap запускать комманды Kerberos, необходимо изменить группу и права
chgrp -R openldap /etc/krb5kdc/*
chgrp openldap /etc/krb5kdc/.*
chmod g+rwx /etc/krb5kdc
chmod g+rw /etc/krb5kdc/*
chmod g+rw /etc/krb5kdc/.*
в дальнейшем при необходимости запуска программ Kerberos вручную (например создание нового realm), это либо необходимо делать черезsudo -u openldap
, либо после выполнения необходимых дествий заново выполнить назначение группы и прав - Для обработки запросов будет использоваться perl:
aptitude install libnet-server-perl
- Скопировать в /opt скрипт: OpenLDAP AccessLog Application
- Создать файл
access_log.ldif
:
dn: olcDatabase=sock,cn=config
objectClass: olcDatabaseConfig
objectClass: olcDbSocketConfig
olcSuffix: cn=accesslog
olcDbSocketPath: /opt/olala.pldn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
выполнить команду
ldapadd -xWD cn=admin,cn=config -f access_log.ldif
- Внести изменения в /etc/init.d/slapd:
после строки
log_daemon_msg "Starting OpenLDAP" "slapd"
добавить строку
/usr/bin/perl /opt/olala.pl
после строк
log_daemon_msg "Stopping OpenLDAP" "slapd"
stop_slapd
добавить строку
ps ax|grep -v grep | grep olala.pl|awk '{print $1}'|xargs kill
Примечание: теоретически было бы лучше сделать отдельный сервис, от которого зависит slapd, возможно так будет сделано позже
- Перезапустить OpenLDAP:
/etc/init.d/slapd stop
/etc/init.d/slapd start