Backlog: уточнить SSH-задачу, завести очистку устаревшего инвентаря
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s

This commit is contained in:
av
2026-07-13 19:52:01 +03:00
parent b60e55ec5e
commit 9b8cd5cab6
3 changed files with 47 additions and 11 deletions
+20 -10
View File
@@ -1,16 +1,26 @@
# Запретить SSH-вход под root
**Приоритет:** высокий
**Приоритет:** средний
`playbook-system.yml:34` переопределяет дефолт роли на
`security_ssh_permit_root_login: "yes"`. Парольная аутентификация выключена (вход
только по ключу), но root — единственный аккаунт, который брутфорсят все боты на
открытом 22/tcp, и компрометация ключа сразу даёт uid 0 без следа sudo. Деплой
идёт под отдельным непривилегированным пользователем с become (`production.yml`),
root-логин для Ansible не нужен. Поставить `"no"`, либо `prohibit-password`, если
root-ключ нужен для аварийного доступа (то же поведение по ключу, но явный запрет
пароля на будущее).
`security_ssh_permit_root_login: "yes"``PermitRootLogin yes`. Это управляет
**только** тем, пускать ли root по SSH, и не имеет отношения к паролю: вход по
паролю уже запрещён отдельной директивой `PasswordAuthentication no` (дефолт роли
`security_ssh_password_authentication: "no"`, не переопределён). То есть брутфорса
пароля тут нет — остаётся то, что root **явно разрешён к входу по ключу**.
Из sec-ревью (fable, 2026-07-13).
Почему всё равно стоит закрыть:
Связано: playbook-system.yml, production.yml, galaxy.roles/geerlingguy.security.
- **Наименьшие привилегии.** Ansible ходит под непривилегированным `major` с
`become` (`production.yml`/`timeweb.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, timeweb.yml,
galaxy.roles/geerlingguy.security.