Files
pet-project-server/docs/backlog/ssh-disable-root-login.md
T
av 4d976585ec Ansible: единственный инвентарь production.yml
- production.yml переписан на живой Timeweb-хост, timeweb.yml удалён,
  HOSTS_FILE в tasks.py и примеры в README поправлены
- host-vars application_dir и mount_external_storage не перенесены: это
  наследие YC-диска, а после переезда в group_vars инвентарь их перебивает
- ansible.cfg: inventory по умолчанию, чтобы забытый -i не уводил в никуда
2026-07-24 21:15:12 +03:00

1.8 KiB
Raw Blame History

Запретить SSH-вход под root

Приоритет: средний

playbook-system.yml:34 переопределяет дефолт роли на security_ssh_permit_root_login: "yes"PermitRootLogin yes. Это управляет только тем, пускать ли root по SSH, и не имеет отношения к паролю: вход по паролю уже запрещён отдельной директивой PasswordAuthentication no (дефолт роли security_ssh_password_authentication: "no", не переопределён). То есть брутфорса пароля тут нет — остаётся то, что root явно разрешён к входу по ключу.

Почему всё равно стоит закрыть:

  • Наименьшие привилегии. Ansible ходит под непривилегированным major с become (production.yml), root-логин для деплоя не нужен вовсе.
  • Defense-in-depth. Если PasswordAuthentication когда-нибудь вернётся в yes (правка, Match-блок, чужая роль), PermitRootLogin yes тут же откроет root по паролю. prohibit-password держит root key-only независимо.

Рекомендация: поставить "no" (root по SSH недоступен, деплой под major не страдает). Если нужен аварийный вход root по ключу — "prohibit-password".

Из sec-ревью (fable, 2026-07-13); мотивировка уточнена после проверки конфига.

Связано: playbook-system.yml, production.yml, galaxy.roles/geerlingguy.security.