Server und Laptop mit Zahnrädern, davor der Schriftzug „sysadmin“

camindo CMS für Server-/Netzwerk-Administratoren

Argon2id mit Pepper

Passwort-Hashes nach OWASP, zusätzlich per HMAC mit einem Serverschlüssel gewürzt. Ein Datenbank-Dump allein nützt Angreifern nichts.

Signierte Rechte-Tabellen

Admin-Konten, Gruppen und Rechte tragen HMAC-Signaturen. Wer direkt in die Datenbank schreibt, gibt sich damit keine Rechte.

Schlüsselrotation per CLI

key rotate verschlüsselt alle Daten neu, signiert neu und nimmt Passwörter weich mit. Bricht es ab, geht nichts verloren. Vorher läuft automatisch ein Backup.

Verschlüsselte Felder

AES-GCM mit AAD für E-Mail-Adressen, TOTP-Secrets, Nachrichten und frei definierbare encrypted-Felder. Ein Wert, der in eine andere Zeile kopiert wird, lässt sich dort nicht entschlüsseln.

Zwei-Faktor im Backend

TOTP nach RFC 6238 mit Replay-Sperre, Wiederherstellungscodes und E-Mail-Code. Für Superuser lässt sich TOTP zur Pflicht machen.

Zwei-Faktor im Frontend

Je Kundenbereich einstellbar: aus, optional, bei unbekanntem Gerät oder immer. TOTP mit QR-Code oder E-Mail-Code, SMS lässt sich anbinden.

Brute-Force- und Flooding-Schutz

Gleitende Zeitfenster, Sperre gilt auch für unbekannte Namen, Drosselung pro IP und Adresse. Die Schlüssel werden nur als HMAC gespeichert.

Session-Härtung

Bei jeder Anmeldung eine neue Session-ID, Cookies mit HttpOnly, Secure und SameSite. Ein Passwortwechsel beendet alle anderen Sitzungen.

Geräteverwaltung

Hinweis per E-Mail bei neuem Gerät. Geräte und Sitzungen lassen sich einsehen und beenden, „Abmelden auf allen Geräten“ ist eingebaut.

CSRF dreifach

Token-Pflicht, schreibende Aktionen nur per POST und Origin-Prüfung im Backend. Auch Frontend-Formulare brauchen ein Pflicht-Token.

Content Security Policy

Im Backend immer script-src mit Nonce, ohne unsafe-inline. Im Frontend je Instanz zuschaltbar, mit Report-Modus und Meldungs-Endpunkt.

XSS-Filter auf zwei Wegen

Ein Whitelist-Sanitizer läuft beim Schreiben und beim Lesen. Er entschärft Entity-Tricks, verschachtelte Tags und javascript:-URLs.

Sicherheits-Header

X-Frame-Options, frame-ancestors, nosniff, Referrer-Policy und HSTS als Opt-in. Standardwerte pro Kontext, das Template kann sie überschreiben.

Upload-Härtung

Server-Skripte werden nie angenommen, aktive Inhalte aus dem Frontend immer abgelehnt. Solche Dateien werden mit sandbox, nosniff und attachment ausgeliefert.

ImageMagick-Policy

Eigene policy.xml ist immer aktiv, dazu MIME-basierter Coder-Präfix, Ressourcenlimits und eine Versionswarnung. SVG und PDF gehen nur nach ausdrücklicher Freigabe.

Manipulationssicheres Audit-Log

Jede Änderung mit Vorher/Nachher-Vergleich, im Dateisystem mit HMAC-Kette gespeichert. Die Kette wird täglich automatisch geprüft.

Feingranulare Rechte

Rechte je Modul, Instanz, Sprache, Bereich und Eigentümer. Sie werden in der Oberfläche und auf der Datenebene durchgesetzt.

Prepared Statements

Alle Datenbankzugriffe laufen über gebundene Parameter, SQL wird nie aus Nutzereingaben zusammengesetzt.

Abhängigkeiten im Blick

Täglich composer audit und composer outdated. Sicherheitsmeldungen erscheinen direkt als Warnung auf der Startseite.

Betriebsüberwachung

Die Startseite prüft Cron-Herzschlag, Backups, Schreibrechte, Updates und die Audit-Kette.

Saubere Verzeichnisstruktur

Nur public/ ist Docroot. Schlüssel und Zugangsdaten liegen außerhalb mit Rechten 0600. Aus der Datenbank gelangt nie Code ins Dateisystem.

Passworte über ENV

Passworte sind über Umgebungsvariablen setzbar, anstatt im Config-File, ideal in virtuellen Umgebungen.

Grenzen der Sicherheit

Wer Zugriff auf das Dateisystem erlangt, hat alles in der Hand, inkl. Zugang zur Datenbank und Schlüssel.