gendesign/ops
bot-backend fb75bce22d
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
fix(ops): hardening sshd молча не применялся из-за приоритета cloud-init
Найдено при первом живом запуске на Poincare.

Ubuntu кладёт в /etc/ssh/sshd_config.d/ файл 50-cloud-init.conf с
PasswordAuthentication yes. sshd берёт ПЕРВОЕ встреченное значение директивы,
а не последнее, поэтому наш 60-hardening.conf проигрывал по имени: после
reload парольный вход для root остался бы открытым.

Коварство в том, что `sshd -t` при этом отвечает «конфиг валиден», и скрипт
рапортовал об успехе. Сервер уже под перебором (fail2ban держал 6 адресов),
так что тихий отказ здесь стоил бы дорого.

Три правки:
- файл называется 00-hardening.conf и читается первым; старый 60-* удаляется,
  чтобы повторный запуск не оставил два конфликтующих;
- после записи проверяется не синтаксис, а ИТОГ через `sshd -T`: если
  passwordauthentication != no, скрипт падает и НЕ перезапускает sshd;
- комментарий про версии Docker приведён в соответствие с поведением —
  ставится последняя из репозитория, версии прода служат ориентиром для
  предупреждения (приехали 29.7.2 / 5.5.0 против 29.4.1 / v5.1.3).
2026-08-22 12:56:22 +03:00
..
db-bootstrap feat(auth): отдельная БД auth — фундамент единого входа «Меры» и «Птицы» 2026-07-31 21:47:33 +03:00
glitchtip-auth-forwarder fix(tradein/observability): stop basic_auth 401 and RetryError GlitchTip noise 2026-08-15 18:08:04 +03:00
backup-forgejo.sh fix(ops): restore +x on new ops/*.sh (exec bit lost in prior commit, Windows core.filemode=false) 2026-08-21 15:38:31 +03:00
backup.sh feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
check-backup-staleness.sh fix(ops): restore +x on new ops/*.sh (exec bit lost in prior commit, Windows core.filemode=false) 2026-08-21 15:38:31 +03:00
docker-prune.sh chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
gendesign-backup-forgejo.default.example feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
gendesign-backup.default.example feat(ops): missed-run detection for backups + Forgejo code/DB backup to S3 2026-08-21 15:37:19 +03:00
gendesign-uptime.default.example ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00
journald-gendesign.conf.example chore(ops): снятие зависших job-контейнеров раннера + лимит journald + мёртвый Caddy-блок 2026-08-15 22:27:48 +03:00
lib-backup.sh fix(ops): restore +x on new ops/*.sh (exec bit lost in prior commit, Windows core.filemode=false) 2026-08-21 15:38:31 +03:00
restore-drill.sh fix(ops): дрилл восстановления ждал БД по сокету и умирал на старте настоящего сервера 2026-08-21 15:42:36 +03:00
restore.sh chore(ops): выставить +x на docker-prune.sh и restore.sh 2026-08-15 17:17:58 +03:00
selectel-audit.sh chore(ops): скрипты аудита и первичной настройки выделенного сервера Selectel 2026-08-22 12:49:09 +03:00
selectel-bootstrap.sh fix(ops): hardening sshd молча не применялся из-за приоритета cloud-init 2026-08-22 12:56:22 +03:00
uptime-healthcheck.sh ci(infra): coverage-gate (#68) + OpenAPI codegen-assert (#69) + uptime monitoring (#75) 2026-06-13 23:28:06 +05:00