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

27 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Запретить 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.