Im folgenden möchte ich ein paar Notizen zum Thema MongoDB und Sicherheit machen. Wenn die MongoDB auf einem Server installiert wird, hört diese erst mal nur auf localhost, also auf lokale Verbindungen.
Theoretisch kann nun wenn der Server gehackt wird auch einfach die Datenbank ausgelesen werden. Dies möchten wir verhindern in dem wir nur einen Benutzer hinzufügen. Es ist zwar immer ratsam sehr genügsam mit den Rechten umzugehen. Für diesen ersten Schritt möchten wir jedoch einen Benutzer erstellen der grundsätzlich alles darf. Hierzu müssen wir uns erst einmal zur MongoDB verbinden. Dies tun wir am besten indem wir uns via SSH auf den Server verbinden. Wie schon erwähnt nimmt die frisch installierte MongoDB nur Verbindungen vom lokalen Host an. Dies können wir in diesem Fall über SSH optimal erfüllen. Sind wir auf dem Server angelangt verbinden wir uns via
1 | # mongo |
mit der MongoDB und landen in der sogenannten MongoShell. Wir sehen auch, dass uns die MongoDB dies vollkommen ohne Benutzer und Passwort erlaubt. Nun fügen wir also einen Benutzer hinzu der grundsätzlich über alle MongoDB Datenbanken Berechtigungen erhält. Wir geben also in die MongoShell folgendes ein:
1 | > db.createUser({user: “root”, pwd: “SicheresRootPasswort”, roles: [“root”]}) |
Nun wird man sich wundern, warum denn immernoch Verbindungen ohne Benutzer und Passwort möglich sind. In einer frischen Installation ist die Rechteverwaltung ausgeschaltet. Dies ändern wir nun, in dem wir in der Datei /etc/mongod.conf folgendes eintragen:
1 | auth=true |
Nun müssen wir nur noch dafür sorge tragen, dass diese Einstellung auch neu eingelesen wird. Hierzu müssen wir einfach den MongoDB Daemon neu starten. Schnell erledigen wir dies mit
1 | # service mongod restart |
Nun werden wir feststellen, dass wir auf die MongoDB nicht mehr ohne Benutzer und Passwort zugreifen können. Unser erstes Ziel ist also somit erreicht.
Jetzt haben wir noch ein kleines anderes Anliegen. Wir möchten von unserem Rechner mit einem Management Tool für die MongoDB auf diese zugreifen. Also müssen wir der MongoDB mitteilen, dass diese nicht nur auf lokale Verbindungen hört. Diese Einstellung finden wir ebenfalls wieder unter /etc/mongod.conf. Hier kommentieren wir die komplette Zeile mit bind_ip aus, dies tun wir wie unter Linux Konfigurationsdateien immer mit einem einfachen # vor der entsprechenden Option:
1 | #bind_ip = 127.0.0.1 |
Nun müssen wir auch diese Konfiguration nun laden. Wie oben schon erledigen wir dies mit
1 | # service mongod restart |
Nun können wir auch von extern auf die MongoDB zugreifen.
Der Wichtigste Punkt dabei ist aber: Immer wenn wir externe Verbindungen auf eine Datenbank zulassen, müssen wir diese mit einem Benutzer und Passwort versehen. Dies haben wir im ersten Schritt schon getan. Wir sind hier also auf der sicheren Seite.