← EP21 Internal Docs EP21 Backup Engine
ADR · ADR-0012 · v0.2.0

VM Hardening Guidelines for Backup Agent

draft Authors: david.sorf Created: 2026-04-09 Updated: 2026-04-10
security hardening vm linux audit golden-image
Formálně definované hardening požadavky pro VM prostředí kde běží EP21 Backup Agent: dedikovaný systémový uživatel ep21-backup, file system oprávnění pro backup volumes a secrets, auditd pravidla pro Docker socket operace, a golden image checklist. Navazuje na ADR-0008 a ADR-0011.
Related docs:

Kontext

EP21 Backup Agent (ADR-0002, ADR-0007) běží jako Docker kontejner s přístupem k host PostgreSQL a restic remote. ADR-0011 rozhodl, že Docker socket se pro discovery nepoužívá — backup kontejner přistupuje pouze k PostgreSQL a restic.

Přesto je potřeba formálně definovat hardening baseline pro VM prostředí:

Bez těchto pravidel je golden image deployment (ADR-0002) nekompletní z bezpečnostního hlediska.

Rozhodnutí

✓ Chosen: Přijmout definované hardening guidelines pokrývající: systémového uživatele ep21-backup, file system oprávnění, auditd záznamy a golden image checklist

1. Systémový uživatel

Vytvořit dedikovaného uživatele ep21-backup na hostu:

  • Bez login shellu (/usr/sbin/nologin)
  • Bez sudo oprávnění
  • Člen skupiny docker pouze pokud je Docker socket potřeba (dle ADR-0011 není pro EP21 produkci)
  • Docker Compose a systemd unit spouštěny pod tímto uživatelem
useradd --system --no-create-home --shell /usr/sbin/nologin ep21-backup

2. File system oprávnění

CestaOwnerModePoznámka
DB_BKUP_ROOT/ep21-backup750Kořen backup volumes
DB_BKUP_ROOT/restic/ep21-backup700Restic repository
RESTIC_PASSWORD_FILEep21-backup400Heslo čitelné pouze backup userem
backup.envep21-backup400Connection stringy a secrets
DB_BKUP_ROOT/logs/ep21-backup750Logy

3. Audit logy (auditd)

Zaznamenávat přístupy k backup.env a RESTIC_PASSWORD_FILE:

-w /etc/ep21-backup/backup.env -p r -k ep21-backup-secrets
-w /etc/ep21-backup/restic-password -p r -k ep21-backup-secrets

Docker socket audit (pouze pokud je socket používán — viz ADR-0011):

-w /var/run/docker.sock -p rw -k ep21-backup-docker

4. Síťové restrikce

Backup kontejner smí iniciovat spojení pouze na:

  • Host PostgreSQL (port 5432 nebo konfigurovaný port)
  • Restic remote (Contabo S3 endpoint — HTTPS 443)

Odchozí provoz na ostatní adresy blokovat přes iptables/nftables whitelist nebo Docker network policy. Implementace závisí na konkrétní VM síťové topologii.

5. Golden image checklist

Před nasazením backup agenta na nový VM musí být splněno:

  • [ ] ep21-backup uživatel existuje (bez shell, bez sudo)
  • [ ] DB_BKUP_ROOT adresářová struktura má správná oprávnění
  • [ ] backup.env a RESTIC_PASSWORD_FILE mají mode 400, owner ep21-backup
  • [ ] auditd pravidla aktivní a testována (auditctl -l)
  • [ ] Smoke test backup agenta proběhl úspěšně (backup + verify)
  • [ ] Síťová pravidla aplikována a ověřena

Důsledky

Pozitivní:

Negativní:

Koordinace s ostatními ADR

Changelog

VersionDateAuthorNote
0.2.02026-04-10david.sorf + claude-sonnet-4-6

Draft rozšířen: ep21-backup uživatel, file system tabulka oprávnění, auditd pravidla, síťové restrikce, golden image checklist. Čeká na design review a přijetí.

0.1.02026-04-09david.sorf + claude-sonnet-4-6

Initial draft. Vytvořeno jako tracked follow-up z ADR-0008 § Follow-up. Definuje oblasti k řešení a navrhované guidelines, formální rozhodnutí zatím nebylo přijato.