.NET

Sicherheit und Mehrbenutzer-Server

Dieses Kapitel fasst zusammen, was OmniDB zum Schutz gespeicherter Zugangsdaten und eines gemeinsam genutzten Mehrbenutzer-Servers unternimmt und was das für Sie als Administrator oder Benutzer bedeutet. Zur Installation und Veröffentlichung des Servers siehe omnidb-server bereitstellen; zur Passwortverwaltung auf der Kommandozeile siehe OmniDB-Konfigurationstool.

„Server-Modus“ bedeutet im Folgenden omnidb-server, gestartet ohne -A — eine Mehrbenutzer-Instanz, an der man sich über einen Browser anmeldet, unabhängig davon, ob sie nur auf Loopback oder auf einer Netzwerkadresse (-H) lauscht. Die Desktop-App ist immer ein Einzelbenutzer-System.

Gespeicherte Passwörter sind verschlüsselt

In einer Verbindung gespeicherte Datenbankpasswörter, SSH-Passwörter/-Passphrasen und private SSH-Schlüssel werden verschlüsselt (AES-256-GCM), bevor sie in die Benutzerdatenbank von OmniDB, omnidb.db, geschrieben werden. Der Schlüssel liegt nicht in dieser Datei: Er wird im Geheimnisspeicher des Betriebssystems aufbewahrt — im macOS-Schlüsselbund, in der Windows-Anmeldeinformationsverwaltung oder im Linux Secret Service —, sodass eine Kopie von omnidb.db allein sie nicht preisgibt.

Wo kein Geheimnisspeicher erreichbar ist (typischerweise auf einem Linux-Server ohne grafische Oberfläche), legt OmniDB den Schlüssel stattdessen in einer Datei namens .connection_secret_key (nur für den Eigentümer lesbar) im OmniDB-Home-Verzeichnis ab; sobald diese Datei existiert, wird sie immer verwendet. In diesem Fall gilt:

Vorhandene unverschlüsselte Einträge aus älteren Versionen werden beim ersten Start einer neueren Version automatisch verschlüsselt. Wenn Sie ein Passwort lieber gar nicht speichern möchten, lassen Sie es im Verbindungsformular leer: OmniDB fragt dann bei Bedarf danach und hält es nur im Arbeitsspeicher, für 30 Minuten, für Ihre Sitzung (siehe Benutzer und Verbindungen erstellen).

Das anfängliche Konto admin

Eine neue Installation im Server-Modus legt einen Superuser admin mit einem Zufallspasswort an, das einmalig in die Log-Ausgabe des Servers geschrieben wird:

omnidb-server: initialized a new app database — initial login: admin / <password> (shown only once; change it under Settings, or run: omnidb-server --set-password admin)

Melden Sie sich damit an und ändern Sie es unter Einstellungen > Passwort, oder legen Sie vorab auf der Kommandozeile ein Passwort Ihrer Wahl fest:

omnidb-server --set-password admin [-d /path/to/homedir]

Die Desktop-App zeigt nie eine Anmeldeseite; sie meldet sich automatisch an ihrem eigenen lokalen, nur auf Loopback lauschenden Server an.

Anmeldeschutz und Sitzungen

Einschränkungen im Server-Modus

Da jede Verbindung eines Mehrbenutzer-Servers vom Serverprozess auf dem Serverrechner geöffnet wird, sind einige Verbindungsoptionen eingeschränkt, mit denen sich eigene Dateien des Servers lesen ließen:

Für die Desktop-App gelten diese Einschränkungen nicht, dort sind die Dateien Ihre eigenen.

Öffentliche Verbindungen

Eine als Öffentliche Verbindung? markierte Verbindung kann von jedem OmniDB-Benutzer auf dem Server verwendet, aber nur von ihrem Eigentümer bearbeitet werden. Für alle anderen gilt:

Exportierte Dateien

Abfrage-Exporte und DBML-Exporte werden unter zufälligen Namen in den Ordner temp des Servers geschrieben und können nur von dem Benutzer heruntergeladen werden, der sie erstellt hat. Sie werden nach 24 Stunden automatisch gelöscht.

SSH-Hostschlüssel

SSH-Tunnel und SSH-Terminalverbindungen prüfen den Hostschlüssel des Servers gegen die Datei ~/.ssh/known_hosts des Betriebssystembenutzers, unter dem omnidb-server läuft. Ein unbekannter oder geänderter Hostschlüssel wird abgelehnt — OmniDB vertraut einem Host beim ersten Kontakt nicht stillschweigend. Fügen Sie den Host einmalig von diesem Konto aus hinzu, zum Beispiel:

ssh [email protected]        # accept the key once
# or
ssh-keyscan ssh-server.example.com >> ~/.ssh/known_hosts

Netzwerkzugriff

Es gibt kein eingebautes TLS. Lassen Sie omnidb-server auf 127.0.0.1 (der Voreinstellung) hinter einem TLS-terminierenden Reverse Proxy laufen, statt einfaches HTTP mit -H 0.0.0.0 zu veröffentlichen — siehe omnidb-server bereitstellen. Solange der Server an Loopback gebunden ist, beantwortet er nur Anfragen, die an 127.0.0.1, localhost oder [::1] mit seinem eigenen Port gerichtet sind, was ihn vor DNS-Rebinding-Angriffen aus Webseiten schützt. Sitzungs-Cookies werden als Secure markiert, wenn die Anfrage über TLS oder mit X-Forwarded-Proto: https eintrifft, und alle zustandsändernden Anfragen sind gegen Cross-Site Request Forgery geschützt.