MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Best Practices für MongoDB-Sicherheit

Ein entscheidender Aspekt bei der Verwaltung von Datenbanksystemen ist die Datenbanksicherheit. Das Versäumnis, eine gute Grundlage für die Sicherheit eines Datenbanksystems zu schaffen, kann zu einer Datenpanne führen, bei der ein Eindringling von dritter Seite unbefugten Zugriff darauf erhält. Folglich können Ereignisse wie dieses zu einer Schädigung des Markenrufs, Bußgeldern und Strafen wegen Nichteinhaltung, Gefährdung des geistigen Eigentums oder sogar zur Schließung des Unternehmens führen.

MongoDB – die beliebteste NoSQL-Datenbank – bietet eine Reihe von Tools, Kontrollen und Maßnahmen, die formuliert wurden, um eine Grundlage für die drei Säulen der Informationssicherheit zu schaffen – Vertraulichkeit, Integrität und Verfügbarkeit. Die Datensicherheit wird am häufigsten auf der Vertraulichkeitsebene aufgrund der besseren Benutzerfreundlichkeit und des besseren Zugriffs beeinträchtigt.

Welche Arten von Daten sollten Sie schützen

Wie andere Datenbanken beinhaltet MongoDB zwei Arten von Daten:

  1. Ruhige Daten – Dies sind Daten, die auf der Dateisystemfestplatte gespeichert sind.
  2. Daten während der Übertragung – Hierbei handelt es sich um Daten, die beispielsweise zwischen der Datenbank und einer Anwendung durch ein Netzwerk bewegt werden.

Um Ihre Daten in jeder Datenbank zu schützen, müssen Ihre Sicherheitsmaßnahmen Folgendes berücksichtigen:

  • Daten in den Datenbankdateien.
  • Mit der Datenbank verknüpfte Anwendungen.
  • Die Computer- und Netzwerkinfrastruktur, die für den Zugriff auf die Datenbank verwendet wird.
  • Der physische Datenbankserver und die zugrunde liegende Hardware.

MongoDB-Sicherheitscheckliste

Bevor Sie Ihre MongoDB-Produktionsbereitstellung einrichten, müssen Sie einen Mindestsicherheitsstandard berücksichtigen, um sicherzustellen, dass Ihre Bereitstellung sicher ist. Sehen Sie sich die folgende MongoDB-Sicherheitscheckliste an

  1. Legen Sie den Authentifizierungsmechanismus fest, indem Sie die Zugriffskontrolle aktivieren . Bevor der Zugriff auf die Datenbank zugelassen wird, muss die Benutzeridentität überprüft werden. MongoDB unterstützt in diesem Fall zwei Mechanismen:Der erste ist der Salted Challenge Response Authentication Mechanism (SCRAM), der Standard-Authentifizierungsmechanismus in MongoDB. Es verifiziert die bereitgestellten Anmeldeinformationen (Benutzername und Kennwort) anhand der Authentifizierungsdatenbank, und die X.509-Zertifikatsauthentifizierung wird sowohl für die Clientauthentifizierung als auch für die interne Authentifizierung von Replikatsatzmitgliedern und fragmentierten Clustern verwendet.

  2. Einrichten einer rollenbasierten Zugriffskontrolle . Jede Anwendung oder Person mit Zugriff auf die Datenbank sollte eine eindeutige Identität haben, die vom Benutzeradministrator erstellt wurde. Definieren Sie Rollen mit genauen Zugriffsrechten und weisen Sie sie Benutzern zu, die die Vorgänge ausführen müssen.

  3. Die Kommunikation zwischen Mongod, Mongos, Anwendungen und MongoDB sollte verschlüsselt sein . Die Verschlüsselung wird durch TLS/SSL-Konfiguration erreicht.

  4. Datenschutz . Wenn Sie die WiredTiger-Speicher-Engine für ruhende Daten verwenden, können Sie die Daten mit Verschlüsselung im Ruhezustand verschlüsseln. Wenn Sie eine andere Speicher-Engine verwenden, verschlüsseln Sie die Daten mithilfe der Dateisystem-, physischen oder Geräteverschlüsselung und fügen Sie die Dateisystemberechtigungen hinzu. Außerdem können Sie Felder in Dokumenten mit der clientseitigen Verschlüsselung auf Feldebene verschlüsseln, bevor Sie Daten vom Server weitergeben.

  5. Sicherer Netzwerkbetrieb . MongoDB sollte in einer vertrauenswürdigen Netzwerkumgebung ausgeführt werden, sodass nur vertrauenswürdige Clients Zugriff auf die Netzwerkschnittstelle und die Ports haben. Sie können dies erreichen, indem Sie den direkten SSH-Stammzugriff deaktivieren und das Setup mit Sicherheitsgruppen für eingehenden und ausgehenden Datenverkehr zu den MongoDB-Instanzen konfigurieren.

  6. Systemaktivitäten prüfen . Es ist sehr wichtig, die Benutzerzugriffsaktivitäten auf die Datenbank zu verfolgen. Das Audit ermöglicht es Administratoren, angemessene Kontrollen durchzuführen und eine ordnungsgemäße forensische Analyse zu ermöglichen. Einige Überwachungseinrichtungen wie MongoDB Enterprise bieten Filter für bestimmte Ereignisse wie Authentifizierungsereignisse, um die zu analysierenden Daten zu reduzieren.

  7. Aktivieren Sie sichere Konfigurationsoptionen beim Ausführen von MongoDB . Es ist ratsam, die Verwendung von JavaScript-Code einzuschränken, der von MongoDB unterstützt wird, z. B. mapReduce, $where und  $function. Sie können diese Optionen mit der Option --noscripting vollständig deaktivieren. Validieren Sie Eingabefelder mit Modulen wie Mongoose. Darüber hinaus können Sie net.writeObjectCheck verwenden, um sicherzustellen, dass alle von der Mongod-Instanz gespeicherten Dokumente gültige BSON sind.

  8. MongoDB mit einem dedizierten Benutzer ausführen . Es lohnt sich nicht, MongoDB auf einem Betriebssystem auszuführen, auf das mehrere Benutzer zugreifen können. Um auf der sicheren Seite zu sein, sollte MongoDB von einem dedizierten Systembenutzerkonto ausgeführt werden, das über Berechtigungen zum Zugriff auf Daten verfügt, jedoch nicht über unnötige Berechtigungen, die die Datenintegrität beeinträchtigen könnten.

Mangelhafte MongoDB-Sicherheitspraktiken, die vermieden werden sollten

In letzter Zeit gab es eine Zunahme von Datenbank-Hacking-Vorfällen, insbesondere MongoDB. Dies liegt nicht daran, dass MongoDB die Standards nicht erfüllt, um Sicherheitsbedenken auszuräumen, sondern vielmehr daran, dass Entwickler es versäumen, Best Practices für Sicherheit zu befolgen.

MongoDB ist ein Open-Source-DBMS, was bedeutet, dass manche Entwickler mehr wissen als andere. Dies bedeutet nicht immer, dass Ihre Datenbank einem externen Angriff ausgesetzt ist, es sei denn, Sie begehen einen der folgenden Fehler:

  1. Verwenden der Standardports . Es ist nichts Falsches daran, die Standardports (27017 und 27018) zu verwenden, aber Sie könnten manchmal vergessen, die Sicherheitsgruppen festzulegen, die für die Verwaltung des Datenverkehrs in Ihrem System verantwortlich sind. Hacker versuchen immer zuerst, mit Standardports auf die Datenbank zuzugreifen, bevor sie etwas anderes versuchen. Sie können MongoDB mit der Port-Option auf einem anderen Port ausführen, z. B. $mongo –port 23456. Es wird jedoch empfohlen, die Konfiguration in der Datei /etc/mongod.conf zu ändern, indem Sie die folgende Zeile mit Ihrer bevorzugten Portnummer bearbeiten:

    net:
    	port:27017


    MongoDB wird standardmäßig ohne Authentifizierung ausgeführt, was häufig ein Problem bei neuen Bereitstellungen war, die in die Produktion gehen. Wenn die Authentifizierung nicht aktiviert wird, kann jeder problemlos auf die Datenbank zugreifen. Erstellen Sie immer einen Benutzer mit rollenbasierten Zugriffsberechtigungen, um mit der MongoDB-Datenbank zu interagieren.

  2. Unsachgemäße Speicherung von Benutzeranmeldeinformationen . Einige Entwickler codieren den Benutzernamen und das Passwort fest in das Projekt, und wenn sie sie öffentlich machen, kann jeder darauf zugreifen, wodurch die Datenbank angreifbar wird.

  3. Fehler beim Beschränken des Datenbankzugriffs auf bekannte Netzwerkgeräte . In diesem Fall sollte man den Datenbankzugriff immer nur auf bekannte Anwendungen und Load Balancer über eine Whitelist beschränken. Dadurch wird die Verfügbarkeit der Datenbank auf unbekannte Netzwerke beschränkt, die eine Sicherheitsbedrohung darstellen könnten.

  4. SSL-Nutzung vermeiden . Die SSL-Authentifizierung ist sehr wichtig, um sicherzustellen, dass nur vertrauenswürdige Verbindungen zur Datenbank gelangen.

  5. Fehler bei der Verwendung von LDAP für die Passwortrotation . LDAP bindet Benutzer an ein Unternehmensverzeichnis, sodass bei einer Änderung ihrer Rolle oder wenn sie das Unternehmen verlassen, die Änderungen automatisch auf die Datenbankgruppe angewendet werden. Dadurch wird sichergestellt, dass ihr Zugriff auf Daten auf die Rolle beschränkt ist, der sie neu zugewiesen wurden, oder vollständig eingeschränkt ist, wenn sie das Unternehmen verlassen.

Hardening-Netzwerkinfrastruktur

Viele Male beginnen Sicherheitsbedrohungen auf der Ebene der Netzwerkgefährdung, da dies für die meisten Hacker am leichtesten zugänglich ist. Sie können nicht nur sicherstellen, dass nur vertrauenswürdige Hosts Zugriff auf MongoDB haben, sondern auch die Sicherheit durch Netzwerkhärtung verbessern. Die Netzwerkhärtung umfasst zwei Verfahren in Bezug auf MongoDB:

  1. Firewalls . Firewalls werden verwendet, um den eingehenden Datenverkehr von nicht vertrauenswürdigen Hosts zu begrenzen, die andernfalls die MongoDB-Datenbank externen Angriffen aussetzen würden. Für Windows-Betriebssysteme bietet die Netsh-Befehlszeilenschnittstelle Zugriff auf die Windows-Firewall. Auf Linux-Systemen bietet die iptables-Schnittstelle Zugriff auf die zugrunde liegende Netfilter-Firewall. Die Firewall filtert nicht vertrauenswürdige Hosts heraus und stellt sicher, dass nur Datenverkehr von vertrauenswürdigen Quellen mongod &mongos erreichen kann, und stellt außerdem eine Verbindung mit den vertrauenswürdigen Ausgängen her.

  2. Virtuelle private Netzwerke (VPNs) . VPNs ermöglichen es zwei Netzwerken, sich über ein verschlüsseltes und vertrauenswürdiges Netzwerk mit eingeschränktem Zugriff zu verbinden. Sie tun dies, indem sie eine Zertifikatsvalidierung und eine Auswahl an Verschlüsselungsprotokollen bereitstellen, die möglicherweise ein strenges Authentifizierungsniveau und die Identifizierung aller Clients erfordern. VPNs bieten einen sicheren Tunnel; Daher können Verbindungen, die mit VPNs zur MongoDB-Instanz erstellt wurden, Manipulationen und Man-in-the-Middle-Angriffe verhindern.

Abschluss

Wie bei allen Open-Source-Datenbanken sollte die Sicherheit für Ihre MongoDB-Infrastruktur oberste Priorität haben. Die Bereitstellung Ihrer MongoDB-Datenbank mit Standardeinstellungen ist ein klarer Weg in Richtung einer Sicherheitskatastrophe. Daher ist es wichtig, vollständig zu verstehen, wie die Sicherheit in MongoDB funktioniert, und alle Best Practices zu befolgen, um maximale Sicherheit zu gewährleisten. Am wichtigsten ist jedoch, dass die Prüfung von Benutzeraktivitäten, wie z. B. der Authentifizierung, einen Einblick in die Identifizierung von Schlupflöchern und die Planung für die Zukunft bietet, bevor es zu einer Katastrophe kommt.

Tools wie ClusterControl helfen Ihnen dabei, das Rätselraten bei der Datenbanksicherheit zu beseitigen und sicherzustellen, dass Ihre MongoDB-Bereitstellungen immer dem jeweiligen Sicherheitsmodell folgen. Mit ClusterControl können Sie Ihre Datenbanken, Zugriffskontrollen und Verschlüsselung für gespeicherte und übertragene Daten einfach konfigurieren. Wenn Sie es noch nicht getan haben, laden Sie ClusterControl noch heute herunter und starten Sie Ihre kostenlose 30-Tage-Testversion, um zu sehen, wie ClusterControl Ihnen helfen kann, die Sicherheit Ihrer MongoDB-Datenbank zu verwalten und zu verbessern.