CottonАдминская проверка безопасности
Админская проверка безопасности

Хватит гадать, насколько защищён ваш self-hosted инстанс.

Cotton превращает позицию безопасности в операторский экран. Проверка называет конкретные риски: источник ключа, публичный режим, админский 2FA, диагностику, дампируемость, seccomp, ptrace, доступность Docker socket, записываемый rootfs, изоляцию и состояние раскатки целостности базы данных.

Проверка оператораПозиция контейнераАдминский 2FAИсточник ключаЦелостность БД

Операторская поверхность, а не публичный театр

Проверка намеренно только для админа. Это не публичный healthcheck endpoint и не маркетинговый бейдж; это приватная поверхность оператора, где видно, какие решения по развёртыванию и аккаунтам ещё требуют внимания.

  • Страница может свести сигналы в понятную оценку 0-10.
  • Предупреждения говорят про векторы угроз, а не про абстрактный цвет безопасности.
  • Вывод должен быть за аутентификацией админа, потому что показывает пробелы в харденинге.

Сигналы развёртывания

Cotton может смотреть позицию процесса/контейнера: диагностику .NET, дампируемость Linux, эффективный UID, no-new-privileges, режим seccomp, capability ptrace, записываемую корневую файловую систему, доступность Docker socket, подсказки host PID namespace, настройки дампов памяти и изоляцию AppArmor/SELinux.

  • Эти проверки ловят ошибки self-hosting, которые легко пропустить.
  • Они помогают отличить доверенное домашнее развёртывание от публично выставленного инстанса.
  • Они не заменяют харденинг хоста и нормальный обзор развёртывания.

Сигналы ключа и аккаунта

Страница может предупреждать про источник master key, публичный/демо-режим и админские аккаунты без 2FA. Это важно: шифрование хранилища и passkeys полезны только тогда, когда оператор видит, как инстанс реально настроен.

  • Разблокировка в браузере держит master key вне метаданных окружения развёртывания.
  • Режим ключа в окружении всё ещё практичен для доверенных домашних серверов, где нужны автоматические перезапуски.
  • Покрытие админов 2FA видно сразу, а не закопано в пользовательских настройках.

Раскатка целостности базы данных

Подписи целостности базы данных тоже часть истории про позицию. Проверка может предупреждать, пока мостовой режим включён, чтобы оператор видел: защищённые метаданные ещё находятся в состоянии раскатки.

Сначала дешёвый харденинг

Цель — не паранойя с первого запуска. Cotton показывает дешёвые слои харденинга: путь рантайма не от root, отключённую диагностику .NET, снижение дампируемости, no-new-privileges, seccomp, покрытие 2FA и отсутствие очевидной доступности Docker socket.

Экспертный харденинг — явно

Read-only rootfs, кастомные профили seccomp/AppArmor, зашифрованный swap, настройки ptrace ядра, TPM/HSM/KMS или отдельный агент ключей могут быть полезны, но это экспертные решения. Если влепить их вслепую, можно сломать права на тома, отладку, превью или сценарии восстановления.

Сигналы, которые проверка умеет назвать

Проверка может показать публичное создание аккаунтов, источник master key, покрытие админов 2FA, состояние моста целостности базы данных, диагностику .NET, дампируемость Linux, seccomp, CAP_SYS_PTRACE, записываемый rootfs, доступность Docker socket, вероятное использование host PID namespace, лимиты дампов памяти, core_pattern и изоляцию AppArmor/SELinux.

Видимую безопасность проще чинить

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

Жёсткая граница

Cotton не притворяется, что софт победит полную компрометацию хоста. Если атакующий может исполнять код внутри процесса Cotton, флаги софта не спрячут ключ в памяти от этого процесса. Эти проверки в основном уменьшают случайную утечку, поверхности дампов и риски от соседних процессов и привилегий контейнера.

Доказательство для оператора

Проверка должна показать точный риск, а не мутное предупреждение.

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

Экран безопасности админкиСостояние развёртывания видно как конкретные предупреждения и контекст для устранения, а не расплывчатый production-чеклист.

Процесс и контейнер

.NET diagnostics, Linux dumpability, эффективный UID, no-new-privileges, seccomp, ptrace, writable rootfs, Docker socket, подсказки про host PID, core dumps и confinement.

Ключи и аккаунты

Источник мастер-ключа, public/demo mode и admin-аккаунты без 2FA показываются как решения оператора, а не спрятанные мелочи развёртывания.

Состояние метаданных

Состояние моста целостности БД говорит оператору, находятся ли защищённые SQL-метаданные ещё в стадии раскатки.

Честная граница

Сигналы hardening уменьшают уязвимость. Они не побеждают компрометацию хоста.

Если враждебный код исполняется внутри процесса Cotton, софт не сможет полностью спрятать ключ в памяти от этого процесса. Проверка всё равно полезна: куча реальных провалов self-hosting случайны — открытая диагностика, включённые поверхности дампа, примонтированный Docker socket, слабое состояние админки или забытый public mode.

  • Держите проверку только для админов.
  • Используйте разблокировку в браузере, когда метаданные env вызывают вопросы.
  • Требуйте 2FA для админов на открытых инстансах.
  • Не монтируйте Docker socket и лишние привилегии хоста.
  • Проверяйте изменения захардененного compose до того, как на них полагаться.
  • Бэкапы и тестирование восстановления живут вне этой оценки.
Вопросы

Прямые ответы

Проверка безопасности — это публичный healthcheck?

Нет. Это страница только для админа, потому что она раскрывает позицию развёртывания и пробелы в харденинге. Публичные healthcheck не должны светить такие детали.

Высокая оценка значит, что инстанс не взломать?

Нет. Оценка — практичная сводка позиции, а не гарантия и не результат аудита. Компрометация хоста, плохие бэкапы, утёкшие секреты и слабая эксплуатация всё ещё важны.

Зачем предупреждать про COTTON_MASTER_KEY в окружении?

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

Харденинг может сломать нормальную работу?

Да. Read-only файловые системы, кастомные профили или агрессивные ограничения контейнера могут сломать права на тома, отладку, превью или пути восстановления, если включать их без тестов.