So sichern Sie Ihre OrientDB-Datenbank unter Ubuntu 16.04

Einführung

OrientDB ist eine NoSQL-Datenbank mit mehreren Modellen und Unterstützung für Dokument- und Diagrammdatenbanken. Es ist eine Java-Anwendung und kann auf jedem Betriebssystem ausgeführt werden. Es ist auch eine vollständige ACID-Beschwerde mit Unterstützung für die Multi-Master-Replikation.

OrientDB ist sofort einsatzbereit, da sowohl die Verbindung zur Serverinstanz als auch die Verbindung zu einer Datenbank eine Authentifizierung erfordern. Andere Sicherheitsschemata wie die Kerberos-Authentifizierung und LDAP-Benutzer werden ebenfalls unterstützt, erfordern jedoch das Einrichten zusätzlicher Softwaresysteme.

In diesem Artikel konzentrieren wir uns stattdessen auf das Sichern einer Installation der Community Edition von OrientDB, wobei nur die standardmäßig verfügbaren Ressourcen verwendet werden. Insbesondere verschlüsseln Sie die OrientDB-Datenbank, beschränken den Zugriff auf den OrientDB-Webserver und die Serverinstanz und verwalten die OrientDB-Datenbankkonten sowohl über die Webbenutzeroberfläche als auch über die Konsole.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie Folgendes:

In diesem Artikel wird davon ausgegangen, dass OrientDB wie im ursprünglichen Installationsartikel im Verzeichnis/opt/orientdb installiert ist. /opt ist der traditionelle Speicherort für die Installation von Anwendungen von Drittanbietern unter Linux.

[[Schritt-1 - Einschränkung des Zugriffs auf den Orientdb-Webserver]] == Schritt 1 - Einschränken des Zugriffs auf den OrientDB-Webserver

OrientDB ist eine normale Webserver-Anwendung, die jedoch nicht für das Internet oder öffentliche Netzwerke geeignet ist. Der Managementzugriff darauf muss auf das lokale Netzwerk beschränkt sein.

Der erste Schritt zum Ausführen einer sicheren OrientDB-Anwendung ist das Sichern des Betriebssystems, auf dem sie ausgeführt wird. Sie sollten eine Firewall ausführen. Wenn dies nicht der Fall ist, befolgen Sie dieInitial Server Setup on Ubuntu 16.04 guide, um UFW einzurichten. Das ursprüngliche OrientDB-Installationshandbuch ermöglicht den Zugriff auf OrientDB Studio aus dem öffentlichen Netzwerk zu Testzwecken, indem2480 durch die Firewall portiert werden.

Wenn Sie sicherstellen möchten, dass der Zugriff aus dem Internet auf OrientDB Studio und die Konsole unabhängig von den Firewall-Einstellungen immer verweigert wird, müssen Sie nur einige Änderungen an der Konfigurationsdatei/opt/orientdb/config/orientdb-server-config.xml vornehmen.

Öffnen Sie diese Datei zum Bearbeiten.

sudo nano /opt/orientdb/config/orientdb-server-config.xml

Suchen Sie dann nach demlisteners-Tag:

/opt/orientdb/config/orientdb-server-config.xml

. . .

  
  
  . . .

. . .

Ändern Sie die Parameter vonip-address von0.0.0.0 in127.0.0.1.

/opt/orientdb/config/orientdb-server-config.xml


. . .
  
  
  . . .

. . .

Speichern und schließen Sie die Datei.

Wenn die Konfigurationsdatei geändert wird, während der OrientDB-Dämon ausgeführt wird, müssen Sie ihn unbedingt neu starten:

sudo systemctl restart orientdb

Dadurch werden alle Verbindungen zum Studio aus dem öffentlichen Internet getrennt. Versuchen Sie nun, eine Verbindung zum Studio herzustellen, indem Siehttp://your_server_ip:2480 in Ihrem Browser erneut aufrufen. Diesmal wird die Verbindung abgelehnt.

In diesem Schritt haben Sie sich auf die Sicherheit des externen Netzwerks konzentriert. Im nächsten Schritt werden Sie die OrientDB-Serverinstanz intern sicherer machen.

[[Schritt-2 - Sichern der Orientdb-Server-Instanz]] == Schritt 2 - Sichern der OrientDB-Serverinstanz

Hier erfahren Sie, wie Sie das Gastkonto löschen und die Berechtigungen der OrientDB-Konfigurationsdatei ändern.

Eine Möglichkeit zur Erhöhung der Serversicherheit besteht darin, dem OrientDB-Benutzer Lese- und Schreibzugriff auf das Verzeichnisconfigonly zu gewähren. Die Standardberechtigung für dieses Verzeichnis lautet755, es muss jedoch nicht einmal das Ausführungsbit gesetzt sein.

sudo chmod 600 /opt/orientdb/config

Und um die Dinge ein wenig zu reduzieren, müssen Sie die Berechtigung der Konfigurationsdatei selbst erhöhen.

sudo chmod 600 /opt/orientdb/config/orientdb-server-config.xml

[.Hinweis]##

Note: Diese Berechtigungen werden standardmäßig ina future version of OrientDB auf600 gesetzt. Zum Zeitpunkt der Veröffentlichung sind diese Schritte jedoch noch erforderlich.

Die restlichen Sicherheitstipps in diesem Lernprogramm werden über die OrientDB-Konsole ausgeführt. Stellen Sie also jetzt eine Verbindung her.

sudo /opt/orientdb/bin/console.sh

Jede OrientDB-Serverinstanz kann mehrere OrientDB-Datenbanken unterstützen. Jede Serverinstanz wird standardmäßig mit zwei Benutzerkonten geliefert:guest undroot. Sie hatten die Möglichkeit, das Kennwort für das Root-Konto festzulegen, als Sie den OrientDB-Server zum ersten Mal installiert und gestartet haben. Die Hash-Form des Passworts wird in der OrientDB-Konfigurationsdatei/opt/orientdb/config/orientdb-server-config.xml gespeichert. Die Hash-Form des automatisch generierten Kennworts für das Gastkonto wird ebenfalls in dieser Datei gespeichert.

In der OrientDB-Konsole können Sie Informationen zu beiden Konten anzeigen, indem Sie Folgendes eingeben:

list server users

[.Hinweis]##

Note: Derzeit gibt esa bug in OrientDB, die den folgenden Fehler verursachen, wenn Sie versuchen,list server users auszuführen:

OutputError: com.orientechnologies.orient.core.exception.OConfigurationException: Cannot access to file ../config/orientdb-server-config.xml

Wenn Sie diesen Fehler erhalten, können Sie ihn umgehen, indem Sie die OrientDB-Konsole verlassen und nach dem Wechseln in das Verzeichnisbinerneut eine Verbindung herstellen.

cd /opt/orientdb/bin
sudo ./console.sh

Dann können Sielist server users ausführen und es wird wie erwartet funktionieren.

Die Ausgabe gibt an, über welche Berechtigungen beide Konten verfügen. Das Konto vonguestverfügt über eingeschränkte Berechtigungen, aber der Benutzer vonrootdarf alle Aufgaben ausführen. Das ist, was der Stern anstelle seiner Berechtigungen anzeigt:

OutputSERVER USERS

- 'guest', permissions: connect,server.listDatabases,server.dblist
- 'root', permissions: *

Selbst mit eingeschränkten Berechtigungen möchten Sie das Gastkonto möglicherweise nicht behalten. Verwenden Sie den Befehldrop, um es von der Konsole zu löschen.

drop server user guest

Wenn Sie das nächste Mallist server users von der OrientDB-Konsole aus verlassen, wird nur der Benutzer vonrootangezeigt. Wenn Sie in die Datei/opt/orientdb/config/orientdb-server-config.xmlchauen, werden Sie feststellen, dass das Kontoguestaus dem Benutzer-Tag gelöscht wurde.

Jetzt, da die Serverinstanz sicherer ist, machen Sie die Datenbank selbst sicherer.

[[Schritt 3 - Einschränkung des Zugriffs auf die Orient-Datenbank]] == Schritt 3 - Einschränkung des Zugriffs auf die OrientDB-Datenbank

Der nächste Schritt zum Sichern Ihrer OrientDB-Installation besteht darin, den unbefugten Zugriff auf die Datenbank selbst zu erschweren.

Standardmäßig verfügt jede von Ihnen erstellte OrientDB-Datenbank über drei integrierte Konten mit den folgenden Benutzernamen:admin,reader undwriter, wobei jedes Kennwort mit dem Benutzernamen identisch ist. Dies ist gut zum Testen, aber nicht für ein Produktionssystem. Zumindest sollten Sie die Passwörter für alle drei Konten ändern. Noch besser ist es, wenn Sie nicht benötigte Elemente löschen oder aussetzen.

Wie Sie diese Konten verwalten, hängt von Ihren Anforderungen und Ihrer Umgebung ab. In diesem Tutorial erfahren Sie, wie Sie das Kennwort desadmin-Kontos ändern, daswriter-Konto sperren und dasreader-Konto löschen. Sie können jede dieser drei Aktionen über die OrientDB-Konsole und das browserbasierte OrientDB Studio ausführen.

Benutzerkonten über die OrientDB-Konsole verwalten

Um Benutzerkonten von der Konsole aus zu ändern, müssen Sie eine Verbindung zu der Datenbank herstellen, deren Konten Sie verwalten möchten. In diesem Beispiel wird eine Verbindung zurGratefulDeadConcerts-Datenbank hergestellt, einer Beispieldatenbank, die mit jeder OrientDB-Installation geliefert wird. Dabei werden der Benutzer vonadminund das Standardkennwort (admin) verwendet:

connect remote:127.0.0.1/GratefulDeadConcerts admin admin

Alternativ können Sie auch eine Verbindung mit dem Konto und dem Kennwortrootdes OrientDB-Servers herstellen. In beiden Fällen sollte sich die Eingabeaufforderung ändern, um anzuzeigen, dass Sie mit einer bestimmten Datenbank verbunden sind.

OutputConnecting to database [remote:127.0.0.1/GratefulDeadConcerts] with user 'admin'...OK
orientdb {db=GratefulDeadConcerts}>

Geben Sie Folgendes ein, um die Benutzer der Datenbank aufzulisten. ouser ist der OrientDB-Datensatz, in dem Benutzerkennwörter gespeichert sind:

select from ouser

Die vollständige Ausgabe sollte wie folgt aussehen. Beachten Sie, dass alle drei Konten den StatusACTIVEhaben.

Output+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+
|#   |@RID|@CLASS|name  |password                                                                                                                     |status|roles |
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+
|0   |#5:0|OUser |admin |{PBKDF2WithHmacSHA256}6668FC52BF1D2883BEB4DC3A0468F734EA251E6D5B13AC51:39B1E812DEC299DC029A7922E206ED674EB52A6D6E27FE84:65536|ACTIVE|[#4:0]|
|1   |#5:1|OUser |reader|{PBKDF2WithHmacSHA256}1168D930D370A0FB1B6FA11CAFF928CCB412A153C127C25F:0C287793DF156FB72E6E2D9D756E616995BBAC495D4A1616:65536|ACTIVE|[#4:1]|
|2   |#5:2|OUser |writer|{PBKDF2WithHmacSHA256}22D3068CC3A39C08A941B4BF8B4CEB09D2609C20661529E3:8D6DA7FB4AF329234CA643663172EE913764E3096F63D007:65536|ACTIVE|[#4:2]|
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+------+------+

3 item(s) found. Query executed in 0.736 sec(s).

Verwenden Sie den folgenden Befehl, um das Kennwort für den Benutzer vonadminzu ändern:

update ouser set password = 'new_account_password' where name = 'admin'

Um den Benutzer vonwriterzu deaktivieren, ändern Sie den Status vonACTIVE inSUSPENDED.

update ouser set status= 'SUSPENDED' where name = 'writer'

Verwenden Sie Folgendes, um das Konto vonreadervollständig aus der Datenbank zu löschen:

drop user reader

Wenn Sie alle oben genannten Schritte ausgeführt und die Liste der Konten erneut angezeigt haben, wird die folgende Ausgabe angezeigt. Eines der Konten fehlt und ein anderes ist gesperrt:

Output+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+
|#   |@RID|@CLASS|name  |password                                                                                                                     |status   |roles |
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+
|0   |#5:0|OUser |admin |{PBKDF2WithHmacSHA256}6668FC52BF1D2883BEB4DC3A0468F734EA251E6D5B13AC51:39B1E812DEC299DC029A7922E206ED674EB52A6D6E27FE84:65536|ACTIVE   |[#4:0]|
|1   |#5:2|OUser |writer|{PBKDF2WithHmacSHA256}22D3068CC3A39C08A941B4BF8B4CEB09D2609C20661529E3:8D6DA7FB4AF329234CA643663172EE913764E3096F63D007:65536|SUSPENDED|[#4:2]|
+----+----+------+------+-----------------------------------------------------------------------------------------------------------------------------+---------+------+

Nach Abschluss aller Benutzerverwaltungsaufgaben können Sie die Verbindung zur Datenbank trennen (dh schließen), indem Sie Folgendes eingeben:

disconnect

Verwalten von OrientDB-Benutzerkonten in OrientDB Studio

In diesem Abschnitt erfahren Sie, wie Sie OrientDB-Benutzerkonten in OrientDB Studio verwalten. Starten Sie das Studio zunächst, indem Siehttp://your_server_ip:2480 in Ihrem Browser aufrufen. Wenn Sie in Schritt 1 den Zugriff auf Studio eingeschränkt haben, müssen Sie ihn erneut zulassen.

Der erste angezeigte Bildschirm ist ein Anmeldebildschirm. Melden Sie sich mitroot und dem Kennwort an, das Sie bei der Installation von OrientDB angegeben haben. Klicken Sie nach dem Anmelden auf die RegisterkarteSecurity. Auf dieser Seite werden alle drei Standardbenutzer angezeigt.

So ändern Sie das Kennwort des Kontos vonadmin:

  1. Klicken Sie in der SpalteActions aufEDIT, um ein kleines FensterEdit User aufzurufen.

  2. Ändern Sie das Passwort im Feldpassword.

  3. Klicken Sie aufSAVE USER.

So löschen Sie das Konto vonreader:

  1. Klicken Sie in der SpalteActionsdes Kontos auf die SchaltflächeDELETE.

So sperren Sie das Konto vonwriter:

  1. Klicken Sie unterActions aufEDIT. Daraufhin wird ein kleinesEdit User-Fenster geöffnet.

  2. Wählen Sie im Pulldown-MenüStatusSUSPENDED aus.

  3. Klicken Sie aufSAVE USER.

Im nächsten Schritt erfahren Sie, wie Sie eine OrientDB-Datenbank im Ruhezustand verschlüsseln.

[[Schritt 4 - Verschlüsseln der Orientdb-Datenbank] == Schritt 4 - Verschlüsseln der OrientDB-Datenbank

OrientDB unterstützt verschlüsselte Datenbanken, wodurch Sie zusätzliche Sicherheit für Ihre gespeicherten Daten erhalten. Sie können eine OrientDB-Datenbank nur beim Erstellen verschlüsseln. Wenn Sie eine vorhandene Datenbank verschlüsseln müssen, müssen Sie sie exportieren und in eine verschlüsselte Datenbank importieren. In diesem Abschnitt erfahren Sie, wie Sie festlegen, dass eine Datenbank zum Zeitpunkt der Erstellung verschlüsselt werden soll.

OrientDB unterstützt sowohl den AES- als auch den DES-Verschlüsselungsalgorithmus. AES wird jedoch bevorzugt, da es stärker ist. Wir müssen den Verschlüsselungsschlüssel festlegen, die Datenbank erstellen und die Verschlüsselungsmethode (AES oder DES) angeben. Beachten Sie, dass die Länge des Verschlüsselungsschlüssels 24 Zeichen und die letzten beiden Zeichen== betragen müssen.

Um einen Verschlüsselungsschlüssel zu generieren, können Siepwgen verwenden, ein Tool zur Kennwortgenerierung.

sudo apt-get install pwgen

Generieren Sie dann mit dem folgenden Befehl einen einzelnen 24-stelligen Schlüssel, der auf== endet:

echo `pwgen 22 1`==

Denken Sie daran, diesen Schlüssel an einem sicheren Ort aufzubewahren, wie Sie es mit einem Passwort tun würden. Geben Sie zum Festlegen des Verschlüsselungsschlüssels für eine neue Datenbank, die Sie erstellen möchten, Folgendes in die OrientDB-Konsole ein:

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Erstellen Sie dann die verschlüsselte Datenbank mit diesem Schlüssel. Dadurch wird die verschlüsselte, dokumentbasierte Datenbank im lokalen Dateisystem (plocal) erstellt.

create database plocal:/opt/orientdb/databases/name_of_encrypted_db root root_password plocal document -encryption=aes

Sie werden automatisch mit der neuen Datenbank verbunden, und die Eingabeaufforderung ändert sich entsprechend. Um die Verbindung zur Datenbank zu trennen, geben Sie einfach Folgendes ein:

encrypted-db}>'>disconnect

Beachten Sie, dass der zum Verschlüsseln einer OrientDB-Datenbank verwendete Verschlüsselungsschlüssel nicht im System gespeichert ist. Wenn Sie über die Konsole mit der Datenbank interagieren möchten, müssen Sie denselben Befehl eingeben, den Sie zum Festlegen des Verschlüsselungsschlüssels verwendet haben.

config set storage.encryptionKey Ohjojiegahv3tachah9eib==

Um die Datenbank zu öffnen, geben Sie Folgendes ein:

connect plocal:/opt/orientdb/databases/name_of_encrypted_db admin admin_password

Beachten Sie, dass Sie in OrientDB Studio zwar eine neue Datenbank erstellen können, jedoch keine verschlüsselte. Zum Zeitpunkt der Veröffentlichung können Sie nur über die Konsole eine verschlüsselte Datenbank erstellen.

Fazit

In diesem Lernprogramm haben Sie den Zugriff auf eine Installation von OrientDB eingeschränkt, die Benutzerkonten sowohl über die Konsole als auch über die Webbenutzeroberfläche verwaltet und auch eine ruhende OrientDB-Datenbank verschlüsselt. Dies sind grundlegende, aber wichtige Sicherheitskonfigurationen, die Sie vornehmen können, um das Sicherheitsprofil Ihres OrientDB-Servers und Ihrer Datenbanken zu verbessern.

Derzeit können Sie auf zusätzliche Informationen zur OrientDB-Sicherheit zugreifen, indem Siethis OrientDB documentation zu diesem Thema besuchen.