> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ipmideck.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Безопасность

> Каждое утверждение о безопасности здесь основано на собственном коде бэкенда ipmideck, а не на маркетинге.

ipmideck создан для людей, которые читают исходный код, а не доверяют производителю. Утверждения
ниже основаны на коде бэкенда продукта.

## Безопасность данных и учётных записей

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

### Шифрование учётных данных AES-256-CBC

Учётные данные BMC шифруются в покое с помощью AES-256-CBC и случайного IV на каждый секрет.
Ключ шифрования находится в отдельном файле ключа (`data/encryption.key`, 32 случайных байта,
права доступа только для владельца), никогда в базе данных, поэтому одна украденная база данных не может
ничего расшифровать.

### Входы bcrypt + сессии, подписанные HMAC-SHA256

Пароли входа хешируются с помощью bcrypt (соль на каждый пароль, проверка за постоянное время). Токены
сессий подписываются с помощью HMAC-SHA256, повторно проверяются при каждом запросе и аннулируются, когда
имя пользователя меняется. Куки имеют HttpOnly и SameSite=Lax.

### Блокировка при переборе

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

### ipmitool без оболочки, полностью офлайн

ipmitool вызывается через список аргументов (`create_subprocess_exec`), никогда через оболочку,
поэтому нет поверхности для внедрения команд. Вся система работает полностью офлайн: без
телеметрии, без облака, без внешних вызовов.

## Защита оборудования

FanPilot создан для безопасного отказа: тепловые пределы побеждают любую кривую, и цикл управления
продолжает работать, даже когда вы не наблюдаете.

### Защитное переопределение при критической температуре

Вентиляторы принудительно устанавливаются на 100% при достижении критической температуры или выше (по умолчанию 85°C, настраивается).
Никакая кривая вентиляторов не может переопределить переопределение, тепловой предел всегда побеждает.

### Гистерезис для остановки колебаний

Настраиваемый запас гистерезиса (по умолчанию 3°C) предотвращает быстрые колебания вентиляторов вверх
и вниз вокруг предела температуры, сохраняя изменения скорости плавными и предсказуемыми.

### Автономный фоновый цикл

Управление вентиляторами работает в фоновой задаче (опрос \~30с), которая продолжает работать с закрытой
панелью, защита не зависит от открытой вкладки браузера.

### Восстановление после некорректного завершения + корректное завершение

После некорректной остановки (потеря питания или `kill -9`) ipmideck восстанавливает собственный авторежим BMC,
и автоматически восстанавливается при обнаружении сервера офлайн и устаревших датчиков. Чистое завершение возвращает
вентиляторы тепловому управлению BMC.
