Установка Avanpost DS и PowerDNS на первый контроллер домена на Astra 1.8

ВАЖНО!

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

ВАЖНО!

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

ВАЖНО!

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

На всех PDNS серверах, в начале файла /etc/hosts должен быть указан [FQDN] сервера.

Шаблон /etc/hosts
127.0.0.1 [FQDN]
127.0.0.1 localhost
...
Пример заполненного /etc/hosts
127.0.0.1 ds01.avanpost.local
127.0.0.1 localhost
...

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

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

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

sudo apt update

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

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

Шаблон
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

В конфиге "/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

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

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

5.1. Открыть для редактирования файл "/etc/apt/sources.list.d/pdns.list":

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

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) сервера, на котором производится установка.

Пример заполненного файла /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.6.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. Опубликовать интерфейс системы на веб-сервере Nginx.

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

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

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

10.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;
    }
}

10.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

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

sudo systemctl enable --now nginx
sudo systemctl status nginx

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

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

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

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

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

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

192.168.1.11

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

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

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

Логин: Administrator

Пароль: Avanp0st

Шаг 12. Создать дополнительного доменного пользователя с правами администратора.

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

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

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

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

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

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

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

sudo systemctl stop pdns
sudo systemctl stop pdns-recursor

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

Внимание:

В случае, если автоматическое управление конфигурационными файлами PowerDNS недопустимо, необходимо настроить эти файлы вручную по инструкции: 4.4.1. Настройка конфигурационных файлов PowerDNS вручную, Шаг 2 и 3 текущей инструкции пропустить.

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

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

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

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

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

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

Внимание:

В случае, если автоматическое управление конфигурационными файлами PowerDNS недопустимо, необходимо настроить эти файлы вручную по инструкции: 4.4.1. Настройка конфигурационных файлов PowerDNS вручную. Шаг 2 и 3 текущей инструкции пропустить.

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

15.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

15.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

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

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

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

sudo nano /etc/krb5.conf

15.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. 

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

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

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

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

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

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

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

Примечание:

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

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

sudo systemctl restart ads.service

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

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

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

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

zone-cache-refresh-interval=0

19.3. Нажать .

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

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

Шаг 21. Создать DNS зону обратного просмотра.

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

21.1. В разделе "DNS" веб-интерфейса администратора Avanpost DS нажать кнопку  в верхней части экрана;

21.2. Заполнить поля в форме создания зоны:

ПолеЗначение
Идентификатор сетиАдрес сети для создаваемой обратной зоны в формате "AAA.BBB.CCC". Например, "192.168.1"
Основной сервер именIP или FQDN адрес основного DNS сервера. (Первого контроллера домена Avanpost DS)
Ответственное лицоЛогин администратора зоны
Refresh интервал (минуты)Время, отведённое под запрос данных от вторичного DNS-сервера к первичному. Если получен ответ, что Serial number изменён, сведения на вторичном сервере в обязательном порядке обновляются.
Retry интервал (минуты)Время, отведённое под обновление данных, если с первого раза этого не произошло.
ExpiresПромежуток времени, когда сведения о зоне могут применяться на вторичном сервере. Когда время заканчивается, но данные при этом не успевают обновиться, запросы по данной зоне перестают обрабатываться.
TTL по умолчаниюПромежуток времени, в рамках которого кэшируется информация, предназначенная для передачи через DNS-серверы.

21.3. Нажать.

Шаг 22. Добавить PTR записи для каждого контролера домена в DNS зону обратного просмотра.

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

22.1. В разделе "DNS" веб-интерфейса администратора Avanpost DS в строке созданной обратной зоны нажать → "Добавить запись PTR".

22.2. Заполнить поля в открывшейся форме:

ПолеЗначение
Имя хостаFQDN адрес контроллера домена. Например, "ds01.avanpost.local"

IP

IP адрес контроллера домена. Например, "192.168.1.11"

22.3. Нажать .

Шаг 23. Проверить 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]

Шаг 24. Проверить 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]

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

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

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


Обсуждение