Skip to content

Server Security / Admin Platform

Назначение

Server Security / Admin Platform — это единый контур защиты и управления сервером DesignCorp.

Цели:

  • держать прод/дев домены под постоянным мониторингом;
  • быстро локализовать и блокировать угрозы;
  • дать владельцу простой операторский интерфейс;
  • дать агентам/платформе контролируемый экспертный доступ и audit trail.

Текущий контур (актуально)

  • Repo: /home/admin/workspace/serveradmin
  • Прод URL: https://serveradmin.designcorp.eu
  • Дев URL: https://dev.serveradmin.designcorp.eu
  • Backend bind: 127.0.0.1:3099
  • Frontend runtime: /opt/designcorp/serveradmin/prod/web-dist

Модель доступа

Доступ двухслойный:

  1. Nginx Basic Auth на serveradmin.* (обязателен для всех).
  2. RBAC tokens на backend (SERVERADMIN_RBAC_TOKENS), проксируются через nginx заголовком X-Serveradmin-Token.

Важно:

  • прямой доступ к backend снаружи запрещен;
  • любые секреты только в env, не в git;
  • доступ в UI только по HTTPS.

Что уже реализовано

  • Мониторинг nginx access для high-risk путей (/.env, /.git, wp-*, phpmyadmin, и т.д.).
  • Классификация инцидентов P0/P1 + дедуп алертов.
  • Telegram оповещения в коротком формате (🔴 критично, 🟡 предупреждение).
  • Lockdown механика через nginx (global и per-host).
  • Fail2ban интеграция и обзор top attackers.
  • Операторский UI + экспертные вкладки.
  • Admin actions API (whitelist):
    • restart_serveradmin_ui
    • restart_serveradmin_agent
    • restart_nginx
    • nginx_test
    • nginx_reload
  • Асинхронный orchestrator для операций: /api/v2/jobs.
  • Approval workflow для high-risk операций: /api/v2/approvals.
  • Ops summary API для очередей/approvals: /api/v2/ops/summary.
  • Audit лог операторских действий: operator_audit.jsonl.

Обновление статуса (2026-03-03)

В serveradmin реализован V2-контур хостер-панели для проектов DesignCorp:

  • Projects/Sites: owner + criticality, фильтры, быстрые переходы в операции.
  • Files & FTP:
    • GET /api/ftp/accounts
    • GET /api/ftp/logs
    • GET /api/files/list
    • POST /api/v2/jobs c operation=file_manage (mkdir|rm|chmod|chown, high-risk через approvals).
  • Databases:
    • GET /api/db/inventory
    • GET /api/db/health
  • Mail:
    • GET /api/mail/diagnostics
  • Cron:
    • GET /api/cron/jobs
    • POST /api/cron/manage (upsert|toggle|delete|run_now) для no-code управления расписаниями.
  • Resources:
    • GET /api/resources/sites (CPU/RAM/Disk/Inodes + baseline trend 24h).
  • Access:
    • GET /api/access/policy
    • GET /api/access/tokens (fingerprints only)
    • POST /api/access/tokens/manage (create|revoke).
  • Incidents lifecycle:
    • GET /api/incidents/feed
    • GET /api/incidents/:key/cockpit
    • POST /api/incidents/:key/status (open|acked|resolved).

Обновление статуса (2026-04-19)

В serveradmin начат V3-переход к site-centric control plane:

  • Projects/Sites теперь нормализуются как canonical project model, а не только как плоский список доменов.
  • В модель проекта добавлены:
    • runtime.type, runtime.units[], runtime.containers[]
    • backupPolicy.enabled, backupPolicy.mode
    • capability matrix: deploy|nginx|ssl|backup|files|ftp|db|mail|cron|serviceControl
  • Текущий registry остаётся backward-compatible по старым top-level полям (repo, branch, deployPath, healthUrl, и т.д.), чтобы не ломать существующие flows и monitoring.
  • Safe Service Controls V1 уже добавлены:
    • GET /api/sites/:id/runtime
    • GET /api/sites/:id/runtime/logs
    • POST /api/v2/jobs c operation=service_control и payload.action=restart
  • Runtime restart работает только по allowlist targets из project registry; произвольные systemctl/docker аргументы из запроса не принимаются.
  • Для известных core-проектов DesignCorp backend подмешивает controlled bootstrap runtime bindings (serveradmin, chat, swarm, designcorp, hub, print, ui), чтобы service control заработал сразу без ручного донастройки всех legacy записей.
  • Incident Cockpit V1 для 502/down уже добавлен:
    • связывает incident -> project/site -> runtime -> nginx -> ssl -> recent jobs/actions;
    • показывает probable cause по простым правилам (upstream_dead, health_misconfigured, nginx_config_issue, ssl_readiness_issue);
    • использует live health probe, а не локальный host status;
    • incidents feed автоматически считает incident resolved, если позже найден site_resolved для того же проекта и incident не был reopened.
  • Recovery Center V1 уже добавлен:
    • единый operator context incident/site -> runtime -> releases -> backups -> workflows -> timeline;
    • rollback suggestion теперь указывает на последний успешный deploy, а не на последний успешный rollback;
    • backup restore доступен как dry-run и live action из одного экрана;
    • prod self-deploy serveradmin-ui теперь не зависает на шаге restart: после собственного systemd restart новая копия UI добивает verify и закрывает release на boot.
  • Approval Inbox V2 уже добавлен:
    • approvals больше не показываются как raw list + JSON pane;
    • Actions использует operator inbox с lanes Needs decision, Ready to execute, Recent outcomes;
    • каждая заявка обогащается site context, payload summary, linked job status и next action;
    • detail pane показывает business justification и decision/execution context как primary content.
  • Secrets & Credentials Center V1 уже добавлен:
    • Access стал единым operator screen для access tokens, one-time secrets и rotation health;
    • stale/missing credential surfaces видны без раскрытия самих secret values;
    • jobs/approvals persistence теперь санируется так же, как и workflow history.
  • SLO & Monitoring Workspace V1 уже добавлен:
    • отдельный core-screen Monitoring собирает uptime / latency / error trends, noisy projects и resource hotspots;
    • оператор видит down / warn / noisy / ok, а не просто длинную metric table;
    • из workspace есть прямые переходы в Incidents, Recovery, Projects/Sites.
  • In-product Runbooks & Help V1 уже добавлен:
    • contextual safe-next-step callouts появились для 502/down, ssl issue, pending approval, unmanaged project и credentials rotation;
    • help встроен в action screens и не подменяет audit/approval flow.
  • One-click Workflows V1 уже добавлены как V3 foundation:
    • publish_project, ssl_issue, rollback_release, grant_access;
    • каждый run проходит preflight -> apply -> verify -> fallback и получает correlation_id=workflow:<id>;
    • workflow не обходят существующий approvals/risk_ack контур для high-risk шагов;
    • история workflow санируется перед записью: секреты (token, temporary_password, password) не сохраняются в workflows.json.
  • Health Policy V2 уже добавлена:
    • проект хранит healthPolicy (probeType, expectedStatuses, followRedirects, source);
    • agent auto-tune'ит canonical health endpoint для discovery-managed сайтов без перетирания explicit policy;
    • /api/health и Projects/Sites теперь показывают не только код, но и объяснение почему probe считается ok/down.
  • Guided Onboarding V2 уже добавлен в product flow:
    • Projects/Sites больше не использует flat form для нового проекта; вместо этого есть wizard Project basics -> Runtime -> Delivery -> Edge & health -> Capabilities -> Review;
    • каждый шаг получает live preview через POST /api/sites/preview, который прогоняет payload через canonical site model и сразу показывает managedStatus;
    • wizard умеет доводить happy path DesignCorp-проекта до managed=true или явно показывает remaining blockers;
    • runtime presets закрывают типовые контуры systemd, docker, static, proxy/external;
    • capability matrix поддерживает auto sync от текущего runtime/repo/deploy state или custom mode для ручной фиксации.
  • Backend decomposition phase 2 уже добавлена:
    • src/ui.js больше не держит route-level обработку V3 доменов как один длинный if/else блок;
    • доменные API handlers вынесены в src/ui-api/{approvals,workflows,jobs,sites,runtime,deploy,nginx,incidents,access,health,ssl,backup}.js;
    • hosting/system surfaces вынесены отдельно в src/ui-api/hosting-modules.js и src/ui-api/system.js;
    • legacy inline admin HTML вынесен в src/ui-html.js, чтобы backend composition и HTML template больше не жили в одном файле;
    • prod API контракт при этом сохранён, а live smoke прогнан уже через модульную маршрутизацию.
  • Frontend decomposition phase 2 уже добавлена:
    • web/src/App.jsx стал thin shell;
    • screen state/effects/actions вынесены в web/src/hooks/useServerAdminApp.js;
    • shared helpers/nav metadata вынесены в web/src/serveradmin-shared.jsx;
    • разделы Projects / Incidents / Actions / Audit / Settings и hosting tabs вынесены в отдельные section-компоненты.

Approval Inbox V2

  • Operator inbox заменяет raw approvals list.
  • Главные состояния: Needs decision, Ready to execute, Recent outcomes.
  • Detail pane и quick actions ориентированы на safe execution, а не на JSON inspection.

SLO & Monitoring Workspace V1

  • Monitoring вынесен в отдельный core-screen.
  • В центре внимания: down / warn / noisy / ok, hotspots и переходы в recovery/incidents/projects.
  • Экран должен помогать чинить, а не просто показывать графики.

Guided Project Onboarding V2

  • Новый проект ведётся через wizard с live preview и managedStatus.
  • managed=true считается minimum bar для one-click operations.
  • Unmanaged blockers должны быть видны без CLI.

GitHub tracking:

  • Roadmap milestone: https://github.com/DesignCorporation/serveradmin/milestone/3
  • Board: https://github.com/users/DesignCorporation/projects/6

Security Baseline (обязательный минимум)

P0 (обязательно всегда)

  • TLS + HSTS на публичных доменах.
  • Dotfiles deny (/.env, /.git/*) на nginx уровне.
  • Basic Auth + API token для админ-панели.
  • Строгая валидация input для управляющих API.
  • Все опасные действия только через whitelist команд.
  • Аудит всех ручных действий (кто/что/когда/результат).

P1 (обязательно в ближайшем цикле)

  • SLA/эскалации для pending approvals (напоминания, TTL, escalation policy).
  • Ротация секретов (Basic Auth, API token) по регламенту.
  • Явная политика retention/rotation для security логов.
  • Единые runbook для инцидентов и восстановления.

P2 (после стабилизации)

  • RBAC (owner/operator/viewer) внутри панели.
  • Нотификации о деградации сервисов и SLO breaches.
  • Экспорт инцидентов/действий в централизованное хранилище.

Матрица инцидентов

  • P0: риск компрометации / критичная деградация. Требует немедленного вмешательства.
  • P1: сканирование/подозрительная активность, но система держит защиту.
  • Info/Action: служебные события и действия операторов.

SLA реакции:

  • P0: начать разбор до 5 минут.
  • P1: проверить в течение рабочего окна (до 1 часа).

Протокол работы для агентов

  1. Не менять infra в обход runbook.
  2. Любое изменение security-логики: PR + запись в docs + проверка rollback.
  3. После инцидента обновить:
    • runbook,
    • список угроз/IOC,
    • roadmap/backlog.

Roadmap проекта (Q1-Q2 2026)

Phase 1 — Stabilize (1-2 недели)

  1. Закрыть UX долги операторского режима (approval queue, risk-маркировка, фильтры).
  2. Ввести регламент ротации Basic/Auth token.
  3. Утвердить минимальный disaster-recovery сценарий (UI down, nginx down, cert issues).

Phase 2 — Operate (2-4 недели)

  1. Добавить safe service controls для ключевых сервисов платформы.
  2. Добавить health SLO панель (доступность доменов, latency, последние сбои).
  3. Автоматизировать release шаги frontend/backend и контроль версий runtime path в /opt.

Phase 3 — Scale (4-8 недель)

  1. Ввести RBAC и журнал “кто авторизовался в UI”.
  2. Вынести конфигурацию проектов в единый registry (домены, порты, owners, criticality).
  3. Подготовить продуктовые границы для коммерциализации admin platform.

Backlog задач (стартовый)

P0

  1. Дожать approval policy: who can approve by area, auto-routing owner/admin.
  2. Регламент ротации секретов + runbook “rotate creds”.
  3. Post-incident шаблон и обязательный docs update checklist.

P1

  1. Статус-панель SLO (доступность + latency + последние 24h).
  2. Упрощенный экспорт audit trail (JSON download) для расследований.
  3. Авто-тест smoke после деплоя (/, /api/config, /api/admin/actions).

P2

  1. RBAC модель и migration plan.
  2. Пакет шаблонов onboarding для новых доменов/проектов.
  3. Подготовка публичного описания SaaS-версии security admin.

Связанные документы