Настройка сервера ADWS elles-ws с использованием конфигурационного файла

При необходимости изменения конфигурации elles-ws отредактируйте файл /opt/elles-ws/etc/default/elles-ws на хосте контроллера домена «Эллес» и выполните перезапуск сервиса:

sudo systemctl restart elles-ws.service

При создании или редактировании файла /opt/elles-ws/etc/default/elles-ws учитывайте следующее:

  • все параметры задаются в формате переменных окружения Bash;

  • keytab-файл (/etc/elles-ws/elws.keytab) должен иметь права доступа 0400 и принадлежать пользователю root;

  • при использовании ELWS_LDAP_AUTH=gssapi параметр ELWS_LDAP_BIND_PASSWORD должен быть закомментирован или удален;

  • ELWS_LDAP_GSSAPI_SERVICE — это целевой SPN для GSSAPI bind; должен совпадать с FQDN контроллера домена (формат: ldap/<DC_FQDN>);

  • ELWS_IMPERSONATE=ldap требует ELWS_CALLER_ACL=enforce;

  • после установки пакета значение ELWS_IMPERSONATE=off  — безопасный режим по умолчанию; для полной совместимости с RSAT установите `ELWS_IMPERSONATE=ldap.

Формат /opt/elles-ws/etc/default/elles-ws

ELWS_LISTEN=0.0.0.0:9389
ELWS_LDAP_URL=ldap://127.0.0.1:389
# Plaintext password
ELWS_LDAP_AUTH=simple
ELWS_LDAP_BIND_DN=Administrator@YOUR-REALM.LAN
ELWS_LDAP_BIND_PASSWORD=CHANGEME
# No plaintext password:
# ELWS_LDAP_AUTH=gssapi
# ELWS_LDAP_BIND_DN=svc-elws@YOUR-REALM.LAN
# ELWS_KRB5_PRINCIPAL=svc-elws@YOUR-REALM.LAN
# ELWS_LDAP_KEYTAB=/etc/elles-ws/elws.keytab
# ELWS_LDAP_GSSAPI_SERVICE=ldap/FQDN-OF-THIS-DC
# ELWS_KRB5_CONFIG=/etc/krb5.conf
ELWS_SMB_CONF=/app/inno-samba/etc/smb.conf
ELWS_SAM_LDB=/app/inno-samba/private/sam.ldb
ELWS_GENSEC_PY_PATH=/opt/elles-ws/usr/lib/elles-ws/py
# Пул gensec-worker: одновременные RSAT-сессии к :9389
# 4 CPU / 8 GB → 4; при "pool wait" в journalctl — увеличить (+2), не выше ~ядер/RAM
ELWS_GENSEC_POOL_SIZE=4
# F8 caller ACL: off | audit | enforce
ELWS_CALLER_ACL=enforce
# F8b impersonation: off | sd | ldap (ldap requires ELWS_CALLER_ACL=enforce)
ELWS_IMPERSONATE=off
# Health HTTP: JSON /health и HTML / (auto-refresh). Только localhost по умолчанию.
ELWS_HEALTH=127.0.0.1:9089
ELWS_LOG=info
ELWS_AUDIT_LOG=true
ELWS_PPROF=127.0.0.1:6060

# LDAPS/StartTLS: true for self-signed Samba lab certs; set false with a real CA
ELWS_LDAP_TLS_INSECURE=true

Параметры конфигурации

Конфигурация состоит из переменных окружения, используемых запускающим скриптом /opt/elles-ws/usr/bin/elles-ws.

Переменная Назначение

ELWS_LISTEN

TCP-адрес и порт, на котором принимает подключения сервер ADWS

ELWS_LDAP_URL

URL LDAP-сервера «Эллес»

ELWS_LDAP_AUTH

Метод аутентификации LDAP (simple или gssapi)

ELWS_LDAP_BIND_DN

UPN для аутентификации в LDAP

ELWS_LDAP_BIND_PASSWORD

Пароль для простой аутентификации (не используется при gssapi)

ELWS_KRB5_PRINCIPAL

Учетная запись для Kerberos-аутентификации для GSSAPI (должен совпадать с ELWS_LDAP_BIND_DN)

ELWS_LDAP_KEYTAB

Путь к keytab-файлу для GSSAPI-аутентификации

ELWS_LDAP_GSSAPI_SERVICE

SPN для GSSAPI bind (формат: ldap/<DC_FQDN>)

ELWS_KRB5_CONFIG

Путь к файлу krb5.conf для клиента Kerberos

ELWS_SMB_CONF

Путь к файлу smb.conf «Эллес» (для чтения параметров домена)

ELWS_SAM_LDB

Путь к базе данных «Эллес» sam.ldb

ELWS_GENSEC_PY_PATH

Путь к Python-модулям gensec (для sidecars)

ELWS_GENSEC_POOL_SIZE

Размер пула gensec-worker (количество одновременных сессий)

ELWS_LOG

Уровень логирования сервера

ELWS_AUDIT_LOG

Включить аудит операций в systemd journal

ELWS_PPROF

Адрес и порт для HTTP-pprof (профилирование)

ELWS_CALLER_ACL

Политика контроля доступа для операций записи

ELWS_IMPERSONATE

Режим делегирования операций записи (off, sd, ldap)

ELWS_HEALTH

Хост и порт для проверки состояния сервера через HTTP-запросы (/health, /info)

ELWS_LDAP_TLS_INSECURE

Включает небезопасный режим TLS для LDAP-соединений

ELWS_LISTEN

Обязательно. TCP-адрес и порт, на котором принимает подключения сервер ADWS.

Формат: IP:PORT.

Значение по умолчанию: 0.0.0.0:9389

Для RSAT обязательно 0.0.0.0:9389.

ELWS_LDAP_URL

Обязательно. URL LDAP-сервера «Эллес».

Значение по умолчанию: ldap://127.0.0.1:389

Должен указывать на локальный LDAP-сервер «Эллес». Убедитесь, что порт 389 слушает 127.0.0.1 (проверьте ss -tuln | grep ':389').

ELWS_LDAP_AUTH

Обязательно. Метод аутентификации LDAP.

Допустимые значения:

  • simple — аутентификация по UPN и паролю (только для тестирования);

  • gssapi — аутентификация через Kerberos.

При gssapi параметр ELWS_LDAP_BIND_PASSWORD должен быть закомментирован или удален.

ELWS_LDAP_BIND_DN

Обязательно. UPN для аутентификации в LDAP.

Ожидаемые значения:

  • при ELWS_LDAP_AUTH=simple — UPN администратора (например, Administrator@EXAMPLE.COM);

  • при ELWS_LDAP_AUTH=gssapi — UPN служебной учетной записи svc-elws.

Должен совпадать с ELWS_KRB5_PRINCIPAL при gssapi.

ELWS_LDAP_BIND_PASSWORD

Пароль для простой аутентификации (simple bind).

Используется только при ELWS_LDAP_AUTH=simple.

Не использовать при ELWS_LDAP_AUTH=gssapi.

Рекомендуется использовать gssapi и keytab вместо plaintext password.

ELWS_KRB5_PRINCIPAL

Обязательно при gssapi. Субъект безопасности Kerberos для GSSAPI-аутентификации.

Должен совпадать с ELWS_LDAP_BIND_DN.

Пример: svc-elws@EXAMPLE.COM.

ELWS_LDAP_KEYTAB

Обязательно при gssapi. Путь к keytab-файлу для GSSAPI-аутентификации.

Значение по умолчанию: /etc/elles-ws/elws.keytab.

Файл должен быть создан скриптом /opt/elles-ws/usr/lib/elles-ws/setup-svc-elws-keytab.sh.

Права: 0400; владелец: root:root.

ELWS_LDAP_GSSAPI_SERVICE

Обязательно при gssapi. SPN для GSSAPI bind.

Формат: ldap/<DC_FQDN> (например, ldap/dc1.example.com).

Это целевой сервис, который сервер использует при GSSAPI bind к LDAP. Он должен совпадать с FQDN контроллера домена.

Не использовать IP-адрес — только FQDN.

ELWS_KRB5_CONFIG

Путь к файлу krb5.conf для клиента Kerberos.

Значение по умолчанию: /etc/krb5.conf.

Используется для настройки DNS-разрешения KDC и Realm.

ELWS_SMB_CONF

Обязательно. Путь к файлу smb.conf, используемому «Эллес».

Значение по умолчанию: /app/inno-samba/etc/smb.conf.

Используется для определения Realm, NetBIOS-имени и других параметров домена.

ELWS_SAM_LDB

Обязательно. Путь к базе данных «Эллес» sam.ldb.

Значение по умолчанию: /app/inno-samba/private/sam.ldb.

Используется sidecar-процессами для прямого доступа к данным домена.

ELWS_GENSEC_PY_PATH

Обязательно. Путь к Python-модулям gensec (для sidecars).

Значение по умолчанию: /opt/elles-ws/usr/lib/elles-ws/py.

Должен содержать модули gensecauth.py, spnego.py, nns.py, errors.py, topology.py, samba_session.py.

ELWS_GENSEC_POOL_SIZE

Обязательно. Размер пула gensec-worker (количество одновременных сессий).

Значение по умолчанию: 4.

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

При ELWS_GENSEC_POOL_SIZE=4 и высокой нагрузке в логах появляется gensec worker pool wait — увеличьте до 6 или 8.

Не устанавливайте выше числа ядер CPU.

ELWS_LOG

Обязательно. Уровень логирования сервера.

Допустимые значения:

  • debug — максимальная детализация (включая все LDAP-запросы и GSSAPI-токены);

  • info — основные события (по умолчанию);

  • warn — только предупреждения;

  • error — только ошибки.

Логи выводятся в journalctl -u elles-ws.

ELWS_AUDIT_LOG

Обязательно. Включить аудит операций в systemd journal.

Значение: true или false.

При true в логах появляются записи с audit_class=dsdb_audit, auth_audit, dsdb_password_audit для отслеживания изменений объектов и аутентификации.

ELWS_PPROF

Адрес и порт для HTTP-pprof (профилирование).

Значение по умолчанию: 127.0.0.1:6060.

Используется для диагностики производительности (CPU, memory, goroutines).

Доступ: curl http://127.0.0.1:6060/debug/pprof/

ELWS_CALLER_ACL

Обязательно. Политика контроля доступа для операций записи.

Допустимые значения:

  • off — все записи разрешены без проверки;

  • audit — логирует попытки записи без RSAT identity;

  • enforce — отклоняет все записи без RSAT identity (рекомендуется).

Требуется enforce для ELWS_IMPERSONATE=ldap.

ELWS_IMPERSONATE

Обязательно. Режим делегирования операций записи.

Допустимые значения:

  • off — все операции записи выполняются от имени svc-elws;

  • sd — делегирование только для чтения nTSecurityDescriptor и sDRightsEffective;

  • ldap — делегирование всех операций записи от имени RSAT-клиента.

Требует ELWS_CALLER_ACL=enforce.

После установки пакета значение по умолчанию — off. Для полной совместимости с RSAT установите ELWS_IMPERSONATE=ldap.

ELWS_HEALTH

Обязательно. Хост и порт для проверки состояния сервера через HTTP-запросы (/health, /info).

Значение по умолчанию: 127.0.0.1:9089.

Должен быть доступен только с localhost.

Конечные точки:

  • http://127.0.0.1:9089/health — JSON: {"ok":true}

  • http://127.0.0.1:9089/info — JSON: capabilities, sidecars, features;

  • http://127.0.0.1:9089/ — HTML-страница со ссылками.

ELWS_LDAP_TLS_INSECURE

Включает небезопасный режим TLS для LDAP-соединений с «Эллес».

Значение по умолчанию: true.

Используется только в тестовых средах с самоподписанными сертификатами.

Для штатной эксплуатации с реальным CA (например, корпоративным или публичным удостоверяющим центром) установите значение false, чтобы включить строгую проверку цепочки доверия и имя хоста в сертификате.

При false сервер требует, чтобы сертификат «Эллес»:

  • был подписан доверенным CA;

  • содержал FQDN контроллера домена;

  • не был просрочен.

Обновлено: