Установка плагина для BIND 9 (пакет elles-dns-dyndb)
Плагин elles-dns-dyndb устанавливается на контроллере домена «Эллес» с развернутым DNS-сервером BIND 9.
Процесс установки включает шаги:
| В текущей версии «Эллес» плагин доступен только для ОС Astra Linux 1.8. |
Установка пакета
Установите пакет elles-dns-dyndb:
-
при установке из репозитория выполните:
sudo apt install elles-dns-dyndb -y
-
при установке из архива укажите путь к распакованным файлам и имя пакета; например:
cd /path/to/package sudo apt install ./elles-dns-dyndb_1.22.0_amd64.deb -y
Пакет автоматически устанавливает библиотеку dyndb-elles.so в /usr/lib/x86_64-linux-gnu/bind/ и создает необходимые файлы конфигурации.
После установки проверьте наличие библиотеки:
ls -l /usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so
Библиотека должна быть доступна для чтения процессом bind. Если файл отсутствует или имеет неверные права, установка завершена некорректно.
Настройка интеграции с BIND 9
При использовании DNS-бэкенда BIND9_AD при выполнении команд samba-tool domain join, provision или add (опция --dns-backend=BIND9_AD) автоматически генерируется файл /app/inno-samba/bind-dns/named.conf, содержащий готовую конфигурацию DynDB для BIND 9.8+.
Файл включает настройки для DNS-партиций DomainDnsZones и ForestDnsZones:
dyndb "domain" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" {
uri "ldap://localhost";
base "DC=DomainDnsZones,<base_dns>";
auth_method "sasl";
sasl_mech "GSSAPI";
sasl_user "dns-HOSTNAME@<REALM>";
krb5_keytab "FILE:/app/inno-samba/bind-dns/dns.keytab";
dyn_update yes;
ext_acl_sock_path "/tmp/bind9_ssu_acl.sock";
};
dyndb "forest" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" {
uri "ldap://localhost";
base "DC=ForestDnsZones,<base_dns>";
auth_method "sasl";
sasl_mech "GSSAPI";
sasl_user "dns-HOSTNAME@<REALM>";
krb5_keytab "FILE:/app/inno-samba/bind-dns/dns.keytab";
dyn_update yes;
ext_acl_sock_path "/tmp/bind9_ssu_acl.sock";
};
Следующие параметры подставляются при установке автоматически:
-
/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so— путь к библиотеке плагина; -
<base_dns>— корневой DN домена (например,DC=example,DC=com); -
dns-HOSTNAME@<REALM>— служебная учетная записьdns-HOSTNAME;Имя хоста (
HOSTNAME) и realm (REALM) берутся из конфигурации «Эллес». -
/app/inno-samba/bind-dns/dns.keytab— сгенерированный автоматически keytab-файл; -
/tmp/bind9_ssu_acl.sock— сокет для проверки ACL через сервисbind9_ssu_acl.Значение должно совпадать со значением соответствующего параметра в конфигурации «Эллес» в файле smb.conf.
Для включения этих настроек в основную конфигурацию BIND 9:
-
Добавьте в /etc/bind/named.conf строку:
include "/app/inno-samba/bind-dns/named.conf";
-
Убедитесь, что файл /app/inno-samba/bind-dns/named.conf существует и доступен для чтения процессом
bind:ls -l /app/inno-samba/bind-dns/named.conf
-
Проверьте права на keytab-файл:
ls -l /app/inno-samba/bind-dns/dns.keytab
Файл должен быть доступен только пользователю
bind(владелец:bind:bind, права:600).
Создание пользовательской служебной учетной записи для DynDB (альтернативный вариант)
По умолчанию при использовании опции --dns-backend=BIND9_AD создается служебная учетная запись dns-HOSTNAME. Однако при необходимости можно создать собственную учетную запись с произвольным именем и SPN. Для этого:
-
Создайте новую служебную учетную запись:
samba-tool user add dns-custom --random-password
-
Назначьте ей SPN в формате
DYNDB/<fqdn>:samba-tool spn add DYNDB/example.com dns-custom
-
Экспортируйте keytab-файл для этой учетной записи:
samba-tool domain exportkeytab /app/inno-samba/bind-dns/dns-custom.keytab --principal=DYNDB/example.com
-
Установите права на новый keytab-файл:
sudo chown bind:bind /app/inno-samba/bind-dns/dns-custom.keytab sudo chmod 600 /app/inno-samba/bind-dns/dns-custom.keytab
-
Обновите файл /app/inno-samba/bind-dns/named.conf, заменив
dns-HOSTNAME@<REALM>наDYNDB/example.com@<REALM>иdns.keytabнаdns-custom.keytab:dyndb "domain" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" { uri "ldap://localhost"; base "DC=DomainDnsZones,<base_dns>"; auth_method "sasl"; sasl_mech "GSSAPI"; sasl_user "DYNDB/example.com@EXAMPLE.COM"; krb5_keytab "FILE:/app/inno-samba/bind-dns/dns-custom.keytab"; dyn_update yes; ext_acl_sock_path "/tmp/bind9_ssu_acl.sock"; }; -
Проверьте аутентификацию Kerberos с новым keytab-файлом:
kinit -k -t /app/inno-samba/bind-dns/dns-custom.keytab DYNDB/example.com@EXAMPLE.COM klist
Возможные ошибки и способы их устранения:
| Текст ошибки | Действие |
|---|---|
|
В /etc/krb5.conf явно задайте адрес KDC. Пример: [libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = 10.10.10.10
admin_server = 10.10.10.10
default_domain = example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
|
|
Измените атрибут samba-tool user edit dns-custom Измените значение: userPrincipalName: DYNDB/example.com@EXAMPLE.COM Сохраните изменения и повторите проверку аутентификации |
Настройка сокета для проверки ACL
Плагин elles-dns-dyndb использует внешний сокет для проверки прав доступа к LDAP-объектам через сервис bind9_ssu_acl. Этот механизм включен по умолчанию и требует согласованной настройки на стороне BIND 9 и «Эллес».
Настройка на стороне BIND 9 (в файле /app/inno-samba/bind-dns/named.conf)
Параметр ext_acl_sock_path указывает путь к сокету, который должен быть идентичен пути, указанному в конфигурации «Эллес». По умолчанию:
ext_acl_sock_path "/tmp/bind9_ssu_acl.sock";
Если требуется изменить путь (например, на /var/run/bind9_ssu_acl.sock), добавьте его в значение параметра для всех партиций:
ext_acl_sock_path "/var/run/bind9_ssu_acl.sock";
Настройка на стороне «Эллес» (в файле /app/inno-samba/etc/smb.conf)
В конфигурации «Эллес» доступны параметры:
-
bind9_ssu_acl:server_socket_path— путь к сокету, который будет создан сервисомbind9_ssu_acl(по умолчанию:/tmp/bind9_ssu_acl.sock);Если в named.conf изменен путь по умолчанию, он должен быть указан в значении этого параметра.
-
bind9_ssu_acl:server_socket_owner— пользователь с правами доступа к сокету (по умолчанию:bind);Значение должно соответствовать имени системного пользователя, от имени которого запущен процесс
bind. Рекомендуется оставлять значение по умолчанию (bind), если не используется нестандартная конфигурация. -
bind9_ssu_acl:create_dns_node— включение автоматического создания A-записи в LDAP (по умолчанию:false).При значении
trueпараметр позволяет сервисуbind9_ssu_aclсоздавать DNS-объект (A-запись) в LDAP при успешной проверке ACL, если объект не существует.
Обязательным компонентом для работы механизма проверки ACL через сокет является сервис bind9_ssu_acl. Он не запускается автоматически и должен быть явно включен путем добавления в список в параметре server services.
Пример изменения значений параметров:
[global]
...
server services = metrics_manager, s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, ft_scanner, winbindd, ntp_signd, kcc, dnsupdate, dns, lacheck, disco, mt, core_manager, dbl, bind9_ssu_acl
...
bind9_ssu_acl:server_socket_path = /var/run/bind9_ssu_acl.sock
bind9_ssu_acl:server_socket_owner = new_owner
bind9_ssu_acl:create_dns_node = true
...
Отключение использования сокета для проверки ACL
Если требуется отключить внешнюю ACL-проверку (например, для тестирования или при проблемах с сокетом), укажите в конфигурации партиций в файле /app/inno-samba/bind-dns/named.conf:
enable_ext_acl_sock false;
В этом случае плагин будет выполнять проверку ACL непосредственно через LDAP-запросы к контроллеру домена.
Настройка пользовательской DNS-партиции (custom)
Для обработки пользовательской партиции добавьте в /app/inno-samba/bind-dns/named.conf блок dyndb для нее:
dyndb "custom" "/usr/lib/x86_64-linux-gnu/bind/dyndb-elles.so" {
uri "ldap://localhost";
base "DC=MyAppPartition,DC=example,DC=com";
auth_method "sasl";
sasl_mech "GSSAPI";
sasl_user "dns-HOSTNAME@<REALM>";
krb5_keytab "FILE:/app/inno-samba/bind-dns/dns.keytab";
dyn_update yes;
ext_acl_sock_path "/tmp/bind9_ssu_acl.sock";
};
Имя партиции в base должно соответствовать DN в LDAP (например, DC=MyAppPartition,DC=example,DC=com), а не FQDN.
|
Настройка динамических обновлений DNS (GSS-TSIG)
Для поддержки динамического обновления DNS-записей через nsupdate с аутентификацией GSS-TSIG должны быть выполнены следующие настройки:
-
Настроен сокет для проверки ACL на стороне BIND 9 (параметр
ext_acl_sock_pathв named.conf) и «Эллес» (параметрbind9_ssu_acl:server_socket_pathв smb.conf). -
В конфигурации «Эллес» в smb.conf включен сервис
bind9_ssu_acl—server services = … bind9_ssu_acl. -
В конфигурации «Эллес» в smb.conf включен параметр
bind9_ssu_acl:create_dns_node = true. -
В /etc/bind/named.conf.options присутствует параметр
tkey-gssapi-keytab, указывающий на keytab-файл с требуемыми для работы плагина ключами:options { ... tkey-gssapi-keytab "/app/inno-samba/bind-dns/dns.keytab"; ... };
Возможные корректировки конфигурации
В случае необходимости изменения конфигурации (например, при использовании удаленного контроллера домена или изменении пути к библиотеке) отредактируйте файл /app/inno-samba/bind-dns/named.conf вручную.
Изменение LDAP-URI на FQDN контроллера домена
По умолчанию используется ldap://localhost. Если DNS-сервер BIND 9 работает на другом узле, замените localhost на FQDN контроллера домена:
uri "ldap://dc1.example.com";
| Используйте доменное имя, а не IP-адрес. Kerberos не работает с IP-адресами. |
Изменение пути к библиотеке плагина
Если библиотека dyndb-elles.so установлена в нестандартный каталог, обновите путь:
dyndb "domain" "/opt/elles/bind/dyndb-elles.so" {
После изменения проверьте доступность файла:
ls -l /opt/elles/bind/dyndb-elles.so
Убедитесь, что файл доступен для чтения процессом bind.
Перезагрузка «Эллес»
Для применения изменений в конфигурации в «Эллес»:
-
Перезапустите службу
inno-samba:sudo systemctl restart inno-samba.service
-
Убедитесь, что служба запущена и сокет создан:
sudo systemctl status inno-samba.service ls -l /tmp/bind9_ssu_acl.sock
-
Проверьте логи «Эллес» на наличие ошибок инициализации:
sudo journalctl -u inno-samba | grep -i "bind9_ssu_acl"
Перезагрузка «Эллес» обязательна, так как сервис bind9_ssu_acl запускается как дочерний процесс от «Эллес». Без перезапуска изменения в smb.conf не будут применены, и BIND9 не сможет установить соединение с сокетом для проверки ACL.
|
Перезагрузка BIND 9
Перед перезапуском BIND 9 проверьте синтаксис конфигурации:
sudo named-checkconf
Если вывод пуст, конфигурация синтаксически корректна. Если возникают ошибки, исправьте их до продолжения.
Перезапустите службу bind9:
sudo systemctl restart bind9.service
Проверьте статус и логи:
sudo systemctl status bind9.service sudo tail -f /var/log/syslog | grep -i dyndb
Обновлено: