Установка Avanpost DS на контроллер домена Astra 1.8

ВАЖНО!

Контроллеры в пределах одного домена должны быть развернуты на одинаковых ОС.

ВАЖНО!

У каждого контроллера должен быть статический ip адрес.
В качестве DNS сервера на каждом контроллере необходимо указать 127.0.0.1

ВАЖНО!

Установка серверной части Avanpost DS на ОС ASTRA с графической оболочкой FLY не поддерживается. При установке PowerDNS данная оболочка перестает работать и ломает ОС.

Для установки Avanpost DS Server на контроллер домена под управлением ОС Astra 1.8 и интеграции PowerDNS требуется выполнить шаги:

Для полноценной работы большинства функций в доменной сети требуется DNS сервер.
Avanpost DS выступает в качестве хранилища записей для DNS сервера PowerDNS и позволяет создавать записи в базе в том числе через веб-интерфейс администратора.

Шаг 1. Обновить список пакетов.

Для этого необходимо выполнить команду:

sudo apt update

Шаг 2. Задать имя сервера.

Для этого необходимо:

2.1. Выполнить команды по шаблону:

Шаблон
sudo hostnamectl set-hostname [FQDN]
sudo echo "127.0.0.1 [FQDN]" | sudo tee -a /etc/hosts

Заменить [FQDN] на желаемое полное доменное имя сервера (FQDN), на котором производится установка.

В примере задается hostname "ds01.avanpost.local".

Пример
sudo hostnamectl set-hostname ds01.avanpost.local
sudo echo "127.0.0.1 ds01.avanpost.local" | sudo tee -a /etc/hosts

2.2. В конфигурационном файле "/etc/hosts" указать в первой строке значение "127.0.0.1 [FQDN]".

Пример /etc/hosts
127.0.0.1 ds01.avanpost.local   #127.0.0.1 [FQDN]
#127.0.0.1 localhost
[::1] ds01.avanpost.local

Шаг 3. Добавить репозитории PowerDNS - version 5.2.X (stable).

Для этого необходимо:

3.1. Создать файл "/etc/apt/sources.list.d/pdns.list" и открыть его для редактирования.

sudo nano /etc/apt/sources.list.d/pdns.list

3.2. Добавить в файл "/etc/apt/sources.list.d/pdns.list" две записи о новых репозиториях.:

deb [signed-by=/etc/apt/keyrings/auth-49-pub.asc] http://repo.powerdns.com/debian bookworm-auth-49 main
deb [signed-by=/etc/apt/keyrings/rec-52-pub.asc] http://repo.powerdns.com/debian bookworm-rec-52 main

3.3. Создать файл "/etc/apt/preferences.d/auth-49" и открыть его для редактирования.

sudo nano /etc/apt/preferences.d/auth-49

3.4. Добавить в файл "/etc/apt/preferences.d/auth-49" строки:

Package: auth*
Pin: origin repo.powerdns.com
Pin-Priority: 600

3.5. Создать файл "/etc/apt/preferences.d/rec-52" и открыть его для редактирования.

sudo nano /etc/apt/preferences.d/rec-52

3.6. Добавить в файл "/etc/apt/preferences.d/rec-52" строки:

Package: rec*
Pin: origin repo.powerdns.com
Pin-Priority: 600

3.7. Выполнить команды для обновления списка пакетов:

sudo install -d /etc/apt/keyrings; curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo tee /etc/apt/keyrings/rec-52-pub.asc && \
sudo install -d /etc/apt/keyrings; curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo tee /etc/apt/keyrings/auth-49-pub.asc && \
sudo apt-get update

Шаг 4. Установить необходимые пакеты.

Для этого необходимо выполнить команды:

sudo apt update
sudo apt install nginx xmlsec1 libxmlsec1-openssl wget pdns-server pdns-backend-ldap pdns-recursor dnsutils krb5-user libsasl2-modules-gssapi-mit acl

Шаг 5. Настроить использование конфигурации старых версий PowerDNS.

В powerDNS начиная с версии 5.x используется конфигурационный файл в формате yaml. Что бы использовать конфигурационные файлы старых версий, необходимо в файл "/lib/systemd/system/pdns-recursor.service" добавить параметр запуска "--enable-old-settings" в блок "Service" → "ExecStart".
Для этого требуется:

5.1. Открыть для редактирования файл "/lib/systemd/system/pdns-recursor.service":

sudo nano /lib/systemd/system/pdns-recursor.service

5.2. Добавить параметр запуска "--enable-old-settings" в блок "Service" → "ExecStart":

/lib/systemd/system/pdns-recursor.service
# ...
[Service]
ExecStart=/usr/sbin/pdns_recursor --daemon=no --write-pid=no --disable-syslog --log-timestamp=no --enable-old-settings
# ...

5.3. Выполнить перезапуск systemd и перезапуск службы "pdns-recursor" с помощью команд:

sudo systemctl daemon-reload && \
sudo systemctl restart pdns-recursor

Шаг 6. Скачать и установить пакет Avanpost DS актуальной версии.

Для этого необходимо выполнить команды (в примере устанавливается версия 1.6.4-8):

wget https://packages.avanpost.ru/repository/ds-dists/master/packages/Avanpost.DS.Server.Linux-1.6.4-8.amd64.deb && \
sudo dpkg -i Avanpost.DS.Server.Linux-1.6.4-8.amd64.deb

Скачать пакет можно по ссылке: https://packages.avanpost.ru/#browse/browse:ds-dists:master

Шаг 7. Заполнить конфигурационный файл Avanpost DS.

Для этого необходимо:

7.1. Открыть для редактирования файл конфигурации Avanpost DS "/opt/avanpost/ads/config/config.yaml".

sudo nano /opt/avanpost/ads/config/config.yaml

7.2. Заполнить открывшийся файл по шаблону:

Шаблон /opt/avanpost/ads/config/config.yaml
baseDN: dc=[Домен2ур],dc=[Домен1ур]#имя корня домена в формате DN
host_ip_addr: [IP-АДРЕС] #адрес контроллера домена
host_name_fqdn: [FQDN] #полное доменное имя (FQDN) контроллера домена
 
# ldaps:
#   cert: #сертификат для использования сервером ldaps
#   key: #ключ сертификата для использования сервером ldaps

repl:
  single_host: true #для первого контроллера в домене устанавливается "true", для всех последующих - "false"

Заменить в строке 1 [Домен1ур] на свой домен первого уровня, а [Домен2ур] — на свой домен второго уровня.

Заменить в строкe 2 [IP-АДРЕС] на IP адрес сервера, где производится установка.

Заменить в строке 3 [FQDN] на полное доменное имя (FQDN) сервера, на котором производится установка.

В строке 10 необходимо установить значение:

  • true – в случае настройки первого контроллера домена;
  • false – в случае настройки второго и последующих контроллеров домена.
Пример заполненного файла /opt/avanpost/ads/config/config.yaml
baseDN: dc=avanpost,dc=local #имя корня домена в формате DN
host_ip_addr: 192.168.1.11 #адрес контроллера домена
host_name_fqdn: ds01.avanpost.local #полное доменное имя (FQDN) контроллера домена
 
# ldaps:
#   cert: #сертификат для использования сервером ldaps
#   key: #ключ сертификата для использования сервером ldaps

repl:
  single_host: true #для первого контроллера в домене устанавливается "true", для всех последующих - "false"

Примечание:

Подробнее о настройке конфигурационного файла Avanpost DS см. статью "4.3.1. Конфигурационный файл Avanpost DS "config.yaml"" руководства по развертыванию Avanpost DS.

Шаг 8. Установить права для пользователя ads на директорию "/opt/avanpost".

Для этого необходимо выполнить команду:

sudo chown -R ads:ads /opt/avanpost

Шаг 9. Запустить сервис "ads" и проверить его работу.

Для этого необходимо выполнить команды:

sudo systemctl enable --now ads
sudo systemctl status ads
Пример корректного вывода команды
[root@ds02 ~]# sudo systemctl status ads
● ads.service - Avanpost Directory Service
Loaded: loaded (/etc/systemd/system/ads.service; enabled; preset: disabled)
Active: active (running) since Wed 2025-01-29 11:03:58 MSK; 3s ago
Main PID: 10627 (ads)
Tasks: 6 (limit: 10673)
Memory: 47.8M
CPU: 252ms
CGroup: /system.slice/ads.service
└─10627 /opt/avanpost/ads/cmd/ads/ads

Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 License manager: Found 1 users, 19 objects
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 start KDC UDP listening: [::]:88
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 start KDC TCP listening: [::]:88
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 start chpw UDP listening: [::]:464
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 start chpw TCP listening: [::]:464
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 Listening LDAP on 0.0.0.0:389
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 Http listening on 0.0.0.0:4008
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 Listening LDAP on 0.0.0.0:636
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 Listening DSCliServer on 0.0.0.0:7890
Jan 29 11:03:58 ds02.avanpost.local ads[10627]: 2025/01/29 11:03:58 Client listening on 0.0.0.0:8080

Шаг 10. Запустить первичную репликацию и добавить новый контроллер домена в существующую топологию. (Только для вторичных контроллеров домена)

Внимание!

Данный шаг необходимо выполнять только при настройке второго и последующих контроллеров в домене.
При настройке первого контроллера данный шаг требуется пропустить.

Для этого необходимо выполнить команду, подставив свои значения в шаблон:

Шаблон команды
/opt/avanpost/tools/cli/cli add-instance --host [IP2] --name [FQDN2] --endpoint [IP1]:48910 --user [ADMIN_USER] --password [ADMIN_PASSWORD]

Заменить [ADMIN_USER] и [ADMIN_PASSWORD] на реквизиты учетной записи пользователя с правами добавления контроллеров, по умолчанию это Administrator:Avanp0st

Заменить [IP2] на IP-адрес нового контроллера.

Заменить [IP1] на IP-адрес первичного(основного) контроллера.

Заменить [FQDN2] на FQDN нового контроллера.

Пример команды
/opt/avanpost/tools/cli/cli add-instance --host 192.168.1.12 --name ds02.avanpost.local --endpoint 192.168.1.11:48910 --user Administrator --password Avanp0st

Шаг 11. Опубликовать интерфейс системы на веб-сервере Nginx.

Для этого необходимо:

11.1. Создать конфигурационный файл "ads.conf"

sudo nano /etc/nginx/conf.d/ads.conf

11.2. Открывшийся файл необходимо заполнить по шаблону:

Шаблон ads.conf
server {
    listen        80;
    server_name   [FQDN];
    location / {
        proxy_pass       http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Заменить в строке 3 [FQDN] на полное доменное имя (FQDN) сервера, на котором производится установка. (В примере: "ds01.avanpost.local")

Пример заполненного ads.conf
server {
    listen        80;
    server_name   ds01.avanpost.local;
    location / {
        proxy_pass       http://127.0.0.1:8080;
        proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

11.3. Проверить целостность конфигурации.

sudo nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful

11.4. Включить автоматический запуск и запустить сервис "nginx". Затем проверить, что он запущен.

sudo systemctl enable --now nginx
sudo systemctl status nginx

Шаг 12. Для проверки зайти в веб-интерфейс администратора Avanpost DS.

Для доступа к веб-интерфейсу администратора Avanpost DS необходимо в строке браузера ввести адрес:

http://[имя_контроллера_домена]

Например, http://ds01.avanpost.local

Должна открыться страница авторизации в административную консоль.

Так же можно войти в веб-интерфейс по IP адресу контроллера домена, например:

192.168.1.11

Веб-интерфейс работает на порте 8080

После ввода реквизитов учётной записи должна открыться административная консоль системы.

Для первого входа необходимо использовать учетные данные:

Логин: Administrator

Пароль: Avanp0st

Шаг 13. Создать дополнительного доменного пользователя с правами администратора. (Только для первичного контроллера домена)

Внимание!

Данный шаг необходимо выполнять только при настройке первого контроллера в домене.
При настройке второго и последующих контроллеров данный шаг требуется пропустить.

Для этого необходимо:

13.1. В разделе "Пользователи" веб-интерфейса администратора Avanpost DS нажать на кнопку добавления пользователя .

13.2. Заполнить все поля, нажать "Сохранить". 

13.3. Открыть карточку созданного пользователя, нажав на него в списке. Перейти на вкладку "Группы" и нажать кнопку "Добавить". 

13.4. В открывшемся окне выбрать группу "Administrators" и нажать "Добавить".

Шаг 14. Выключить сервисы "pdns" и "pdns-recursor".

Для этого необходимо выполнить команды:

sudo systemctl stop pdns
sudo systemctl stop pdns-recursor

Шаг 15. Включить автоматическое управление конфигурационными файлами PowerDNS.

Для этого необходимо:

15.1. Открыть для редактирования файл конфигурации Avanpost DS "/opt/avanpost/ads/config/config.yaml".

sudo nano /opt/avanpost/ads/config/config.yaml

15.2. Добавить строки в файл:

Строки для добавления
service_control:
  dns_control: true

Шаг 16. Настроить автоматическое управление конфигурационными файлами PowerDNS.

Для этого необходимо:

16.1. Создать и заполнить файл "/etc/sudoers.d/ads" для предоставления прав на управление сервисами "pdns", "pdns-recursor":

Создать файл /etc/sudoers.d/ads
sudo visudo /etc/sudoers.d/ads

Добавить в файл строки:

/etc/sudoers.d/ads
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl start ads.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl start pdns.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl start pdns-recursor.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop ads.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop pdns.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl stop pdns-recursor.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart ads.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart pdns.service
ads ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart pdns-recursor.service
ads ALL=(ALL) NOPASSWD: /opt/avanpost/tools/dscli/dscli joindc *

16.2. Проверить, что файл /etc/sudoers.d/ads не имеет ошибок и имеет правильные права, с помощью команды:

sudo visudo -c
Вывод команды без ошибок
#/etc/sudoers: parsed OK
#/etc/sudoers.d/ads: parsed OK

Примечание:

Если в выводе команды ошибка вида "/etc/sudoers.d/ads: is mode xxxx, should be 0440", значит на /etc/sudoers.d/ads выданы неправильные права.

Вывод visudo -c с ошибкой
/etc/sudoers: parsed OK                            #успешно обработан
/etc/sudoers.d/ads: is mode 0662, should be 0440   #некорректные права доступа, должны быть 0440

В таком случае требуется установить верные права с помощью команды:

sudo chmod 440 /etc/sudoers.d/ads

16.3. Сделать резервную копию файла "/etc/krb5.conf", выполнив команду:

sudo mv /etc/krb5.conf /etc/krb5.conf.old

16.4. Создать новый файл "/etc/krb5.conf":

sudo nano /etc/krb5.conf

16.5. Заполнить файл "/etc/krb5.conf" по шаблону:

Шаблон /etc/krb5.conf
[libdefaults]
default_realm = [ДОМЕН2УР].[ДОМЕН1УР]
dns_lookup_realm = false
dns_lookup_kdc = false
dns_canonicalize_hostname = true

[realms]
[ДОМЕН2УР].[ДОМЕН1УР] = {
kdc = 127.0.0.1
default_domain = [Домен2ур].[Домен1ур]
}

[domain_realm]
.[Домен2ур].[Домен1ур] = [ДОМЕН2УР].[ДОМЕН1УР]
[Домен2ур].[Домен1ур] = [ДОМЕН2УР].[ДОМЕН1УР]

Заменить в строках 2, 14, 15 [ДОМЕН1УР] на свой домен первого уровня строго заглавными буквами, а [ДОМЕН2УР] — на свой домен второго уровня строго заглавными буквами.

Заменить в строках 10, 14, 15 [Домен1ур] на свой домен первого уровня строго строчными буквами, а [Домен2ур] — на свой домен второго уровня строго строчными буквами.

Пример /etc/krb5.conf
[libdefaults]
default_realm = AVANPOST.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
dns_canonicalize_hostname = true

[realms]
AVANPOST.LOCAL = {
kdc = 127.0.0.1
default_domain = avanpost.local
}

[domain_realm]
.avanpost.local = AVANPOST.LOCAL
avanpost.local = AVANPOST.LOCAL

Внимание:

При загрузке Avanpost DS будет проверять конфигурационные файлы PowerDNS. Если были внесены какие-либо изменения вручную, то конфигурационные файлы будут восстановлены. По этому дальнейшее редактирование конфигов pdns.conf recursor.conf следует выполнять из web интерфейса Avanpost DS. 

Шаг 17. Выдать ACL разрешения на директории PowerDNS.

Для этого необходимо выполнить команды:

sudo setfacl -R -m u:ads:rwx /etc/powerdns
sudo mkdir -p /var/lib/pdns
sudo chown pdns:pdns /var/lib/pdns

Шаг 18. Включить и запустить сервисы "pdns", "pdns-recursor".

Для этого необходимо выполнить команды:

sudo systemctl enable --now pdns
sudo systemctl enable --now pdns-recursor

Шаг 19. Перезапустить сервис "ads".

Примечание:

Перезапуск сервиса ads требуется для автоматического создания DNS записи. 

Для этого необходимо выполнить команду:

sudo systemctl restart ads.service

Шаг 20. Добавить параметр сервера PowerDNS в конфигурацию.

(при условии, что включена автоматическая настройка конфигурации pdns)Для этого необходимо:

20.1. Нажать  в разделе "DNS" веб-интерфейса Avanpost DS.

20.2. В открывшемся окне добавить в конец поля "Настройки авторитативного DNS сервера (pdns.conf)" строку:

zone-cache-refresh-interval=0

20.3. Нажать .

Шаг 21. Проверить, что DNS зона создана.

Для этого необходимо в разделе "DNS" веб-интерфейса администратора Avanpost DS проверить наличие зоны.

Шаг 22. Проверить DNS записи зоны прямого просмотра.

Для этого необходимо выполнить команду по шаблону, подставив свои значения:

Шаблон команды
dig srv _ldap._tcp.[Домен2ур].[Домен1ур]

Заменить [Домен1ур] на свой домен первого уровня.

Заменить [Домен2ур] на свой домен второго уровня.

Пример команды
dig srv _ldap._tcp.avanpost.local

В выводе команд обязательно должны быть записи типа "SRV".

Пример вывода команды
dig srv _ldap._tcp.avanpost.local
;; ANSWER SECTION:
_ldap._tcp.avanpost.local. 1500    IN      SRV     0 0 389 ds01.avanpost.local.
_ldap._tcp.avanpost.local. 1500    IN      SRV     0 0 389 ds02.avanpost.local.

Можно проверить работу сервисов "pdns" и "pdns-recursor" с помощью команд:

dig srv _ldap._tcp.avanpost.local -p 5300   #[pdns]
dig srv _ldap._tcp.avanpost.local -p 53     #[pdns-recursor]

Шаг 23. Проверить DNS записи зоны обратного просмотра.

 Для этого необходимо выполнить команду по шаблону, подставив свои значения:

Шаблон команды
dig -x [IP PDNS сервера]

Заменить [IP PDNS сервера] на IP адрес контроллера домена.

Пример команды
dig -x 192.168.1.11

Можно проверить работу сервисов "pdns" и "pdns-recursor" с помощью команд:

dig -x 192.168.1.11 -p 5300    #[pdns]
dig -x 192.168.1.11 -p 53      #[pdns-recursor]

Шаг 24. Добавить директории Avanpost DS в исключения антивируса.

Если на контроллере домена используется антивирус, то для обеспечения корректной работы и быстродействия Avanpost DS требуется добавить в исключения директории, содержащие БД и логи:

  • /opt/avanpost/ads/data
  • /opt/avanpost/ads/ds-logs

После выполнения всех шагов развертывание Avanpost DS на контроллере завершено.

Можно переходить к разворачиванию Avanpost DS на следующем контроллере или к Этапу 2 "Интеграция Avanpost DS с прикладными системами".

Обсуждение