Tutorial

Comment configurer l'accès à distance pour MongoDB sur Ubuntu 20.04

Published on August 26, 2020
Default avatar

By Mark Drake

Manager, Developer Education

Français
Comment configurer l'accès à distance pour MongoDB sur Ubuntu 20.04

Une version antérieure de ce tutoriel a été écrite par Brennan Bearnes.

Introduction

MongoDB, également connu sous le nom de Mongo, est une base de données de documents open-source utilisée couramment dans des applications web modernes. Par défaut, il n’autorise que les connexions provenant du même serveur que celui où il est installée. Si vous souhaitez gérer MongoDB à distance ou le connecter à un serveur d’application distinct, vous devrez apporter quelques changements à la configuration par défaut.

Dans ce tutoriel, vous allez configurer une installation MongoDB pour permettre un accès sécurisé à partir d’un ordinateur distant de confiance. Pour ce faire, vous allez mettre à jour vos règles de pare-feu pour permettre à la machine distante d’accéder au port sur lequel MongoDB écoute des connexions, puis vous mettrez à jour son fichier de configuration pour modifier son paramètre de liaison IP. Ensuite, comme dernière étape, vous testerez si votre machine distante est capable de se connecter avec succès à votre base de données.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

  • Un serveur fonctionnant sous Ubuntu 20.04 Ce serveur doit avoir un non-root user administratif et un pare-feu configuré avec UFW. Pour cela, suivez notre guide de configuration initiale du serveur pour Ubuntu 20.04.
  • MongoDB installé sur votre serveur. Ce tutoriel suppose que vous avez installé MongoDB 4.4 ou une version plus récente. Vous pouvez installer cette version en suivant notre tutoriel Comment installer MongoDB sur Ubuntu 20.04.
  • Un deuxième ordinateur à partir duquel vous allez accéder à votre instance MongoDB. Pour plus de simplicité, ce tutoriel suppose que cette machine est un autre serveur Ubuntu 20.04, avec un utilisateur administratif non root et un pare-feu UFW configuré en suivant notre guide de configuration initiale du serveur pour Ubuntu 20.04. Cependant, les étapes 1 et 2, qui décrivent la procédure réelle d’activation de la connectivité à distance sur le serveur de base de données, fonctionneront quel que soit le système d’exploitation de la machine distante.

Enfin, bien que ce ne soit pas nécessaire pour terminer ce tutoriel, nous vous recommandons fortement de sécuriser votre installation MongoDB en créant un compte utilisateur administratif pour la base de données et en activant l’authentification. Pour ce faire, suivez notre tutoriel Comment sécuriser MongoDB sur Ubuntu 20.04.

Étape 2 — Ajustement du pare-feu

En supposant que vous ayez suivi le tutoriel de configuration initiale du serveur et activé un pare-feu UFW sur votre serveur, votre installation MongoDB sera inaccessible depuis Internet. Si vous avez l’intention d’utiliser MongoDB uniquement en local avec des applications fonctionnant sur le même serveur, il s’agit de la configuration recommandée et sécurisée. Cependant, si vous souhaitez pouvoir vous connecter à votre serveur MongoDB à distance, vous devez autoriser les connexions entrantes sur le port où la base de données est à l’écoute en ajoutant une nouvelle règle UFW.

Commencez par vérifier quel port votre installation MongoDB écoute avec la commande lsof. Cette commande renvoie généralement une liste contenant tous les fichiers ouverts d’un système, mais lorsqu’elle est combinée à l’option -i, elle ne répertorie que les fichiers ou les flux de données liés au réseau.

La commande suivante redirigera la sortie produite par lsof -i vers une commande grep qui recherche une chaîne nommée mongo :

  1. sudo lsof -i | grep mongo

Cet exemple de sortie montre que MongoDB écoute les connexions sur son port par défaut, 27017 :

Output
mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)

Dans la plupart des cas, MongoDB ne doit être accessible qu’à partir de certains lieux de confiance (un autre serveur hébergeant une application, par exemple). Une façon de configurer cette méthode consiste à exécuter la commande suivante sur votre serveur MongoDB, qui ouvre un accès sur le port par défaut de MongoDB tout en n’autorisant explicitement que l’adresse IP de l’autre serveur de confiance.

Exécutez la commande suivante, en vous assurant de remplacer trusted_server_ip par l’adresse IP de la machine distante de confiance que vous utiliserez pour accéder à votre instance MongoDB :

Remarque : si la sortie de la commande précédente a indiqué que votre installation de MongoDB écoute sur un port non par défaut, utilisez ce numéro de port à la place de 27017 dans cette commande.

  1. sudo ufw allow from trusted_server_ip to any port 27017

À l’avenir, si jamais vous souhaitez accéder à MongoDB à partir d’une autre machine, exécutez à nouveau cette commande avec l’adresse IP de la nouvelle machine à la place de trusted_server_ip.

Vous pouvez vérifier le changement dans les paramètres de pare-feu avec ufw :

  1. sudo ufw status

La sortie montrera que le trafic vers le port 27017 du serveur distant est maintenant autorisé :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 27017 ALLOW trusted_server_ip OpenSSH (v6) ALLOW Anywhere (v6)

Vous pouvez trouver des paramètres de pare-feu plus avancés pour restreindre l’accès aux services dans les Essentiels d’UFW : Règles et commandes communes du pare-feu.

Ensuite, vous allez lier MongoDB à l’adresse IP publique du serveur afin de pouvoir y accéder à partir de votre machine distante.

Étape 2 — Configurer une bindIP publique

À ce stade, même si le port est ouvert, MongoDB est actuellement lié à 127.0.0.1, l’interface du réseau de rebouclage local. Cela signifie que MongoDB n’est en mesure d’accepter que les connexions originaires du serveur où il est installé.

Pour permettre des connexions distantes, vous devez modifier le fichier de configuration de MongoDB — /etc/mongod.conf — pour lier également MongoDB à l’adresse IP routable publique de votre serveur. De cette façon, votre installation MongoDB sera en mesure d’écouter les connexions faites à votre serveur MongoDB à partir de machines distantes.

Ouvrez le fichier de configuration de MongoDB dans votre éditeur de texte préféré. L’exemple suivant utilise nano :

  1. sudo nano /etc/mongod.conf

Trouvez la section network interfaces, puis la valeur bindIp :

/etc/mongod.conf
. . .
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

. . .

Ajoutez une virgule à cette ligne suivie de l’adresse IP publique de votre serveur MongoDB :

/etc/mongod.conf
. . .
# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1,mongodb_server_ip

. . .

Enregistrez et fermez le fichier. Si vous avez utilisé nano, faites-le en appuyant sur CTRL+X, Y, puis ENTER.

Ensuite, redémarrez MongoDB pour mettre ce changement en vigueur :

  1. sudo systemctl restart mongod

Suite à cela, votre installation MongoDB sera en mesure d’accepter des connexions à distance à partir de toutes les machines que vous avez autorisées à accéder au port 27017. En dernière étape, vous pouvez vérifier si le serveur distant de confiance que vous avez autorisé à travers le pare-feu à l’Étape 1 peut atteindre l’instance de MongoDB exécutée sur votre serveur.

Étape 3 — Test de la connectivité à distance

Maintenant que vous avez configuré votre installation MongoDB pour écouter des connexions qui proviennent de son adresse IP publique routable et que vous avez accordé à votre machine distante l’accès au port par défaut de Mongo via le pare-feu de votre serveur, vous pouvez tester si la machine distante est capable de se connecter.

Remarque : comme mentionné dans la section Conditions préalables, ce tutoriel suppose que votre machine distante est un autre serveur fonctionnant sous Ubuntu 20.04. La procédure d’activation des connexions à distance décrite aux Étapes 1 et 2 devrait fonctionner indépendamment du système d’exploitation de votre machine distante, mais les méthodes de test décrites dans cette étape ne fonctionnent pas de manière universelle pour tous les systèmes d’exploitation.

Une façon de tester si votre serveur distant de confiance est capable de se connecter à l’instance MongoDB, consiste à utiliser la commande nc. nc, abréviation de netcat, est un utilitaire utilisé pour établir des connexions réseau avec TCP ou UDP. Il est utile pour effectuer des tests dans des cas comme celui-ci car il vous permet de spécifier à la fois une adresse IP et un numéro de port.

Tout d’abord, connectez-vous à votre serveur de confiance en utilisant SSH :

  1. ssh sammy@trusted_server_ip

Ensuite, exécutez la commande nc suivante, qui inclut l’option -z. Cela limite nc à ne chercher qu’un démon d’écoute sur le serveur cible sans lui envoyer de données. Rappelez-vous du tutoriel d’installation préalable qui explique que MongoDB fonctionne en tant que démon service, ce qui rend cette option utile pour tester la connectivité. Elle inclut également l’option v qui augmente la verbosité de la commande, ce qui fait que netcat renvoie des données qu’il ne renverrait pas autrement.

Exécutez la commande nc suivante à partir de votre serveur distant de confiance, en vous assurant de remplacer mongodb_server_ip par l’adresse IP du serveur sur lequel vous avez installé MongoDB :

  1. nc -zv mongodb_server_ip 27017

Si le serveur de confiance peut accéder au démon MongoDB, sa sortie indiquera que la connexion a réussi :

Output
Connection to mongodb_server_ip 27017 port [tcp/*] succeeded!

En supposant que vous disposez d’une version compatible du shell mongo installé sur votre serveur distant, vous pouvez à ce stade vous connecter directement à l’instance de MongoDB installée sur le serveur hôte.

Une façon de se connecter est d’utiliser une chaîne de connexion URI, comme celle-ci :

  1. mongo "mongodb://mongo_server_ip:27017"

Remarque : si vous avez suivi le tutoriel recommandé Comment sécuriser MongoDB sur Ubuntu 20.04, vous aurez fermé l’accès à votre base de données aux utilisateurs non authentifiés. Dans ce cas, vous devrez utiliser une URI spécifiant un nom d’utilisateur valide, comme celle-ci :

  1. mongo "mongodb://username@mongo_server_ip:27017"

Le shell vous invitera automatiquement à entrer le mot de passe de l’utilisateur.

Avec cela, vous avez confirmé que votre serveur MongoDB pouvait accepter les connexions du serveur de confiance.

Conclusion

Vous pouvez maintenant accéder à votre installation MongoDB à partir d’un serveur distant. À ce stade, vous pouvez gérer à distance votre base de données Mongo du serveur de confiance. Vous pouvez également configurer une application pour qu’elle s’exécute sur le serveur de confiance et utiliser la base de données à distance.

Si vous n’avez pas configuré d’utilisateur administratif et activé l’authentification, toute personne ayant accès à votre serveur distant peut également accéder à votre installation MongoDB. Si vous ne l’avez pas encore fait, nous vous recommandons fortement de suivre notre guide Comment sécuriser MongoDB sur Ubuntu 20.04 pour ajouter un utilisateur administratif et verrouiller les choses plus avant.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel