Securely Configure a Production MongoDB Server
If MongoDB is your document store of
choice, then this article should help you configure everything securely and
properly for a production-ready environment.
The MongoDB Installation Tutorial covers how to install MongoDB.
Steps
There are two differently recommended paths that are available. The first is to connect securely to your database through an SSH tunnel. The alternative is to allow connections to your database over the internet. Of the two choices, the former is recommended.
Connect Over SSH Tunnel
By connecting to your Mongo VIrtual Private Server through
an SSH tunnel, you can avoid a lot of potential security issues. The caveat is
that your server must otherwise be totally locked down with few to no other ports
open. A recommended SSH configuration is key-only or key+password.
To setup an SSH tunnel, you'll need to ensure that:
Next, run the following command to initialize the connection:
# The \s are just to multiline the command and make it more readable
ssh \
-L 4321:localhost:27017 \
-i ~/.ssh/my_secure_key \
ssh_user@mongo_db_host_or_ip
Let's run through this step-by-step:
Number 2 is really the meat of the instruction. This will determine how you tell your applications or services to connect to your MongoDB.
Connect Over the Internet
If connecting over an SSH tunnel is
not necessarily an option, you can always connect over the internet. There are
a few security strategies to consider here.
The first is to use a non-standard port. This is more of an obfuscation
technique and simply means that default connection adapters will not work.
# In your MongoDB configuration file, change the following line to something other than 27017
port = 27017
Secondly, you'll want to bind Mongo directly to your application server's IP address. This means that Mongo will only accept connections.
# In your MongoDB configuration file, change the following line to your application server's IP address
bind_ip = 127.0.0.1
Lastly, consider using MongoDB's authentication feature and set a username and password. To set this up, connect to the MongoDB shell as an admin with the `mongo` command and add a user. Once that's done, make sure you're adding the newly added username/password in your MongoDB connection strings.
Conclusion
Please consider the above a starting point and not the be-all-end-all for MongoDB security. A key factor NOT mentioned here are server firewall rules.
Article ID: 156
Created On: Mon, Dec 23, 2013 at 10:44 PM
Last Updated On: Sun, Jan 5, 2014 at 8:35 PM
Authored by: ASPHostServer Administrator [asphostserver@gmail.com]
Online URL: http://faq.asphosthelpdesk.com/article.php?id=156