- production.yml переписан на живой Timeweb-хост, timeweb.yml удалён, HOSTS_FILE в tasks.py и примеры в README поправлены - host-vars application_dir и mount_external_storage не перенесены: это наследие YC-диска, а после переезда в group_vars инвентарь их перебивает - ansible.cfg: inventory по умолчанию, чтобы забытый -i не уводил в никуда
1.8 KiB
Запретить 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.