Avanpost DS : Руководство администратора

Руководство администратора

1.        ТРЕБОВАНИЯ К СИСТЕМЕ

1.1       Аппаратные требования

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

  • OS:64bit Linux, Kernel 4.x;
  • CPU:2 vCPU;
  • RAM:4 GB;
  • Disk: 16 GB свободного пространства (желательно использование SSD дисков).


Примечание. Рекомендованные аппаратные требования зависят от размера каталога, а также от интенсивности использования.


1.2       Требования к окружению

Перед выполнением развёртывания по текущей инструкции необходимо выполнение следующих условий:

  • В ОС должны быть установлены следующие программы:
  • openssl (программа управления сертификатами);
  • tar (программа архивирования);
  • sudo (программа выполнения команд от имени суперпользователя).

Пример для CentOS 8 Stream:

su -

dnf update

dnf install tmux openssl tar sudo xmlsec1 xmlsec1-openssl wget curl

  • Выполнена синхронизация времени в ОС с сервером синхронизации времени.
  • Настроенный сервис DNS. Для всех контроллеров домена и клиентов должны быть зарегистрированы A-записи в DNS-зоне, соответствующей создаваемому домену.


Установка и настройка указанных программ выходит за границы текущей инструкции и описана в справочных руководствах, идущих в комплекте с операционной системой Linux, на которой производится развёртывание.

2.        Развёртывание файлов дистрибутива из архива

Архив с дистрибутивом Avanpost DS необходимо развернуть на каждом сервере, который будет выполнять роль контроллера домена.

Для развёртывания файлов дистрибутива из архива необходимо:

  • Создать служебного пользователя ОС ads (параметр -m необходим для создания домашнего каталога) и добавить пользователю доступ к sudo:

sudo useradd -m ads

sudo passwd ads # необходимо задать пароль

sudo bash -c 'echo "ads ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/ads'

  • Создать каталог /opt/avanpost:

sudo mkdir -p /opt/avanpost/ads

sudo chown -R ads:ads /opt/avanpost

  • Переключиться на служебного пользователя DS и перейти в каталог /opt/avanpost:

sudo su - ads

cd /opt/avanpost/ads

  • В зависимости от расположения файла с архивом дистрибутива Системы, скопировать архив из исходного каталога (заменить в команде /source-path на правильный путь с расположением архива дистрибутива DS.Linux.v*.tar.gz) в целевой каталог:

cp /source-path/Avanpost.DS.Linux.v*.tar.gz /opt/avanpost/ads

cp /source-path/Avanpost.DS.Linux.Tools.v*.tar.gz /opt/avanpost/ads

  • Распаковать файлы дистрибутива из архива, находясь в том же каталоге:

tar -xvzf Avanpost.DS.Linux.v*.tar.gz

tar -xvzf Avanpost.DS.Linux.Tools.v*.tar.gz

  • После успешной распаковки удалить архив дистрибутива:

rm Avanpost.DS.Linux.*.tar.gz

rm Avanpost.DS.Linux.Tools.*.tar.gz

  • Скопировать базовый конфигурационный файл config.yaml в отдельную директорию:

mkdir /opt/avanpost/ads/config

cp -f config.yaml.sample config/config.yaml

3.        Настройка первого контроллера в домене

3.1       Конфигурационный файл

Дистрибутив содержит в себе основной конфигурационный файл, необходимый для работы серверной части, предварительно настроенный для выполнения базового развёртывания с помощью текущей инструкции.


При обновлении Системы необходимо использовать конфигурационный файл из дистрибутива, на который производится обновление.

3.2       Настройка конфигурационного файла для первого контроллера в домене

Для настройки конфигурационного файла для первого контроллера в домене необходимо:

  • Указать baseDN для нового домена:

baseDN: dc=example,dc=com

  • Указать порт для сервиса LDAP:

ldap:

  port: 38900

  • Указать порт и домен для сервиса Kerberos:

kerberos:

  realm: EXAMPLE.COM

  port: 8888


Примечание. Для работы с некоторыми дистрибутивами Linux необходимо использовать порт 88 для Kerberos. В этом случае помимо указания порта в конфигурационном файле необходимо выдать сервису DS разрешение на открытие порта, как описано в разделе «Разрешение открывать порты меньше 1024».

  • Указать порт и директорию для веб интерфейса администратора:

client:

  port: 8080

  client_path: /opt/avanpost/ads/client # путь до статики

  • Указать путь для создания базы данных каталога:

partition:

    path: /opt/avanpost/ads/data

  • Указать IP-адрес и имя контроллера домена для подсистемы репликации, установить флаг первого контроллера домена:

repl:

  host_addr: 10.10.0.10

  host_name: "dc01"

  single_host: true

  • Указать местоположение для базы данных журнала:

syslog:

  db: /opt/avanpost/ads/ds-log

  • Указать параметры подключения доменного клиента:

dscliserver:

  port: 7890

  host: 0.0.0.0

  hostname: "dc01.avanpost.test"

  cert: "server_localhost.crt"

  key: "server_localhost.key"


Примечание. Пример корректно настроенного файла конфигурации для первого контроллера домена см. в Приложении А.

3.3        Разрешение открывать порты меньше 1024

Если сервис использует привилегированные порты, например, для служб LDAP и Kerberos, их необходимо разрешить открывать сервису DS.

sudo setcap CAP_NET_BIND_SERVICE=+eip /opt/avanpost/ads/cmd/ads/ads

3.4       Регистрация системы в systemd и выполнение запуска

  • Создать конфигурационный файл сервиса на основе примера:

sudo vi /etc/systemd/system/ads.service

Пример:

[Unit]

Description=Avanpost Directory Service

 

[Service]

WorkingDirectory=/opt/avanpost/ads

ExecStart=/opt/avanpost/ads/cmd/ads/ads

Restart=always

RestartSec=10

SyslogIdentifier=ads

User=ads

Environment="CONFIG=/opt/avanpost/ads/config/config.yaml"

 

[Install]

WantedBy=multi-user.target

  • После создания добавить сервис в автозапуск и запустить его:

sudo systemctl daemon-reload

sudo systemctl --now enable ads

sudo systemctl status ads

3.5       Проверка установки

Для проверки установки необходимо:

  • Введите в браузере адрес сервера и при необходимости порт, например: http://dcexample.com:8080
  • Должна открыться страница аутентификации в административную консоль. Для входа в Систему использовать логин и пароль администратора по умолчанию:

Пользователь по умолчанию: Administrator

Пароль по умолчанию: Avanp0st

  • После ввода реквизитов УЗ пользователь должен получить доступ к административной консоли Системы.

4.        Настройка второго и последующих контроллеров домена

Второй и последующие контроллеры домена настраиваются аналогично первому, за исключением двух операций:

  • На этапе настройки файла конфигурации необходимо установить признак single_host: false , указывающий, что контроллер домена является не первым:

repl:

  host_addr: 10.10.0.11

  host_name: "dc02"

  single_host: false

  • На этапе настройки файла конфигурации установить уникальный суффикс для генерации uid и gid:

user_config:

  suffix: 389

  • После запуска сервиса Avanpost DS инициировать первичную репликацию и добавить новый контроллер домена в существующую топологию:

/opt/Avanpost/ads/cli/cli add-instance --host 10.10.0.11 --name dc02 --endpoint dc01.example.com:48910

  • Проверить работоспособность контроллера домена, как описано в разделе «Проверка установки».


Приложение А. Пример конфигурационного файла

Пример корректно настроенного файла конфигурации для первого контроллера домена:

default_entries:

admin:

  login: uid=admin,dc=system

  password: demo

baseDN: dc=example,dc=com

http:

  host: localhost

  port: 4008

ldap:

  port: 38900

  host: 0.0.0.0

kerberos:

  realm: EXAMPLE.COM

  port: 8888

  host: 0.0.0.0

client:

  port: 80

  host: localhost

  client_path: ../../client # путь до статики

  http_proxy_host: 0.0.0.0 # client ищет бэкенд на 0.0.0.0:HTTP_PORT

partition:

    path: ../../data # путь до каталога с БД

    id: data

    num_gorutines: 8  

normalization_interceptor:

  enabled: true

  interceptororder: 1

auth_interceptor:

  enabled: true

  interceptororder: 2

  allow_anonymous_access: true

  password_policy_enabled: true

  external_directory_services:  # экспорт пользователей из внешних служб каталогов, например 10.10.180.10:389

schema_interceptor:

  enabled: true 

  interceptororder: 3

event_interceptor:

  enabled: true

  interceptororder: 4

relations_interceptor:

  enabled: true

  interceptororder: 5

  related_atts:

    - [member, memberOf]

  entrieswithkeys: [posixAccount, posixGroup, groupOfNames, device] # классы объектов, к которым относятся kerberos-ключи

final_interceptor:

  enabled: true

  interceptororder: 100

password_policy:

  password_attribute: userPassword

  min_age: 0

  max_age: 0

  pwd_in_history: 0

  check_quality: NO_CHECK

  min_length: 0

  max_length: 0

  expire_warning: 0

  grace_auth_n_limit: 0

  grace_expire: 0

  lockout: false

  lockout_duration: 300

  max_failure: 0

  failure_count_interval: 0

  must_change: false

  allow_user_change: true

  safe_modify: false

  min_delay: 0

  max_delay: 0

  max_idle: 0

user_config:

  suffix: 389

  minuidnumber: 100000

  maxuidnumber: 200000

  mingidnumber: 50000

  maxgidnumber: 99999

ctl:

  port: 48910

  host: 0.0.0.0

repl:

  cluster: default

  host_addr: 0.0.0.0 # адрес, по которому остальные инстансы в топологии могут найти текущий инстанс

  host_name: "default1"

  internal_host: # "0.0.0.0"

  internal_port: 25489 # порт для общения между инстансами

  grpc_repl_interval_ms: 5

  replication_grpc_server_port: 41005

  initial_sync_backup_port: 48900 # порт для получения бэкапа при изначальной репликации

  single_host: true # является ли этот хост единственным в репликации; выставляется так же, если хост первый

internal_auth:

  auth_type: "none" # защита общения между инстансами

  srv_cert_path: "./cert/server-cert.pem"

  srv_key_path:  "./cert/server-key.pem"

  cl_cert_path:  "./cert/client-cert.pem"

  cl_key_path:   "./cert/client-key.pem"

  ca_cert_path:  "./cert/ca-cert.pem"

nats:

  consumer_name: #"default1"

  nats_addr: #"0.0.0.0:4444"

  fetch_n: 500

syslog:

  network:

  address:

  db: #../../ds-log # путь до БД журнала; если не указан, запись в БД не ведется

dscliserver:

  port: 7890

  host: 0.0.0.0

  hostname: "t15.lan"

  cert: "server_localhost.crt"

  key: "server_localhost.key"

Обсуждение