Модель безопасности

Что фреймворк делает для защиты сервера, какие решения приняты и что остаётся на вашей ответственности.

Защита от локаута (потери доступа к серверу)

Самый опасный класс ошибок инсталляторов. Принятые меры:

Риск Защита
Сломанный конфиг sshd Drop-in валидируется sshd -t до перезапуска; при ошибке мгновенно восстанавливается прежний конфиг
Отключение паролей без ключа mitdev предлагает сгенерировать Ed25519-ключи для deploy/root; глобальный PasswordAuthentication no применяется только при наличии deploy-ключа
Файрвол закрыл SSH Правило SSH-порта добавляется до ufw enable
Смена порта SSH «не применилась» При наличии ssh.socket он отключается (socket-активация приколачивает порт 22) и включается классический ssh.service
Fail2Ban банит администратора ignoreip = 127.0.0.1/8 ::1; порт jail'а совпадает с фактическим портом SSH

Усиление SSH (модуль security)

Drop-in /etc/ssh/sshd_config.d/99-mitdev.conf:

Инсталлятор может создать две пары ключей: /root/.mitdev-keys/<user>_ed25519 для deploy-пользователя и /root/.mitdev-keys/root_ed25519 для root. Public keys добавляются в соответствующие authorized_keys, private keys показываются root-командами sudo mitdev ssh-key show deploy и sudo mitdev ssh-key show root.

Сетевой периметр

Секреты

Права и изоляция

Известные ограничения (ваша зона ответственности)

  1. MongoDB ставится без аутентификации (слушает localhost). До вывода в продакшен включите security.authorization и создайте пользователей. Модуль предупреждает об этом при установке.
  2. PostgreSQL primary слушает listen_addresses='*' — доступ снаружи отсекают UFW и pg_hba, но при отключении файрвола порт станет доступен.
  3. Автоматическое обновление пакетов не настраивается — решите сами: unattended-upgrades или регулярный mitdev update (mitdev doctor подсказывает, когда накопились обновления).
  4. Split-brain при failover: watchdog v2 закрывает штатные сценарии — двойная проверка pg_isready+TCP, порог 30 с, приоритетные задержки реплик, а главное fencing по timeline: смещённый старый primary, увидев пира со старшим timeline, сам понижается через pg_rewind. Окно риска остаётся при полном сетевом разделении, когда оба сегмента продолжают принимать записи и не видят эндпоинты ролей друг друга — кворума в схеме 1+2 нет. Для строгих гарантий на 5+ узлах уместен Patroni с etcd. Дополнительные механизмы самовосстановления: `postgres/.mitdev-repl-pass(0600, только postgres) и узкий sudoers — postgres может лишьsystemctl stop/start/restart postgresql`, ничего больше.
  5. Цепочка поставки: k3s, Helm, gum и NodeSource ставятся официальными скриптами/репозиториями поставщиков по HTTPS с GPG-подписями пакетов, но это доверие к их инфраструктуре. Для air-gapped сред зеркалируйте артефакты самостоятельно.

Сообщение об уязвимостях

Не открывайте публичный issue. Напишите мейнтейнерам напрямую (контакты — в профиле репозитория); дайте разумный срок на исправление до раскрытия.