Trabalhar remotamente devido à pandemia de Covid-19 significa um aumento da importância das infraestruturas isoladas; mais especificamente aqueles que só podem ser acessados através de uma rede interna, mas de forma que pessoas autorizadas do mundo externo possam acessar o sistema a qualquer hora ou em qualquer lugar.
Neste artigo, compartilharemos algumas etapas básicas que você deve implementar com o MongoDB para garantir acesso seguro ao administrar o banco de dados.
Protegendo o MongoDB
Antes de acessar o banco de dados MongoDB remotamente, você deve realizar um “hardening” do ambiente. Defina o seguinte no lado da infraestrutura:
Ativar autenticação MongoDB
Este recurso é obrigatório para habilitar, independentemente se queremos acessar o banco de dados MongoDB da rede interna ou de uma rede externa. Antes de habilitar a autorização, você deve primeiro criar um usuário administrador no MongoDB. Você pode executar o comando abaixo para criar um usuário admin em seu servidor mongoDB:
$ mongo
> use admin
> db.createUser(
{
user: "admin",
pwd: "youdontknowmyp4ssw0rd",
roles: [ "root" ]
}
);
O comando acima criará um novo usuário chamado admin com privilégios de root. Você pode habilitar o recurso MongoDB Auth abrindo o arquivo /etc/mongod.conf e adicionando a seguinte linha:
security:
authorization: 'enabled'
Não se esqueça de reiniciar o serviço mongoDB para aplicar as alterações. O comando acima restringirá o acesso ao banco de dados, apenas aquele que tiver credenciais de acesso elegível para fazer login.
Configurar funções e privilégios
Para evitar o uso indevido do acesso ao MongoDB, podemos implementar o acesso baseado em função criando várias funções e seus privilégios.
Certifique-se de ter uma lista de usuários que precisam acessar o banco de dados e entender as necessidades e responsabilidades de cada indivíduo. Crie funções e atribua os privilégios a essas funções criadas. Depois disso, você pode atribuir ao usuário uma função com base nas responsabilidades.
Essa abordagem nos ajuda a minimizar o abuso de autoridade e identificar a função e o usuário imediatamente quando algo indesejado acontece.
Configurar uma conexão SSL/TLS
MongoDB suporta conexões SSL/TLS para proteger dados em trânsito. Para implementar isso, você precisa gerar sua própria chave SSL, você pode gerá-la usando openssl. Para habilitar o suporte SSL/TLS, você pode editar o arquivo /etc/mongod.conf e adicionar o seguinte parâmetro:
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/mongo/ssl/mongodb.pem
Após adicionar esses parâmetros, você precisa reiniciar o serviço MongoDB. Se você tiver a arquitetura de replicaset MongoDB, precisará aplicá-los em cada nó. O SSL também é necessário quando o cliente acessar o MongoDB, seja do lado do aplicativo ou diretamente do cliente.
Para uso em produção, você deve usar certificados válidos gerados e assinados por uma única autoridade de certificação. Você ou sua organização podem gerar e manter certificados como uma autoridade de certificação independente ou usar certificados gerados por fornecedores de TLS/SSL de terceiros. Evite usar um certificado autoassinado, a menos que seja uma rede confiável.
Restringir a porta do banco de dados
Você deve certificar-se de que apenas a porta MongoDB esteja aberta no servidor de firewall ou dispositivo de firewall, certifique-se de que nenhuma outra porta esteja aberta.
Protegendo a conexão MongoDB
A conexão remota via internet pública apresenta o risco de transmissão de dados de usuários locais para o servidor de banco de dados e vice-versa. Os invasores podem interromper a interconexão, que neste caso é conhecida como ataque MITM (Min-in-The-Middle). Proteger a conexão é muito necessário quando gerenciamos/administramos o banco de dados remotamente, algumas coisas que podemos aplicar para proteger nosso acesso ao banco de dados são as seguintes:
Acesso à rede privada
VPN (Virtual Private Network) é uma das coisas fundamentais quando queremos acessar nossa infraestrutura de fora com segurança. VPN é uma rede privada que usa redes públicas para acessar os sites remotos. A configuração da VPN requer hardware que deve ser preparado no lado da rede privada, além disso o cliente também precisa de um software VPN que suporte o acesso à rede privada.
Além de usar VPN, outra forma de acessar o servidor MongoDB é por porta de banco de dados de encaminhamento via SSH, ou mais conhecido como SSH Tunneling.
Use SSL/TLS do cliente para o servidor de banco de dados
Além de implementar o acesso seguro usando VPN ou SSH Tunneling, podemos usar SSL/TLS que foi configurado anteriormente no lado do MongoDB. Você só precisa da chave SSL que possui e tente se conectar ao banco de dados usando a chave SSL.
Ativar monitoramento de banco de dados
É essencial habilitar o serviço de monitoramento para entender o estado atual dos bancos de dados. O servidor de monitoramento pode ser instalado sob domínio público que tenha SSL/TLS habilitado, portanto, o acesso automático ao navegador pode usar HTTPs.
Conclusão
É muito divertido trabalhar em casa, você pode interagir com seus filhos e ao mesmo tempo monitorar seu banco de dados. Você deve seguir as diretrizes acima para garantir que não seja atacado ou tenha dados roubados ao acessar seu banco de dados remotamente.