Парольная политика и защита доступа
Механизмы защиты
1. Защита от подбора паролей
Два независимых слоя — кратковременная блокировка по серии неудач в памяти процесса и постоянная блокировка учетной записи — отказывают во входе после настраиваемого числа неудачных попыток. Неверный пароль, временная блокировка по серии и постоянная блокировка возвращают ошибку 401, так что атакующий не может их различить.
Отказы дополнительно сопровождаются случайной задержкой, чтобы блокировку нельзя было отличить от медленной проверки пароля по времени ответа.
- Переменные окружения для настройки порогов
-
TNGRI_LOGIN_THROTTLE_*
2. Политика паролей
Каждый новый пароль проверяется на соответствие следующим параметрам:
-
Длина
-
Разнообразие символов
-
Использование фрагментов логина в пароле
-
Использование предыдущих паролей
У пароля есть время жизни — срок, в течение которого пароль актуален. При окончании этого срока учетная запись блокируется до разблокировки администратором.
Значения по умолчанию заданы консервативно и настраиваются через переменные окружения.
- Переменные окружения для настройки значений по умолчанию
-
TNGRI_PASSWORD_POLICY_*.
3. Токен восстановления
В случае когда администраторская учетная запись заблокирована попытками атакующего подобрать к ней пароль, администратор может предъявить токен восстановления системе для входа. Для этого нужно выполнить запрос POST /auth/recovery со своим токеном. Это действие сбрасывает все блокировки и позволяет администратору системы войти в нее.
Все три механизма применяются только к парольному входу (POST /auth/login, SCRAM-SHA-256 поверх psql). Вход через SSO или аутентификация через токены эти механизмы не используют.
|
Чек-листы восстановления
Настройка токена восстановления
-
Сразу после установки системы выпустите токен восстановления для учетной записи администратора по умолчанию:
prostore user mint-recovery --username admin -
Сохраните токен в командном менеджере паролей вне основной системы. Команда показывает токен один раз, и Tengri не сможет показать его повторно.
-
Повторите эти действия для каждой учетной записи, которой нужен способ восстановления. Общесистемного главного токена восстановления не предусмотрено — токены выпускаются по одному на пользователя.
Во время инцидента
-
По журналу определите заблокированную учетную запись:
account '<user>' blocked after N failed login attempts -
С доверенного клиента отправьте сохраненный токен на точку входа восстановления вместе с именем заблокированной учетной записи:
curl -X POST https://<host>/auth/recovery \ -H 'Content-Type: application/json' \ -d '{"login": "<user>", "token": "<сохраненный-токен>"}' -
Сохраните
recovery_tokenиз JSON-ответа — это единственная копия следующего токена. -
Блокировка снимается автоматически.
После этого войдите обычным способом и смените пароль затронутого пользователя.
После инцидента
-
Убедитесь, что новый токен восстановления сохранен в менеджере паролей.
-
Просмотрите следующие строки журнала в окне инцидента:
-
recovery token used -
recovery token rejected
Каждая запись должна сопоставляться с известным оператором.
-
-
Если исходный токен мог быть скомпрометирован (передан по ненадежному каналу, попал в запись экрана и т. п.), выпустите новый токен, чтобы аннулировать ротированную копию.
-
Сопоставьте пороги защиты от подбора с наблюдаемым трафиком, в первую очередь эти:
-
TNGRI_LOGIN_THROTTLE_MAX_FAILURES -
TNGRI_PASSWORD_POLICY_MAX_FAILED_LOGINS
Повысьте их в случае необходимости.
-