Aug 022012
 

Для автоматического изменения паролей дополнительных сервисов (Kerberos, Samba и т.д.) была выбрана возможность протоколирования изменений дерева OpenLDAP через сокет.

Необходимо выполнить следующие шаги:

  1. Добавить в 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__
  2. Для того, чтобы разрешить 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, либо после выполнения необходимых дествий заново выполнить назначение группы и прав
  3. Для обработки запросов будет использоваться perl:
    aptitude install libnet-server-perl
  4. Скопировать в /opt скрипт: OpenLDAP AccessLog Application
  5. Создать файл access_log.ldif:
    dn: olcDatabase=sock,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcDbSocketConfig
    olcSuffix: cn=accesslog
    olcDbSocketPath: /opt/olala.pl

    dn: 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

  6. Внести изменения в /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, возможно так будет сделано позже

  7. Перезапустить OpenLDAP:
    /etc/init.d/slapd stop
    /etc/init.d/slapd start

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)