Операторская поверхность, а не публичный театр
Проверка намеренно только для админа. Это не публичный 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, флаги софта не спрячут ключ в памяти от этого процесса. Эти проверки в основном уменьшают случайную утечку, поверхности дампов и риски от соседних процессов и привилегий контейнера.