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"