mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 21:43:05 +09:00
The 1791-line security omnibus splits along tool lines and the install-gated surfaces leave core for five standalone extensions - serverkit-clamav (ClamAV+YARA scanning, quarantine, scan jobs), serverkit-fail2ban (management UI; probes stay core on Fail2banJailService), serverkit-lynis, serverkit-auto-updates, and serverkit-image-scan (headless CVE/SBOM scanning; models stay core per the plan 52 D1 data seam). Each mounts its routes back at the same /api/v1/security prefix when installed, so route shapes never change; absent extensions mean plain 404s, no dead UI. Core keeps the zero-host-package baseline: status/config, legacy integrity, suspicious activity/events, SSH keys, IP lists, the audit (fail2ban check now probes via the jail service; updates check was already self-contained), scoped FIM, and the scan/alert logs + notification helpers extensions write through. Job handlers for security.malware_scan/lynis_scan/image_scan now come exclusively from the extensions' manifest jobs key. Security page becomes core-tabs-only; extension tabs contribute into the security tab group (3a groupId). Overview posture drops the hardcoded ClamAV rows and offers the Marketplace when no security extension is installed. Upgrade parity: run_registry_auto_install() installs each extension from the registry once, gated on the host tool actually being present, fail-soft until the registry entry is published. Wizard round 2 (Ph5): a security-posture chooser (minimal/recommended/ hardened) on the Summary step, catalog-resolved so unpublished slugs never render dead installs; persisted as onboarding_security_posture. Moved test suites re-home to the extension repos; panel keeps test_security_suite_extraction.py (18 proving tests: absent-shape 404s, lean summary, jail-service probes, migration gates, posture wiring). docs/API_SURFACE.md regenerated (34 operations moved out). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>