MongoDB num VPS: instalar, proteger e porque não o expor à internet

A resposta curta: o MongoDB é uma base de dados que guarda documentos (parecidos com JSON) em vez de tabelas. Não faz parte das ferramentas de bases de dados do cPanel, por isso corre-se num VPS. A regra que mais importa: nunca o deixe aberto à internet. Já houve muitos servidores MongoDB sem proteção apagados e sequestrados por quem os encontrou.

A forma mais simples: um contentor

Se já usa Docker (veja Docker num VPS com segurança), a imagem oficial dá uma instalação limpa e fácil de remover:

docker run -d --name mongo --restart unless-stopped \
-p 127.0.0.1:27017:27017 \
-v mongo-dados:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=UMA-SENHA-FORTE \
mongo

Parte Para que serve
-p 127.0.0.1:27017:27017 A mais importante. Publica a porta só no próprio VPS. Sem o 127.0.0.1, o Docker abre-a ao mundo, mesmo com a firewall ligada.
-v mongo-dados:/data/db Guarda os dados num volume, para não os perder quando o contentor é recriado. Veja Volumes ou bind mounts.
MONGO_INITDB_ROOT_* Cria o utilizador administrador e liga a autenticação. Use uma palavra-passe longa; veja Uma palavra-passe forte.

Use uma versão com número em vez de mongo sozinho, para uma atualização não o apanhar de surpresa (a lista está na página da imagem, no Docker Hub).

Instalado no sistema

Sem Docker, o MongoDB instala-se a partir do repositório da própria MongoDB para a sua versão de Ubuntu ou Debian. Os nomes dos pacotes e das chaves mudam com as versões, por isso siga o guia de instalação oficial em vez de copiar comandos antigos. Seja como for, depois de instalar:

1 Ligue a autenticação (a opção «authorization» no ficheiro de configuração do MongoDB) e crie o utilizador administrador.
2 Deixe-o a escutar só em 127.0.0.1 (a opção «bindIp»), a não ser que tenha mesmo de o ligar a outra máquina.
3 Feche a porta 27017 na firewall. Veja A firewall ufw no Ubuntu e Portas e firewall num VPS.

Como a aplicação se liga

Uma aplicação no mesmo VPS liga-se com um endereço do género mongodb://admin:SENHA@127.0.0.1:27017/minha-base?authSource=admin. Guarde-o no ficheiro de configuração da aplicação, fora do código: veja Palavras-passe fora do código. Para ver os dados do seu computador, use um túnel SSH em vez de abrir a porta: ssh -L 27017:127.0.0.1:27017 utilizador@IP-DO-VPS, e ligue-se a localhost.

Cópias de segurança

O mongodump faz a cópia: mongodump --uri="mongodb://..." --gzip --archive=/copias/mongo.gz; e o mongorestore repõe-a: mongorestore --uri="mongodb://..." --gzip --archive=/copias/mongo.gz. Corra-o por cron e envie a cópia para fora do servidor: veja Cópias fora do servidor. E teste a reposição, não só a cópia.

Se o seu MongoDB já esteve aberto à internet, trate-o como comprometido: mude todas as palavras-passe, veja se há dados a mais ou a menos e restaure de uma cópia limpa. Veja Manter o VPS seguro: as seis coisas que contam.

Quer ajuda para decidir se o MongoDB serve para a sua aplicação, ou para o proteger? Abra um pedido a dizer o que vai guardar.

Abrir pedido de suporte

VEJA TAMBÉM

Manter o VPS ou servidor dedicado seguro: as seis coisas que contam

Docker num VPS com segurança: os cuidados que contam

Portas e firewall num VPS: porque a sua aplicação não está acessível

Cópias fora do servidor: enviar uma cópia para armazenamento na nuvem, um bucket S3 ou o Google Drive

PRODUTO RECOMENDADO

Servidor VPS com acesso root

Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 7.560,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?