Markus Michalski FAQ

Server Tools: Sicherheit und Schutzmechanismen

Sicherheit und Schutzmechanismen von Server Tools: Eingabevalidierung je Typ, Backups vor dem Löschen und was sie nicht abdecken, Rollbacks, Dateirechte, Audit-Log, Passwörter und Grenzen.

English Version

Zurück zur Übersicht


Sicherheit und Schutzmechanismen

Server Tools läuft als root und verändert das System. Diese Seite beschreibt, was das Tool absichert und was nicht.

graph LR
    A["Eingabe validieren"] --> B["Konfiguration sichern"]
    B --> C["Rückfrage"]
    C --> D["Änderung ausführen"]
    D --> E["Konfigurationstest und Reload"]
    E --> F["Audit-Log"]
    E -->|"Fehler"| G["Rollback"]

Nicht jede Operation durchläuft alle Stufen. Welche, steht auf den Seiten der jeweiligen Befehle.

Eingabevalidierung

Jede Eingabe wird vor der Verwendung gegen ein festes Muster geprüft. Bei einem Fehler ändert das Tool nichts.

Typ Regel
Domain Labels aus Buchstaben, Ziffern und - (je 1 bis 63 Zeichen), Endung nur aus Buchstaben, mindestens 2. Ein Name wie localhost ist gültig, eine IP-Adresse nicht
Datenbankname a-z A-Z 0-9 _ -, 1 bis 64 Zeichen
User-Name (MySQL) a-z A-Z 0-9 _ -, 1 bis 32 Zeichen
Linux-User Kleinbuchstaben, Ziffern, _, -, beginnt mit Buchstabe oder _, höchstens 32 Zeichen. Bestehende Accounts mit UID unter 1000 werden abgelehnt
Pfad (DocumentRoot) Wird mit realpath aufgelöst und muss unter einem Eintrag von ST_ALLOWED_DOCROOT_PATHS liegen. .. und Symlinks werden vorher aufgelöst
E-Mail lokal@host.tld mit üblichen Zeichen
Passwort Mindestlänge ST_PASSWORD_MIN_LENGTH
PHP-Version 7.4, 8.0, 8.1, 8.2, 8.3 oder 8.4
Cron-Schedule Fünf Felder aus Ziffern und * / , -
Port Ganzzahl von 1 bis 65535
Protokoll tcp oder udp
IP-Adresse IPv4, jedes Oktett 0 bis 255
URL http:// oder https://, Host, optional Port. Der Teil ab dem ersten / wird nicht weiter geprüft
SSH-Schlüssel Eine Zeile, 40 bis 8192 Zeichen, Typ ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256/384/521 oder FIDO (sk-)

Zusätzlich gilt:

Backups vor dem Löschen

Mit ST_AUTO_BACKUP=true legt das Tool vor dem Löschen eine .tar.gz-Datei (Rechte 600) in ST_BACKUP_DIR (Rechte 700) an:

Operation Gesichert Dateiname
db delete Credential-Datei der Datenbank db_<name>_<zeitstempel>.tar.gz
vhost delete VHost-Konfigurationsdatei vhost_<domain>_<zeitstempel>.tar.gz

Das Backup entsteht vor der Rückfrage, auch wenn du danach abbrichst. Schlägt es fehl, fragt das Tool Continue without backup?.

Nicht gesichert werden der Inhalt einer Datenbank, das DocumentRoot und die Logs einer Domain, die -le-ssl.conf, die Logrotate-Datei, Cron-Dateien, SSH-Schlüssel und Zertifikate. Alte Backups werden nicht automatisch gelöscht.

Rollbacks

Operation Bei Fehler
db create Schlägt das Anlegen des Users fehl, wird die Datenbank wieder gelöscht. Schlägt das Vergeben der Rechte fehl, bleiben Datenbank und User bestehen
Datenbank neu zuweisen (Menü) Der alte User bekommt seine Rechte zurück
vhost create Schlägt der Reload fehl, wird der Site deaktiviert. Dateien bleiben
vhost php Die alte Konfigurationsdatei wird wiederhergestellt und neu geladen
www- und HTTPS-Weiterleitung (Menü) Die alte Konfigurationsdatei wird wiederhergestellt
user create Der User wird gelöscht, ein neu angelegtes .ssh entfernt

Bei VHost-Änderungen läuft vor dem Apache- oder Nginx-Reload ein Konfigurationstest (apache2ctl configtest bzw. nginx -t). Besteht er nicht, wird nicht neu geladen. Ausnahmen sind das direkte systemctl reload apache2 bei "Recreate all certificates" im Menü und im erzeugten ssl-renewal.sh. Beide laden ohne vorherigen Konfigurationstest neu.

Dateien und Rechte

Datei Rechte
Credential-Dateien 600 (oder 400 per ST_CREDENTIAL_FILE_PERMISSIONS)
Audit-Log 600
Backup-Verzeichnis, Dump-Verzeichnis 700
Backups, Dumps, Exporte 600
Config /etc/server-tools/config 600 bei Installation, Prüfung beim Laden
VHost-Konfigurationen 640 (Redirect-VHosts 644)
Logrotate-Dateien, Cron-Dateien 644
Installierte Binary 700

Das Tool schreibt Dateien mit Rechten über eine temporäre Datei und benennt sie danach um. Ein Symlink als Ziel wird abgelehnt.

Beim Laden der Config-Datei prüft es Eigentümer und Rechte, siehe Konfiguration. Die Options-Datei für MySQL erzeugt eine Warnung, wenn ihre Rechte nicht 600 oder 400 sind.

Passwörter

Audit-Log

Das Tool protokolliert Anlegen, Löschen und Ändern mit Zeitstempel, ausführendem User und Aktion in ST_AUDIT_LOG, siehe Firewall, Fail2Ban, Logs und Status. Das Log wird nicht rotiert oder gekürzt.

Installer-Schutz

Was das Tool nicht schützt