SSH absichern
Was ist das Risiko?
Über den FlawDesk Code Connector erhält ein externer KI-Client direkten Zugriff auf deinen Server. Dieser Zugriff ist so weitreichend wie die Rechte des hinterlegten SSH-Users:
- Dateizugriff — lesen und schreiben überall wo der User Rechte hat
- Shell-Befehle — Prozesse starten, Konfigurationen ändern, Pakete installieren
- Datenbank — Queries gegen alle erreichbaren Datenbanken
- Deployments — Dateien in beliebige Verzeichnisse schreiben
Ein root-User oder ein User ohne Einschränkungen bedeutet im Fehlerfall oder bei Missbrauch vollständigen Serverzugriff.
Dedizierten User anlegen
Lege einen separaten User an, der ausschließlich für den FlawDesk-Connector genutzt wird — nicht root, nicht dein persönlicher Account.
adduser --disabled-password --gecos "" flawdesk-agent
Weise diesem User nur Schreibrechte auf die Verzeichnisse zu, die er tatsächlich braucht:
chown -R flawdesk-agent:flawdesk-agent /var/www/meine-app
chmod 755 /var/www/meine-app
Alles was der User nicht braucht — andere Web-Verzeichnisse, Systemkonfigurationen, andere Datenbanken — sollte für ihn nicht erreichbar sein.
SSH-Key einschränken
In der authorized_keys-Datei des Users kannst du den Key zusätzlich einschränken. Für rsync-basierte Deployments:
command="rrsync /var/www/meine-app",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-ed25519 AAAA... dein-key
rrsync ist ein eingeschränktes rsync-Wrapper-Script, das nur Zugriff auf das angegebene Verzeichnis erlaubt. Es ist in den meisten Distributionen im Paket rsync enthalten.
Datenbankzugriff einschränken
Wenn der Connector Datenbankzugriff benötigt, lege einen dedizierten Datenbank-User an mit Rechten nur auf die relevanten Datenbanken:
CREATE USER 'flawdesk_agent'@'localhost' IDENTIFIED BY '...';
GRANT SELECT, INSERT, UPDATE, DELETE ON meine_app.* TO 'flawdesk_agent'@'localhost';
Kein GRANT ALL, kein Zugriff auf mysql.* oder andere Datenbanken.
Systemd-basierte Einschränkung (optional)
Für eine zusätzliche Isolation kannst du den User per Systemd auf bestimmte Pfade einschränken:
[Service]
User=flawdesk-agent ReadWritePaths=/var/www/meine-app ProtectSystem=strict ProtectHome=true NoNewPrivileges=true
Zusammenfassung
- Dedizierten User für den Connector anlegen (kein root)
- Dateisystem-Rechte auf das Notwendige beschränken
- Datenbank-User mit minimalen Rechten anlegen
- SSH-Key in
authorized_keysmitcommand=einschränken