SlideShare ist ein Scribd-Unternehmen logo
MongoDB
Security-Tipps gegen Hacker
Gregor Biswanger | Freier Dozent, Berater, Trainer und Autor
about.me/gregor.biswanger
Über mich
 Freier Dozent, Berater und Trainer
 Schwerpunkte Softwarearchitektur, XAML, Web
und Cross-Plattform Entwicklung
 Technologieberater für die Intel Developer Zone
 Sprecher auf Konferenzen und User Groups
 Freier Autor für heise.de, dotnetpro,
WindowsDeveloper und viele weitere
Fachmagazine
 Video-Trainer bei video2brain und MicrosoftGregor Biswanger
Microsoft MVP, Intel Black Belt &
Intel Software Innovator
cross-platform-blog.de
about.me/gregor.biswanger
Legal Disclaimer
The information provided in this session is to be used for educational
purposes only. The speaker is in no way responsible for any misuse of
the information provided. All of the information in this session is
meant to help the attendees develop a hacker defense attitude in
order to prevent the attacks discussed. In no way should you use the
information to cause any kind of damage directly or indirectly. The
word „Hack“ or „Hacking“ in this session should be regarded as
„Ethical Hack“ or „Ethical hacking“ respectvely.
Unser Reiseplan
 Aktuelles Problem
 Security von MongoDB
 Basis Authentifizierung
 Zugriff mit Authentifizierung
 Robomongo
 Setup-Script zur Authentifizierung
 Weitere Top Security Tipps
Aktuelles
Problem
So „einfach“ wird MongoDB
gehackt
MongoDB Apocalypse 2017
 Bei MongoDB ist per
Standard keine Security aktiv
 Anfang 2017 wurden
mehrere tausend
MongoDB-Server gehackt
 Die Daten wurden geklaut
und anschließend durch
eine Lösegeld Aufforderung
ersetzt
Das kann EUCH auch passieren!
Suchmaschinen von Servern mit „offenen“ Ports
 https://www.shodan.io
 https://censys.io
 https://www.zoomeye.org
Quelle: zoomeye
Shodan.io
Gefundene MongoDB Server ohne Security
Eigenes Netzwerk schon gescannt?
 Kostenloser Security Port Scanner: NMAP
 https://nmap.org
 Läuft unter Windows, Mac und Linux
 Nmap ist sowohl bei Angreifern als auch bei Administratoren sehr
beliebt, da es sehr effizient und zuverlässig arbeitet.
 In einigen Filmen kommt Nmap vor: In Matrix Reloaded hackt sich der
Charakter Trinity mithilfe des 2001 entdeckten SSH1-CRC32-Exploit in
ein Kraftwerk ein, nachdem sie den Rechner mit Nmap gescannt hat.
 In dem Film Battle Royale wird der Quelltext von Nmap gezeigt. Des
Weiteren wird in Das Bourne Ultimatum die damalige Beta-Version 4.01
mit der grafischen Oberfläche Zenmap benutzt.
Security von
MongoDB
Die Basis von allem
Gefährdende Schnittstellen
Network Storage Access
MongoDB V3
Basic
Authentication
Robust
Authentication
SSL
Server-Server
Authentication
LDAP / Kerberos Encryption At Rest
Kein öffentlichen Zugriff auf die MongoDB!
Application
Mongo
Public / Other
Firewall Regeln
 Zugriff nur auf den Application-Server beschränken
 Zugriff nur auf den Mongo-Port beschränken
 Am besten keinen Standard Mongo-Port verwenden
Mongo Server IP Konfiguration
 In der Mongo Konfigurationsdatei
ebenfalls nur erlaubte IP-Adressen
hinterlegen
 Verwende dazu die bindIp Option
 Oder auch als Start-Parameter
„mongod --bind_ip 255.255.255.255“
 Lokale IP-Adressen werden immer
erlaubt
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
...
Basis
Authentifizierung
Der Standard von Mongo
Authentifizierung und Autorisierung
„Wer bist du?“
„Was möchtest du machen?“
„OK!“
„Bob“
„Eine Collection lesen“
Es gibt eine Vielzahl an Aktionen
„Was möchtest du
machen?“
„Eine Collection lesen“
 Read Collection
 Write Document
 List Collection
 Create User
 Create Database
 Backup
 Restore
 Administer Shards
 Kill Cursor
 …
Autorisierung mit Rollen
„Was möchtest du
machen?“
„Eine Collection lesen“
 readWrite
 Read Collection
 Write Document
 List Collection
 …
 userAdmin
 Create User
 Grant User Permissions
 …
 dbAdmin
 dbStats
 repairDatabase
 …
Die Rolle: Root
 Darf ALLES!
 Sollte so gut wie gar nicht benutzt zum Einsatz kommen!
 Darf niemand weitergegeben werden!
Die Rolle: userAdminAnyDatabase
 Darf sehr viel!
 Sollte nur zum Verwalten von Benutzer zum Einsatz kommen
 Kann Benutzer anlegen
 Kann Rechte von Benutzer verwalten
 Kann sich selbst höhere Rechte geben
Die Rolle: read
 Lesen von Collections
 Nur auf speziell hinterlegte Datenbank
Die Rolle: readWrite
 Lesen und schreiben von Collections
 Nur auf speziell hinterlegte Datenbank
Die ersten Schritte zum Einrichten der internen
Authentifizierung
1. Starte Mongo ohne Authentifizierung (Automatisch Root-Rechte)
2. Lege einen Benutzer an mit der Rolle userAdminAnyDatabase für
die interne admin Datenbank
3. Starte Mongo erneut mit Authentifizierung
4. Einloggen mit der Mongo-Shell und dem neuen Admin-Benutzer
Account
5. Wechsle zum Kontext der gewünschten Datenbank und erzeuge
von dort aus einen Benutzer mit passenden Rollen
6. Ggf. eigene Rollen erzeugen oder Benutzer explizit einzelne
Aktionen zuweisen
1. Starte Mongo ohne Authentifizierung (Automatisch Root-Rechte)
2. Lege einen Benutzer an mit der Rolle userAdminAnyDatabase für
die interne admin Datenbank
3. Starte Mongo erneut mit Authentifizierung
4. Einloggen mit der Mongo-Shell und dem neuen Admin-Benutzer
Account
5. Wechsle zum Kontext der gewünschten Datenbank und erzeuge von
dort aus einen Benutzer mit passenden Rollen
Neuen Benutzer testen
Zugriff mit
Authentifizierung
Von einer Node.js-Applikation
Authentifizierung via Connection-String
const MongoClient = require('mongodb').MongoClient;
// Connection URL
var url = 'mongodb://appUser:123456@localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function (error, db) {
console.log("Connected successfully to server");
db.close();
});
Authentifizierung via Code (Besser)
const MongoClient = require('mongodb').MongoClient;
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function (error, db) {
console.log('Connected successfully to server');
db.authenticate('appUser', '123456', () => {
console.log('Logged in as appUser');
db.close();
});
});
Zugriff mit
Robomongo
Tooling
Robomongo
 Kostenloses MongoDB
Management Tool
 Läuft unter Windows, Mac
und Linux
 https://robomongo.org
Setup-Script der
Authentifizierung
Zur Automatisierung
Scripting für die Mongo Shell
 Ermöglicht das automatische Erstellen der Datenbank oder das
verarbeiten von Administrationsaufgaben
 Wird in JavaScript geschrieben
 Nicht alle gewohnten JavaScript-Funktionen können genutzt
werden
 Wird nicht innerhalb einer Node.js-Instanz ausgeführt
 Möglichkeiten und Dokumentation unter:
 https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-
shell/#differences-between-interactive-and-scripted-mongo
Setup-Script zur Authentifizierung
var db = connect('localhost:27017/admin');
print('Create siteUserAdmin...');
var siteUserAdmin = {
user: 'siteUserAdmin',
pwd: '123456',
roles: [
{
role: 'userAdminAnyDatabase',
db: 'admin'
}
]
};
db.createUser(siteUserAdmin);
print('Switch to myproject db...');
db = db.getSiblingDB('myproject');
print('Create appUser...');
var appUser = {
user: 'appUser',
pwd: '123456',
roles: [
{
role: 'readWrite',
db: 'myproject'
}
]
};
db.createUser(appUser);
print('Finish! Your Database is ready...');
Script ausführen
Security-Tipps Gewappnet sein
Verschlüsselte Kommunikation
 TLS/SSL für eingehende und ausgehende Kommunikation einsetzen
 Schutz gegen Man-in-the-Middle-Angriff
 Dokumentation:
 https://docs.mongodb.com/manual/tutorial/configure-ssl/
 mongod --sslMode requireSSL --sslPEMKeyFile /etc/ssl/mongodb.pem
Datenbank Dateien verschlüsseln
 Ab Version 3.2 gibt es Encrypted Storage Engine
 MongoDB Enterprise only
 Nur verfügbar für die WiredTiger Storage Engine (Normal Standard)
 Dokumentation:
 https://docs.mongodb.com/manual/core/security-encryption-at-rest
 https://docs.mongodb.com/manual/tutorial/configure-encryption
Backup System hinterlegen
 Das Tool MongoDB OPS Manager ermöglicht das automatisierte
Erzeugen von Backups
 MongoDB Enterprise only
 Dokumentation:
 https://docs.opsmanager.mongodb.com/current/tutorial/nav/backup-use
Mongo Shell Script JavaScript Support deaktivieren
 Auf dem Production-System den Script JavaScript Support
deaktivieren
 Es werden nur Mongo spezifische Scripts erlaubt (wire protocol)
 MongoDB mit folgenden Parameter ausführen:
 mongod --dbpath=c:temp --auth --noscripting
Monitoring aktivieren
 Das Tool MongoDB OPS Manager ermöglicht das automatisierte
Benachrichtigen (Alerts) bei sicherheitsrelevanten Aktionen
 MongoDB Enterprise only
 Dokumentation:
 https://docs.opsmanager.mongodb.com/current/tutorial/manage-alert-
configurations/
Regelmäßig Updaten
 MongoDB regelmäßig Updaten um
sich vor neuen Exploits zu schützen
 Hacker haben dafür eine Datenbank
und greifen bei einer Attacke darauf
zu:
 https://www.exploit-db.com
Mongoaudit einsetzen
 Open-Source Tool zum Testen der
MongoDB Security Einstellungen
 https://mongoaud.it
Letzter Tipp: Keine Security-Tipps ignorieren
http://about.me/Gregor.Biswanger
Ich freue mich auf Feedback!
Vielen Dank!

Weitere ähnliche Inhalte

PPTX
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
PDF
Einführung in Clean Code mit .NET - Teil 1
PDF
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
PDF
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
PDF
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
PPTX
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
PDF
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
PPTX
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Einführung in Clean Code mit .NET - Teil 1
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
digitalSTROM Developer Day 2011: digitalSTROM bindet auch externe Komponenten...
Roadshow: Einstieg in die Hybrid-App Entwicklung mit dem Intel XDK und Apache...

Was ist angesagt? (20)

PDF
Docker und Kubernetes Patterns & Anti-Patterns
PPTX
Automatischer Build mit Maven
PDF
Node.js Security
PPTX
Dockerize It - Mit apex in die amazon cloud
PPTX
Vagrant, Puppet, Docker für Entwickler und Architekten
PDF
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
PDF
HTML5 und node.js Grundlagen
PDF
Hendrik Jungnitsch: Software verpacken mit Docker
PDF
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
PDF
EntwicklerCamp 2014 - DOTS reloaded
PDF
docker.io - Secure And Portable Containers Made Easy
PDF
Entwicklungsumgebungen - Packer, Vagrant, Puppet
PDF
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
PDF
JavaScript für Java-Entwickler W-JAX 2013
PDF
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
PDF
Infrastructure as Code - BaselOne 17
PDF
systemd & Docker
PPTX
Windows 10 IoT Core
ODP
Deploy Magento Shops with Capistrano v3
PPTX
Tipps und Tricks im Umgang mit Docker
Docker und Kubernetes Patterns & Anti-Patterns
Automatischer Build mit Maven
Node.js Security
Dockerize It - Mit apex in die amazon cloud
Vagrant, Puppet, Docker für Entwickler und Architekten
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
HTML5 und node.js Grundlagen
Hendrik Jungnitsch: Software verpacken mit Docker
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
EntwicklerCamp 2014 - DOTS reloaded
docker.io - Secure And Portable Containers Made Easy
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
JavaScript für Java-Entwickler W-JAX 2013
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
Infrastructure as Code - BaselOne 17
systemd & Docker
Windows 10 IoT Core
Deploy Magento Shops with Capistrano v3
Tipps und Tricks im Umgang mit Docker

Ähnlich wie MongoDB: Security-Tipps gegen Hacker (20)

PDF
Einführung in Puppet und Vagrant
PDF
Yes zu NoSQL mit MongoDB für .NET-Entwickler
PDF
Webanwendungen - Installation, Konfiguration und Administration
PDF
MongoDB - Big Data mit Open Source
PPTX
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
PPTX
Webinar: Online Security
PDF
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
PDF
Windows Kernel Programming Second Edition Pavel Yosifovich
PPTX
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
PDF
Der oracle dba_und_seine_passwoerter
PDF
Software Entwicklung im Team
PPTX
MongoDB Munich 2012: Spring Data MongoDB
PDF
PDF
Sicherheit in Single-Page-Web-Anwendungen
PDF
Tipps und Skripts aus dem Leben eines Connections Admins
PDF
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
PPT
Dnug35 ak-dev.071111-beyond
PDF
High Security PHP Applications
PPTX
Ionic 2 - Hybridapps auf Steroiden
PDF
TYPO3 5.0 - Der aktuelle Stand der Zukunft
Einführung in Puppet und Vagrant
Yes zu NoSQL mit MongoDB für .NET-Entwickler
Webanwendungen - Installation, Konfiguration und Administration
MongoDB - Big Data mit Open Source
Back to Basics – Webinar 2: Ihre erste MongoDB-Anwendung
Webinar: Online Security
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
Windows Kernel Programming Second Edition Pavel Yosifovich
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Der oracle dba_und_seine_passwoerter
Software Entwicklung im Team
MongoDB Munich 2012: Spring Data MongoDB
Sicherheit in Single-Page-Web-Anwendungen
Tipps und Skripts aus dem Leben eines Connections Admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
Dnug35 ak-dev.071111-beyond
High Security PHP Applications
Ionic 2 - Hybridapps auf Steroiden
TYPO3 5.0 - Der aktuelle Stand der Zukunft

Mehr von Gregor Biswanger (6)

PDF
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
PDF
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
PPTX
Clevere Tipps zum Thema Facebook Posts
PDF
Responsive Webdesign mit Bootstrap
PDF
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
PPT
Multi Touch.Prio.Conference 2009
MongoDB: Entwurfsmuster für das NoSQL-Schema-Design
Fachmodell-First: Einstieg in das NoSQL-Schema-Design
Clevere Tipps zum Thema Facebook Posts
Responsive Webdesign mit Bootstrap
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Multi Touch.Prio.Conference 2009

MongoDB: Security-Tipps gegen Hacker

  • 1. MongoDB Security-Tipps gegen Hacker Gregor Biswanger | Freier Dozent, Berater, Trainer und Autor about.me/gregor.biswanger
  • 2. Über mich  Freier Dozent, Berater und Trainer  Schwerpunkte Softwarearchitektur, XAML, Web und Cross-Plattform Entwicklung  Technologieberater für die Intel Developer Zone  Sprecher auf Konferenzen und User Groups  Freier Autor für heise.de, dotnetpro, WindowsDeveloper und viele weitere Fachmagazine  Video-Trainer bei video2brain und MicrosoftGregor Biswanger Microsoft MVP, Intel Black Belt & Intel Software Innovator cross-platform-blog.de about.me/gregor.biswanger
  • 3. Legal Disclaimer The information provided in this session is to be used for educational purposes only. The speaker is in no way responsible for any misuse of the information provided. All of the information in this session is meant to help the attendees develop a hacker defense attitude in order to prevent the attacks discussed. In no way should you use the information to cause any kind of damage directly or indirectly. The word „Hack“ or „Hacking“ in this session should be regarded as „Ethical Hack“ or „Ethical hacking“ respectvely.
  • 4. Unser Reiseplan  Aktuelles Problem  Security von MongoDB  Basis Authentifizierung  Zugriff mit Authentifizierung  Robomongo  Setup-Script zur Authentifizierung  Weitere Top Security Tipps
  • 6. MongoDB Apocalypse 2017  Bei MongoDB ist per Standard keine Security aktiv  Anfang 2017 wurden mehrere tausend MongoDB-Server gehackt  Die Daten wurden geklaut und anschließend durch eine Lösegeld Aufforderung ersetzt
  • 7. Das kann EUCH auch passieren!
  • 8. Suchmaschinen von Servern mit „offenen“ Ports  https://www.shodan.io  https://censys.io  https://www.zoomeye.org Quelle: zoomeye
  • 10. Eigenes Netzwerk schon gescannt?  Kostenloser Security Port Scanner: NMAP  https://nmap.org  Läuft unter Windows, Mac und Linux  Nmap ist sowohl bei Angreifern als auch bei Administratoren sehr beliebt, da es sehr effizient und zuverlässig arbeitet.  In einigen Filmen kommt Nmap vor: In Matrix Reloaded hackt sich der Charakter Trinity mithilfe des 2001 entdeckten SSH1-CRC32-Exploit in ein Kraftwerk ein, nachdem sie den Rechner mit Nmap gescannt hat.  In dem Film Battle Royale wird der Quelltext von Nmap gezeigt. Des Weiteren wird in Das Bourne Ultimatum die damalige Beta-Version 4.01 mit der grafischen Oberfläche Zenmap benutzt.
  • 14. Kein öffentlichen Zugriff auf die MongoDB! Application Mongo Public / Other
  • 15. Firewall Regeln  Zugriff nur auf den Application-Server beschränken  Zugriff nur auf den Mongo-Port beschränken  Am besten keinen Standard Mongo-Port verwenden
  • 16. Mongo Server IP Konfiguration  In der Mongo Konfigurationsdatei ebenfalls nur erlaubte IP-Adressen hinterlegen  Verwende dazu die bindIp Option  Oder auch als Start-Parameter „mongod --bind_ip 255.255.255.255“  Lokale IP-Adressen werden immer erlaubt systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: true storage: journal: enabled: true processManagement: fork: true net: bindIp: 127.0.0.1 port: 27017 setParameter: enableLocalhostAuthBypass: false ...
  • 18. Authentifizierung und Autorisierung „Wer bist du?“ „Was möchtest du machen?“ „OK!“ „Bob“ „Eine Collection lesen“
  • 19. Es gibt eine Vielzahl an Aktionen „Was möchtest du machen?“ „Eine Collection lesen“  Read Collection  Write Document  List Collection  Create User  Create Database  Backup  Restore  Administer Shards  Kill Cursor  …
  • 20. Autorisierung mit Rollen „Was möchtest du machen?“ „Eine Collection lesen“  readWrite  Read Collection  Write Document  List Collection  …  userAdmin  Create User  Grant User Permissions  …  dbAdmin  dbStats  repairDatabase  …
  • 21. Die Rolle: Root  Darf ALLES!  Sollte so gut wie gar nicht benutzt zum Einsatz kommen!  Darf niemand weitergegeben werden!
  • 22. Die Rolle: userAdminAnyDatabase  Darf sehr viel!  Sollte nur zum Verwalten von Benutzer zum Einsatz kommen  Kann Benutzer anlegen  Kann Rechte von Benutzer verwalten  Kann sich selbst höhere Rechte geben
  • 23. Die Rolle: read  Lesen von Collections  Nur auf speziell hinterlegte Datenbank
  • 24. Die Rolle: readWrite  Lesen und schreiben von Collections  Nur auf speziell hinterlegte Datenbank
  • 25. Die ersten Schritte zum Einrichten der internen Authentifizierung 1. Starte Mongo ohne Authentifizierung (Automatisch Root-Rechte) 2. Lege einen Benutzer an mit der Rolle userAdminAnyDatabase für die interne admin Datenbank 3. Starte Mongo erneut mit Authentifizierung 4. Einloggen mit der Mongo-Shell und dem neuen Admin-Benutzer Account 5. Wechsle zum Kontext der gewünschten Datenbank und erzeuge von dort aus einen Benutzer mit passenden Rollen 6. Ggf. eigene Rollen erzeugen oder Benutzer explizit einzelne Aktionen zuweisen
  • 26. 1. Starte Mongo ohne Authentifizierung (Automatisch Root-Rechte)
  • 27. 2. Lege einen Benutzer an mit der Rolle userAdminAnyDatabase für die interne admin Datenbank
  • 28. 3. Starte Mongo erneut mit Authentifizierung
  • 29. 4. Einloggen mit der Mongo-Shell und dem neuen Admin-Benutzer Account
  • 30. 5. Wechsle zum Kontext der gewünschten Datenbank und erzeuge von dort aus einen Benutzer mit passenden Rollen
  • 33. Authentifizierung via Connection-String const MongoClient = require('mongodb').MongoClient; // Connection URL var url = 'mongodb://appUser:123456@localhost:27017/myproject'; // Use connect method to connect to the server MongoClient.connect(url, function (error, db) { console.log("Connected successfully to server"); db.close(); });
  • 34. Authentifizierung via Code (Besser) const MongoClient = require('mongodb').MongoClient; // Connection URL var url = 'mongodb://localhost:27017/myproject'; // Use connect method to connect to the server MongoClient.connect(url, function (error, db) { console.log('Connected successfully to server'); db.authenticate('appUser', '123456', () => { console.log('Logged in as appUser'); db.close(); }); });
  • 36. Robomongo  Kostenloses MongoDB Management Tool  Läuft unter Windows, Mac und Linux  https://robomongo.org
  • 38. Scripting für die Mongo Shell  Ermöglicht das automatische Erstellen der Datenbank oder das verarbeiten von Administrationsaufgaben  Wird in JavaScript geschrieben  Nicht alle gewohnten JavaScript-Funktionen können genutzt werden  Wird nicht innerhalb einer Node.js-Instanz ausgeführt  Möglichkeiten und Dokumentation unter:  https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo- shell/#differences-between-interactive-and-scripted-mongo
  • 39. Setup-Script zur Authentifizierung var db = connect('localhost:27017/admin'); print('Create siteUserAdmin...'); var siteUserAdmin = { user: 'siteUserAdmin', pwd: '123456', roles: [ { role: 'userAdminAnyDatabase', db: 'admin' } ] }; db.createUser(siteUserAdmin); print('Switch to myproject db...'); db = db.getSiblingDB('myproject'); print('Create appUser...'); var appUser = { user: 'appUser', pwd: '123456', roles: [ { role: 'readWrite', db: 'myproject' } ] }; db.createUser(appUser); print('Finish! Your Database is ready...');
  • 42. Verschlüsselte Kommunikation  TLS/SSL für eingehende und ausgehende Kommunikation einsetzen  Schutz gegen Man-in-the-Middle-Angriff  Dokumentation:  https://docs.mongodb.com/manual/tutorial/configure-ssl/  mongod --sslMode requireSSL --sslPEMKeyFile /etc/ssl/mongodb.pem
  • 43. Datenbank Dateien verschlüsseln  Ab Version 3.2 gibt es Encrypted Storage Engine  MongoDB Enterprise only  Nur verfügbar für die WiredTiger Storage Engine (Normal Standard)  Dokumentation:  https://docs.mongodb.com/manual/core/security-encryption-at-rest  https://docs.mongodb.com/manual/tutorial/configure-encryption
  • 44. Backup System hinterlegen  Das Tool MongoDB OPS Manager ermöglicht das automatisierte Erzeugen von Backups  MongoDB Enterprise only  Dokumentation:  https://docs.opsmanager.mongodb.com/current/tutorial/nav/backup-use
  • 45. Mongo Shell Script JavaScript Support deaktivieren  Auf dem Production-System den Script JavaScript Support deaktivieren  Es werden nur Mongo spezifische Scripts erlaubt (wire protocol)  MongoDB mit folgenden Parameter ausführen:  mongod --dbpath=c:temp --auth --noscripting
  • 46. Monitoring aktivieren  Das Tool MongoDB OPS Manager ermöglicht das automatisierte Benachrichtigen (Alerts) bei sicherheitsrelevanten Aktionen  MongoDB Enterprise only  Dokumentation:  https://docs.opsmanager.mongodb.com/current/tutorial/manage-alert- configurations/
  • 47. Regelmäßig Updaten  MongoDB regelmäßig Updaten um sich vor neuen Exploits zu schützen  Hacker haben dafür eine Datenbank und greifen bei einer Attacke darauf zu:  https://www.exploit-db.com
  • 48. Mongoaudit einsetzen  Open-Source Tool zum Testen der MongoDB Security Einstellungen  https://mongoaud.it
  • 49. Letzter Tipp: Keine Security-Tipps ignorieren