Конфигурация
Конфигурация — файл /etc/sspr/config.yaml в формате YAML. Пример со всеми разделами
ставится вместе с пакетом: /usr/share/doc/sspr/config.example.yaml. Изменения
применяются после перезапуска службы: systemctl restart sspr.
Оформление, напоминания, словарь, защита от перебора и настройки восстановления задаются в интерфейсе администратора и применяются сразу; в конфигурации для них остаются только каталоги хранения.
Длительности записываются с единицей: 30s, 15m, 1h. Пустое значение по
умолчанию означает, что параметр не задан.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
listen | строка | 127.0.0.1:8080 | Адрес и порт, на которых портал принимает запросы от терминатора TLS. |
trusted_proxies | список | — | Сети терминатора TLS или балансировщика перед порталом. Только от этих адресов принимается заголовок X-Forwarded-For с адресом сотрудника. Пусто — адресом клиента считается адрес прямого подключения. |
Внешние страницы, которые видят сотрудники.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
web.brand_name | строка | Active Directory | Название каталога в текстах портала, например «Ромашка» в «учётная запись Ромашка». |
web.support_url | строка | — | Ссылка на ИТ-поддержку в подвале портала и в уведомлениях. Пусто — ссылки нет. |
web.public_url | строка | — | Адрес портала, как его видит сотрудник, например https://pass.corp.ru. Используется в ссылках из напоминаний и для ключей безопасности (FIDO2). |
web.secure_cookies | да/нет | true | Cookie только по HTTPS. Выключать только на тестовом стенде без TLS. |
web.password.min_length | число | 12 | Минимальная длина нового пароля. |
web.password.require_upper | да/нет | true | Требовать заглавную букву. |
web.password.require_lower | да/нет | true | Требовать строчную букву. |
web.password.require_digit | да/нет | true | Требовать цифру. |
web.password.require_special | да/нет | true | Требовать специальный символ. |
web.password.deny_contains_login | да/нет | true | Запрещать пароль, содержащий логин. |
web.theme.name | строка | dusk | Тема портала: strict («Строгий»), vista («Пейзаж»), dusk («Сумерки») или focus («Фокус»). Тема, выбранная в интерфейсе администратора, важнее этого значения. |
web.theme.accent | строка | — | Акцентный цвет: имя пресета (grafit, petrol, sumerki, hvoya, kobalt, ultramarin, indigo, morskoy, stal, sliva) или свой цвет в формате #rrggbb. Пусто — цвет темы. |
web.theme.dir | строка | /var/lib/sspr/theme | Каталог для оформления, заданного в интерфейсе администратора: тема, цвет, логотип, фото. |
Интерфейс администратора
Заголовок раздела «Интерфейс администратора»Журнал событий, управление вторым фактором, разблокировка, оформление и настройки. Слушает отдельный адрес и по умолчанию выключен: публиковать его наружу не нужно.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
admin.listen | строка | — | Адрес интерфейса администратора, например 127.0.0.1:8081. Пусто — интерфейс выключен. |
admin.group_dn | строка | — | Группа каталога, участники которой — администраторы портала. Вложенные группы учитываются. Нужна group_dn или users. |
admin.users | список | — | Логины администраторов. Дополняет group_dn, если группа задана. |
admin.session_ttl | длительность | 15m | Сколько длится сеанс администратора без действий. |
Наблюдаемость
Заголовок раздела «Наблюдаемость»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
observability.metrics_listen | строка | 127.0.0.1:9090 | Адрес метрик в формате Prometheus (GET /metrics). Не публикуйте его наружу. |
observability.log_level | строка | info | Подробность журнала работы: debug, info, warn или error. |
observability.log_format | строка | json | Формат журнала работы: json или text. |
Лицензия
Заголовок раздела «Лицензия»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
license.key_file | строка | — | Файл лицензионного ключа. Ключ, установленный в интерфейсе администратора, записывается сюда, поэтому файл должен быть доступен службе на запись. Пусто — ознакомительный режим. |
license.public_key | строка | — | Открытый ключ издателя лицензий. Пусто — встроенный в продукт; менять не требуется. |
Журнал аудита
Заголовок раздела «Журнал аудита»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
audit.file | строка | /var/log/sspr/audit.jsonl | Файл журнала аудита. Записи сцеплены хэшами, целостность проверяет команда sspr audit verify. Не подключайте к файлу внешний logrotate: ротацию ведёт продукт. |
audit.syslog | строка | — | Копия журнала во внешнюю систему сбора (SIEM) по RFC 5424: tcp://siem:514, udp://siem:514 или siem:514 (TCP). Недоступность приёмника не мешает работе портала. |
audit.rotate_mb | число | 64 | Размер файла журнала в МБ, после которого начинается новый файл. -1 — без ротации. |
audit.keep_files | число | 0 | Сколько закрытых файлов журнала хранить. 0 — все. |
Уведомления сотрудникам
Заголовок раздела «Уведомления сотрудникам»Письмо или СМС сотруднику о смене пароля, восстановлении доступа и снятии блокировки. Если действие выполнил не он, сотрудник узнает об этом сразу. В текстах доступны подстановки {name}, {login}, {event}, {time}, {ip}, {support}.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
notice.enabled | да/нет | true | Отправлять уведомления. |
notice.email | да/нет | true | Уведомлять письмом на адрес из каталога. Требует smtp. |
notice.sms | да/нет | false | Уведомлять СМС. Каждое уведомление — платное сообщение через шлюз заказчика. |
notice.subject | строка | — | Тема письма. Пусто — встроенный текст. |
notice.body | строка | — | Текст письма. Пусто — встроенный текст. |
notice.sms_text | строка | — | Текст СМС. Пусто — встроенный текст. |
Почтовый сервер заказчика для кодов подтверждения, напоминаний и уведомлений. Оформление писем задаётся в интерфейсе администратора на странице «Почта».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
smtp.host | строка | — | Адрес почтового сервера в виде host:port. Пусто — почта выключена, код на почту и почтовые напоминания недоступны. |
smtp.from | строка | — | Адрес отправителя. |
smtp.username | строка | — | Имя для входа на почтовый сервер. Пусто — без авторизации. |
smtp.password | строка | — | Пароль для входа на почтовый сервер. |
smtp.starttls | да/нет | false | Шифровать соединение (STARTTLS). Выключать только для внутреннего релея без TLS. |
smtp.insecure_skip_verify | да/нет | false | Не проверять сертификат почтового сервера. Только для тестового стенда. |
Напоминания
Заголовок раздела «Напоминания»Что, кому и когда напоминать, задаётся в интерфейсе администратора на странице «Напоминания».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
remind.dir | строка | /var/lib/sspr/remind | Каталог для настроек напоминаний. |
Оформление писем
Заголовок раздела «Оформление писем»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
mail.dir | строка | /var/lib/sspr/mail | Каталог для оформления писем, заданного в интерфейсе администратора. |
Словарь запрещённых слов
Заголовок раздела «Словарь запрещённых слов»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dict.dir | строка | /var/lib/sspr/dict | Каталог для словаря запрещённых в пароле слов, который ведётся на странице «Пароли». |
Восстановление
Заголовок раздела «Восстановление»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
recovery.dir | строка | /var/lib/sspr/recovery | Каталог для настроек восстановления, заданных на странице «Восстановление». |
Защита от перебора
Заголовок раздела «Защита от перебора»Включение, вид проверки и порог задаются в интерфейсе администратора на странице «Защита от ботов».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
captcha.dir | строка | /var/lib/sspr/captcha | Каталог для настроек защиты от перебора. |
captcha.ttl | длительность | 10m | Сколько действует выданная проверка. |
Сеансы портала
Заголовок раздела «Сеансы портала»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
session.idle_timeout | длительность | 10m | Сколько сотрудник может бездействовать посреди сценария, прежде чем начать заново. |
session.absolute_timeout | длительность | 30m | Наибольшая длительность одного сценария смены или восстановления пароля. |
session.max_per_user | число | 3 | Сколько сценариев одного сотрудника могут идти одновременно. |
Ограничения попыток
Заголовок раздела «Ограничения попыток»| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
limits.max_failures | число | 5 | Сколько неудачных попыток с одного адреса или для одного логина допускается за window. |
limits.window | длительность | 15m | Окно, в котором считаются неудачные попытки и выдачи кодов. |
limits.lock_for | длительность | 15m | На сколько приостанавливаются попытки после превышения max_failures. |
limits.issue_per_ip | число | 10 | Сколько кодов можно запросить с одного адреса за window. |
limits.issue_per_user | число | 5 | Сколько кодов можно запросить для одного логина за window. |
limits.sms_per_day | число | 2000 | Суточный лимит СМС на инсталляцию. При исчерпании СМС недоступны до следующих суток, остальные способы подтверждения работают. |
Каталог и факторы
Заголовок раздела «Каталог и факторы»Список арендаторов. Сейчас поддерживается один арендатор на инсталляцию: в списке должна быть ровно одна запись.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
tenants[].id | строка | обязательный | Идентификатор арендатора. Латиница, не меняется после запуска. |
tenants[].name | строка | — | Название арендатора в интерфейсе администратора. |
tenants[].directory.type | строка | обязательный | Тип каталога. Сейчас поддерживается ad (Active Directory). |
tenants[].directory.ad.url | строка | обязательный | Адрес контроллера домена: ldaps://dc1.corp.ru:636 или ldap://dc1.corp.ru вместе с start_tls. Active Directory меняет пароли только по защищённому соединению. |
tenants[].directory.ad.start_tls | да/нет | false | Включать шифрование на соединении ldap://. |
tenants[].directory.ad.insecure_skip_verify | да/нет | false | Не проверять сертификат контроллера домена. Только для тестового стенда. |
tenants[].directory.ad.base_dn | строка | обязательный | Корень поиска учётных записей, например DC=corp,DC=ru. |
tenants[].directory.ad.upn_suffix | строка | — | Суффикс UPN для входа по короткому логину, например corp.ru. |
tenants[].directory.ad.scope_filter | строка | — | LDAP-фильтр, сужающий круг сотрудников, которые могут пользоваться порталом; по нему же считается число учётных записей для лицензии. |
tenants[].directory.ad.bind_dn | строка | — | Служебная учётная запись для восстановления и разблокировки. Нужна только при allow_reset: true. Права администратора домена не нужны. |
tenants[].directory.ad.bind_password | строка | — | Пароль служебной учётной записи. |
tenants[].directory.ad.phone_attribute | строка | mobile | Атрибут каталога с номером телефона для СМС, например mobile или telephoneNumber. |
tenants[].factors.totp.enabled | да/нет | false | Приложение-аутентификатор (TOTP). |
tenants[].factors.totp.store_file | строка | — | Файл с подключёнными приложениями сотрудников. |
tenants[].factors.sms.enabled | да/нет | false | Код подтверждения в СМС через шлюз заказчика. |
tenants[].factors.sms.gateway.preset | строка | — | Известный провайдер: smsc, smsru, smsaero, sms4b, redsms, zagruzka. Пусто — свой шлюз, описанный полями method, url, body. Подробно — «Настройка → СМС-шлюз». |
tenants[].factors.sms.gateway.login | строка | — | Логин аккаунта у провайдера (для пресета). |
tenants[].factors.sms.gateway.secret | строка | — | Пароль или ключ API у провайдера (для пресета). |
tenants[].factors.sms.gateway.sender | строка | — | Имя отправителя, согласованное с оператором. Пусто — по умолчанию у провайдера. |
tenants[].factors.sms.gateway.method | строка | — | HTTP-метод запроса к своему шлюзу, обычно POST. |
tenants[].factors.sms.gateway.url | строка | — | Адрес своего шлюза. У пресета — замена адреса провайдера, например на резервный узел. |
tenants[].factors.sms.gateway.body | строка | — | Тело запроса к своему шлюзу с подстановками {phone} и {text}. Они экранируются под формат тела: в JSON — как строки, в форме — как значения параметров. |
tenants[].factors.sms.gateway.headers | словарь | — | Заголовки запроса, например Content-Type и Authorization. |
tenants[].factors.sms.gateway.ok_substring | строка | — | Подстрока, которая должна быть в ответе при успешной отправке. |
tenants[].factors.sms.gateway.error_substring | строка | — | Подстрока, означающая отказ. Проверяется раньше ok_substring. |
tenants[].factors.sms.template | строка | — | Текст СМС, %s — место кода. |
tenants[].factors.email.enabled | да/нет | false | Код подтверждения на рабочую почту из каталога. Требует smtp. |
tenants[].factors.email.subject | строка | — | Тема письма с кодом. Пусто — встроенная. |
tenants[].factors.email.body | строка | — | Текст письма с кодом, %s — место кода. Пусто — встроенный. |
tenants[].factors.email.allow_for_reset | да/нет | false | Разрешить код на почту при восстановлении забытого пароля. По умолчанию выключено: почта обычно открывается тем же паролем, который восстанавливают. |
tenants[].factors.fido.enabled | да/нет | false | Ключи безопасности FIDO2 (Рутокен, JaCarta, YubiKey, биометрия устройства). |
tenants[].factors.fido.store_file | строка | — | Файл с зарегистрированными ключами. |
tenants[].factors.fido.rp_id | строка | — | Домен портала для ключей безопасности. Пусто — хост из web.public_url. |
tenants[].factors.fido.origins | список | — | Адреса страниц портала, с которых принимаются ключи. Пусто — web.public_url. |
tenants[].factor_on_change | да/нет | false | Требовать второй фактор и при смене известного пароля. Для портала, доступного из интернета, включайте обязательно. |
tenants[].allow_reset | да/нет | false | Разрешить восстановление забытого пароля и разблокировку. Требует служебной учётной записи в каталоге (bind_dn). false — портал только меняет известный пароль и работает без служебной учётной записи. |