DE EN
Code & Deployment SSH absichern

SSH absichern

⚠️ Ein KI-Client mit aktivem Connector-Zugang kann Dateien lesen und schreiben, Shell-Befehle ausführen, Datenbank-Queries starten und Deployments durchführen — alles unter dem hinterlegten SSH-User. Die Absicherung dieses Users ist deshalb kritisch.

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

⚠️ Diese Einschränkungen greifen nur für Prozesse, die über diese Systemd-Unit gestartet werden — nicht für direkte SSH-Logins.

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_keys mit command= einschränken