Chronologische Dokumentation der Arbeiten an ProxSecure für den Live-Stack auf docker-main (LXC CT 100) mit Proxmox-Host station-2.
Stand: 15. Juni 2026.
| Komponente | Adresse / ID |
|---|---|
| ProxSecure Dashboard | http://192.168.2.115/ |
| Proxmox VE (station-2) | 192.168.2.50 |
| Deploy-Pfad | /opt/proxsecure auf CT 100 |
| Jira Cloud Projekt | SUP (Beispiel-Tickets SUP-2 … SUP-13) |
Secrets (API-Keys, Tokens, Passwörter) liegen nur in /opt/proxsecure/.env auf dem Server — nicht im Git-Repository.
Ziel: Falsche ISO 27001:2022 / BSI IT-Grundschutz 2023 / NIS2 Art. 21 Zuordnungen bereinigen.
| Änderung | Dateien |
|---|---|
| 14 Audit-Checks mit verifizierten Mappings | backend/app/core/audit_engine.py |
| NIS2-Feld im Datenmodell | backend/app/models/check.py |
| Mapping-Tabelle | docs/COMPLIANCE_MAPPING.md |
| NIS2-Badges UI + PDF-Spalte | Frontend CheckResultCard, RemediationBlock, report_service.py |
Neue Checks u. a.: management_ui_restricted, security_updates_current, rbac_least_privilege, backup_encryption.
| Feature | Endpoint / UI |
|---|---|
| Bulk-Tickets für alle FAILs | POST /api/v1/audit/nodes/{node_id}/tickets |
| PDF Download + Preview | GET /api/v1/audit/nodes/{node_id}/report |
| UI | AuditDetailView.jsx — Buttons „Create Jira Tickets“, „Download Report“, PDF-Modal |
Deduplizierung: offene Tickets pro check_id werden nicht doppelt angelegt.
| Komponente | Beschreibung |
|---|---|
| Ansible-Service | backend/app/services/ansible_service.py — Playbook-Wrapper, Inventory, Handler |
| SSH-Key Setup | scripts/setup-ansible-ssh-docker-main.sh |
| Break-Glass | POST /operations/break-glass, GET /operations/break-glass/status |
| Live-Ansible | POST /operations/ansible/run — verknüpft mit Jira-Tickets |
| Production Compose | docker-compose.prod.yml — Postgres, CheckMK, Alert-Webhook, Nginx |
Behoben: Host-Key-Fehler, falsches Ansible-Inventar, fehlender Request-Import (502).
Drei Fix-Typen für MSP-Operatoren:
| Modus | Badge | Bedeutung |
|---|---|---|
auto |
Ansible | Voll per Playbook |
assisted |
Teilweise | Ansible + manuelle Schritte |
manual |
Manuell | Nur How-to (z. B. 2FA, PBS-Verschlüsselung) |
| Datei | Zweck |
|---|---|
frontend/src/utils/automationModes.js |
Labels, Hints, resolveRemediationMeta() |
AutomationModeBadge.jsx, AutomationLegend.jsx, RemediationHowTo.jsx |
UI-Komponenten |
| Audit-Tabelle | Spalte Fix + Legende |
| Operations | Ticket-Buttons nach Modus, Ansible blockiert bei manual (HTTP 422) |
| PDF Roadmap | Fix-Typ + How-to-Schritte |
Break-Glass freigeschaltet; Ansible live gegen 192.168.2.50 ausgeführt.
| Ticket | Check | Ansible-Ergebnis |
|---|---|---|
| SUP-2 | ssh_root_login |
Erfolg |
| SUP-6 | syslog_forwarding |
Erfolg |
| SUP-7 | snmp_configured |
Erfolg (assisted) |
| SUP-8 | privileged_access_logging |
Erfolg |
| SUP-12 | rbac_least_privilege |
Erfolg (User proxsecure-admin@pve) |
| INC-E7DE1E | backup_schedule |
Erfolg (Cron) |
| SUP-4 | backup_retention |
Bereits früher resolved |
Manuell offen: SUP-5 (two_factor_enabled), SUP-13 (backup_encryption).
Erkenntnis: Ansible änderte den Host, aber der Audit-Score blieb zunächst bei 28 % — Collector las nur API mit eingeschränktem Token und ohne SSH.
Script: scripts/setup-proxmox-audit-token.sh
- ACL
PVEAuditorauf/für{PROXMOX_USER}!proxsecure-audit - Wird beim Deploy via
deploy-docker-main.shaufgerufen - Ermöglicht Lesen von Backup-Jobs, Usern, Firewall, VMs über die API
| Datei | Zweck |
|---|---|
backend/app/services/proxmox_ssh_collector.py |
SSH + pvesh auf dem PVE-Host |
proxmox_real.py |
Merge API + SSH-Fakten |
customer_service.py |
Fix: Tenant-Pfad nutzt jetzt auch SSH-Enrichment |
AUDIT_SSH_ENRICHMENT_ENABLED |
Env-Flag (default true) |
SSH liest u. a.: sshd_config, rsyslog-Forward, sudo-Audit, SNMP, Cron-Backup, User/2FA via pvesh, apt-upgradable.
| Metrik | Vorher | Nachher |
|---|---|---|
| Compliance-Score (station-2) | 28 % | 71 % (10/14 PASS) |
| Noch FAIL | 10 | 4 (two_factor_enabled, backup_encryption, vm_network_segmentation, vm_resource_limits) |
# Vollständiges Deploy auf docker-main
./scripts/deploy-docker-main.sh
# Nur Env-Keys patchen (ohne Secrets zu überschreiben)
./scripts/patch-env-docker-main.sh AUDIT_SSH_ENRICHMENT_ENABLED=true
# Ansible-SSH-Key + authorized_keys auf Proxmox
./scripts/setup-ansible-ssh-docker-main.sh
# Proxmox API-Token ACL
./scripts/setup-proxmox-audit-token.shNach Backend-Rebuild: docker compose restart nginx (sonst ggf. 502).
- Audit öffnen → Compliance-Score und FAIL-Liste
- Create Jira Tickets (all FAILs) → SUP-Tickets in Jira
- Auto-Ticket (z. B. Backup) → Operations → Break-Glass → Run Ansible → Ticket resolved
- Manuell-Ticket (2FA) → How-to anzeigen — kein Ansible
- PDF-Report herunterladen — Roadmap mit Fix-Typen
- VM-Firewall / Resource-Limits per Ansible oder PVE-API (2 verbleibende FAILs)
- 2FA und PBS-Verschlüsselung manuell in Proxmox UI
- Optional: dedizierten Audit-User statt
cursor@pam