Настройка elles-dns-dyndb с использованием конфигурационных файлов

Плагин elles-dns-dyndb конфигурируется с помощью следующих файлов:

  1. Файл конфигурации BIND 9 (named.conf или включаемый файл, например /app/inno-samba/bind-dns/named.conf), где описывается блок dyndb.

  2. Файл конфигурации «Эллес» (/app/inno-samba/etc/smb.conf), где настраиваются параметры сервиса dyndb_helper, отвечающего за проверку ACL и управление владельцами объектов (SOO).

Обратите внимание:

  • путь к библиотеке плагина должен указывать на установленный файл dyndb-elles.so;

  • пути к сокетам в named.conf и smb.conf должны строго совпадать;

  • права на файлы keytab и сокеты должны быть настроены так, чтобы процесс named имел доступ к чтению keytab и записи в сокеты.

Параметры блока dyndb в named.conf

Блок dyndb в конфигурации BIND 9 определяет параметры подключения к LDAP-бэкенду и аутентификации.

Список параметров

Параметр Описание

uri

Обязательно. URL LDAP-сервера. Пример: ldap://localhost или ldap://dc1.example.com. Для Kerberos-аутентификации требуется использовать FQDN, а не IP-адрес. Так как при подключении DNS-сервер еще недоступен, данный хост должен быть указан в /etc/hosts или выдаваться альтернативным DNS-сервером

auth_method

Метод аутентификации. Допустимые значения: none, simple, sasl. Значение по умолчанию: none. Для безопасной работы с «Эллес» рекомендуется sasl

bind_dn

DN (Distinguished Name) учетной записи для простой аутентификации. Используется только при auth_method "simple". Пример: CN=Administrator,CN=Users,DC=example,DC=com. Значение по умолчанию: пустая строка. У данной учетной записи должны быть полные права на доступ (как на чтение, так и на запись) ко всем объектам DNS всех партиций (DomainDNS, …​, ForestDNS, и кастомных DNS-партиций)

password

Пароль для простой аутентификации. Используется только при auth_method "simple". Значение по умолчанию: пустая строка

sasl_mech

Механизм SASL. Используется только при auth_method "sasl". Значение по умолчанию: GSSAPI

sasl_user

Имя пользователя (принципал) для SASL-аутентификации. Используется только при auth_method "sasl". Формат: username@REALM или SPN@REALM. Пример: dns-dc1@EXAMPLE.COM. Значение по умолчанию: пустая строка. У данной учетной записи должны быть полные права на доступ (как на чтение, так и на запись) ко всем объектам DNS всех партиций (DomainDNS, …​, ForestDNS, и кастомных DNS-партиций)

sasl_auth_name

Имя пользователя, используемое для SASL-аутентификации. Значение по умолчанию: пустая строка

sasl_password

Пароль, используемый для SASL-аутентификации. Значение по умолчанию: пустая строка

sasl_realm

Имя области (realm) SASL. Значение по умолчанию: пустая строка

krb5_keytab

Путь к keytab-файлу для Kerberos-аутентификации. Используется только при auth_method "sasl" и sasl_mech "GSSAPI". Формат: FILE:/path/to/keytab. Файл должен быть доступен для чтения пользователем bind. Значение по умолчанию: пустая строка

krb5_principal

Принципал Kerberos, используемый для SASL-аутентификации. Если не задан, то копируется из sasl_user. Принципал загружается из файла, указанного в опции krb5_keytab. Значение по умолчанию: пустая строка

ldap_hostname

Имя хоста LDAP-сервера. Если не указано, используется текущее имя хоста системы (/bin/hostname). Рекомендуется использовать параметр uri; данный параметр следует применять только в особых случаях, например, когда используется GSSAPI-аутентификация, а принципал Kerberos-сервиса named отличается от вывода /bin/hostname. Значение по умолчанию: пустая строка

ext_acl_sock_path

Путь к Unix-сокету для проверки ACL (Access Control List). Этот сокет используется плагином для отправки запросов к сервису dyndb_helper в «Эллес». Значение по умолчанию: пустая строка (функция отключена, если не задано)

ext_soo_sock_path

Путь к Unix-сокету для обработки запросов Set Object Owner (SOO). Используется для установки владельца DNS-объекта после успешного обновления. Значение по умолчанию: пустая строка

enable_ext_acl_sock

Флаг включения/отключения использования внешних сокетов для ACL. Значения: true, false. Значение по умолчанию: true. Если установлено false, параметры ext_acl_sock_path и ext_soo_sock_path игнорируются, и проверка прав выполняется напрямую через LDAP. Для зон с установленным параметром Secure Update обновления блокируются

default_ttl

TTL по умолчанию для DNS-записей, если он не указан в LDAP-объекте. Значение по умолчанию: 86400 (секунд)

connections

Максимальное количество одновременных соединений с LDAP-сервером. Значение по умолчанию: 10

reconnect_interval

Интервал повторных попыток подключения к LDAP при обрыве связи (в секундах). Значение по умолчанию: 60

ldap_page_size

Размер страницы при пагинации LDAP-запросов. Значение по умолчанию: 1000

timeout

Таймаут ожидания ответа от LDAP-сервера (в секундах). Значение по умолчанию: 10

sync_ptr

Включение синхронизации PTR-записей. Значения: true, false. Значение по умолчанию: false

dyn_update

Включение поддержки динамических обновлений DNS (GSS-TSIG). Значения: true, false. Значение по умолчанию: false. Для работы динамических обновлений через nsupdate должно быть true

verbose_checks

Вывод подробных логов при проверке ACL. Значения: true, false. Значение по умолчанию: false

directory

Рабочий каталог для плагина. Каталог должен быть доступен для записи пользователем bind, так как плагин создает подкаталоги для каждой зоны (временные файлы, дампы зон, журналы, ключи). Путь является относительным по отношению к параметру directory в секции options файла named.conf. Значение по умолчанию: dyndb-ldap/<имя_инстанса>

server_id

Идентификатор сервера. Плагин будет использовать только объекты конфигурации в LDAP, значение атрибута idnsServerId которых совпадает с этим параметром. Значение по умолчанию: пустая строка

Примеры конфигурации named.conf

Простая аутентификация (Simple Auth)

Для использования простой аутентификации необходимо указать auth_method "simple", а также параметры bind_dn и password:

dyndb "LDAP backend" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" {
    uri "ldap://server1.example.com";
    auth_method "simple";
    bind_dn "CN=Administrator,CN=Users,DC=example,DC=com";
    password "SecretPassword";
    ext_acl_sock_path "/tmp/dyndb_helper_acl.sock";
    ext_soo_sock_path "/tmp/dyndb_helper_soo.sock";
};

Для простой аутентификации в «Эллес» необходимо добавить следующую настройку в секцию [global] файла smb.conf:

[global]
    ...
    ldap server require strong auth = no
    ...

Аутентификация Kerberos (SASL/GSSAPI)

Для безопасной работы с «Эллес» рекомендуется использовать SASL-аутентификацию с механизмом GSSAPI:

dyndb "LDAP backend" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" {
    uri "ldap://dc1.example.com";
    auth_method "sasl";
    sasl_mech "GSSAPI";
    sasl_user "dns-HOSTNAME@REALM";
    krb5_keytab "FILE:/app/inno-samba/bind-dns/dns.keytab";
    ext_acl_sock_path "/tmp/dyndb_helper_acl.sock";
    ext_soo_sock_path "/tmp/dyndb_helper_soo.sock";
};

Параметры сервиса dyndb_helper в smb.conf

Сервис dyndb_helper работает как набор отдельных рабочих процессов внутри архитектуры «Эллес» и предоставляет сокеты для плагина BIND 9. Его параметры настраиваются в секции [global] файла smb.conf.

Список параметров

Параметр Описание

dyndb_helper:acl_socket_path

Путь к сокету для проверки ACL. Должен совпадать с ext_acl_sock_path в named.conf. Значение по умолчанию: /tmp/dyndb_helper_acl.sock

dyndb_helper:acl_socket_owner

Имя системного пользователя, которому принадлежит ACL-сокет. Обычно это пользователь, от имени которого запущен BIND 9 (например, bind). Значение по умолчанию: bind

dyndb_helper:soo_socket_path

Путь к сокету для обработки SOO-запросов. Должен совпадать с ext_soo_sock_path в named.conf. Значение по умолчанию: /tmp/dyndb_helper_soo.sock

dyndb_helper:soo_socket_owner

Имя системного пользователя, которому принадлежит SOO-сокет. Значение по умолчанию: bind

Количество рабочих процессов

По умолчанию в режиме prefork при старте «Эллес» для сервиса dyndb_helper запускается 4 рабочих процесса (определяется значением параметра prefork children), которые принимают и обслуживают соединения (запросы от BIND 9 и DynDB). При необходимости количество процессов может быть изменено с помощью параметра prefork children:dyndb_helper. В этом случае рекомендуется, чтобы количество рабочих процессов dyndb_helper не превышало количество рабочих процессов LDAP.

Время хранения записей в кэше

Сервис dyndb_helper использует кэш для сопоставления зон с DN, что позволяет оперативно восстанавливать DN объекта dnsNode по заданному доменному имени.

В текущей версии время хранения записей в кэше фиксировано и составляет 10 минут.

Пример конфигурации smb.conf

[global]
    ...
    # Включаем сервис dyndb_helper в список запущенных сервисов
    server services = +dyndb_helper

    # Настройка путей к сокетам
    dyndb_helper:acl_socket_path = /tmp/dyndb_helper_acl.sock
    dyndb_helper:soo_socket_path = /tmp/dyndb_helper_soo.sock

    # Настройка владельца сокетов (должен совпадать с пользователем bind)
    dyndb_helper:acl_socket_owner = bind
    dyndb_helper:soo_socket_owner = bind
    ...

Проверка и применение конфигурации

После изменения конфигурации выполните следующие шаги:

  1. Проверьте синтаксис named.conf:

    sudo named-checkconf
  2. Перезапустите службу «Эллес» для применения изменений в smb.conf и создания сокетов:

    sudo systemctl restart inno-samba.service
  3. Убедитесь, что сокеты созданы и имеют правильные права:

    ls -l /tmp/dyndb_helper_acl.sock
    ls -l /tmp/dyndb_helper_soo.sock
  4. Перезапустите службу BIND 9:

    sudo systemctl restart bind9.service
  5. Проверьте логи на наличие ошибок:

    sudo journalctl -u inno-samba | grep -i "dyndb_helper"
    sudo tail -f /var/log/syslog | grep -i dyndb

Обновлено: