Como criar um servidor MongoDB seguro?

7

Estou desejando que meu site use o MongoDB como seu armazenamento de dados. Eu usei o MongoDB no meu ambiente de desenvolvimento sem preocupações, mas estou preocupado com a segurança de um servidor público.

Meu servidor é um VPS executando o Arch Linux. O aplicativo da Web também será executado nele, portanto, ele só precisa aceitar conexões do host local. E nenhum outro usuário (por ssh ou de outra forma) terá acesso direto ao meu servidor.

O que devo fazer para proteger minha instância do MongoDB?

    
por Earlz 20.02.2011 / 06:07

5 respostas

5

O Mongo suporta apenas segurança básica:

  • configurando a autenticação. Criar usuário com senha strong (um nome de usuário e senha no contexto do banco de dados)
  • liga o MongoDB a 127.0.0.0 (a interface de loopback)
  • alterar a porta padrão
por 20.02.2011 / 06:21
13

Aqui está uma boa lista de verificação

  1. Ativar autenticação - Mesmo que você tenha implantado seus servidores Mongodb em uma rede confiável, é uma boa prática de segurança ativar a autenticação. Ele fornece "Defesa em profundidade" se sua rede estiver comprometida. Edite seu arquivo de configuração mongod para ativar a autenticação

  2. Não exponha seu banco de dados de produção à Internet. Restringir o acesso físico ao seu banco de dados é um aspecto importante da segurança. Se não for necessário, não exponha seu banco de dados de produção à Internet. Em caso de qualquer comprometimento se um invasor não puder se conectar fisicamente ao seu servidor MongoDB, seus dados serão muito mais seguros. Se você estiver na AWS, poderá colocar seus bancos de dados em uma sub-rede privada da VPC. Leia a postagem do blog Implantando o MongoDB em um VPC para obter mais informações.

  3. Use firewalls - Use firewalls para restringir quais outras entidades podem se conectar ao seu servidor mongodb. A melhor prática é permitir apenas que os servidores de aplicativos acessem o banco de dados. Se você estiver hospedado no AWS, use "Grupos de segurança" para restringir o acesso. Se você está hospedado em um provedor que não suporta construções de firewall, você pode configurá-lo facilmente usando ‘iptables’. Consulte a documentação do mongodb para configurar o iptables para o seu cenário.

  4. Use arquivos-chave para configurar o conjunto de réplicas - Especifique um arquivo de chave compartilhada para permitir a comunicação entre suas instâncias do mongodb em um conjunto de réplicas. Para habilitar isso, adicione o parâmetro keyfile ao arquivo de configuração como abaixo. O conteúdo do arquivo precisa ser o mesmo em todas as máquinas.

  5. Desativar interface de status HTTP Por padrão, o Mongodb fornece uma interface http em execução por padrão na porta 28017, que fornece a página de status "inicial". Essa interface não é recomendada para uso em produção e é melhor desativada. Use a configuração de configuração "nohttpinterface" para desativar a interface http.

  6. Desativar a interface REST A interface REST monogdb não é recomendada para produção. Não suporta qualquer autenticação. Está desligado por padrão. Se você tiver ativado a opção de configuração "restante", deverá desativá-la para sistemas de produção.

  7. Configurar o Bind_ip Se o seu sistema tiver várias interfaces de rede, você poderá usar a opção “bind_ip” para restringir seu servidor mongodb a escutar apenas as interfaces relevantes. Por padrão, o mongodb se ligará a todas as interfaces

  8. Ativar SSL - Se você não usa SSL, seus dados estão viajando entre seu cliente Mongo e o servidor Mongo sem criptografia e são suscetíveis a ataques de espionagem, adulteração e ataques "man in the middle". Isso é especialmente importante se você estiver se conectando ao seu servidor Mongodb em redes inseguras como a Internet.

  9. Autorização baseada em função - O MongoDB oferece suporte à autenticação baseada em função para fornecer a você um controle refinado sobre as ações que podem ser executadas por cada usuário. Use construções baseadas em função para restringir o acesso, em vez de tornar todos os administradores de seus usuários. Consulte a documentação de funções para mais detalhes.

  10. Empresa mongodb & Kerberos O mongodb da empresa integra-se ao Kerberos para autenticação. Consulte a documentação do mongodb para mais detalhes. Sistemas de nome de usuário / senha são inerentemente inseguros - use autenticação baseada em meio-fio, se possível.

link

Disclaimer: Eu sou o fundador do scalegrid.io

    
por 01.04.2014 / 05:39
11

Segurança e Autenticação Documentação do MongoDB .

    
por 20.02.2011 / 08:12
2

a mesma consulta foi bem discutida aqui link

Algumas coisas muito iniciais para lembrar são:

Remove IP Binding from all to just the IP (private or localhost), you expect to get Connection Request
Change the default Port Bindings
Give only required permissions (like no update/delete permissions to select query users)
Setup ssh keys for required master-slave connection, removing involvement of passwords
You can even setup an encrypted tunnel for connection between your application and mongodb

na verdade, eles são aplicáveis em todos os DataStorage Services

PS: experiência mongodb muito limitada

    
por 21.10.2011 / 12:03
0

Por segurança, é melhor evitar qualquer acesso externo ao nó do MongoDB. Você pode executar o aplicativo e o MongoDB em nós diferentes. O nó do aplicativo é acessível de fora, enquanto o nó MongoDB abre apenas a porta do MongoDB para o nó do aplicativo.

Siga também a Lista de verificação de segurança oficial do MongoDB para proteger o MongoDB.

O FireCamp automatiza isso para você na nuvem, como a AWS. O FireCamp reforça a segurança. 1) O AppAccessSecurityGroup é o único autorizado a acessar o MongoDB. Por favor, crie seu nó de aplicativo no AppAccessSecurityGroup e o VPC em que o nó do MongoDB é executado. 2) Um nó do Bastion é criado e é o único que poderia fazer o SSH nos nós do MongoDB. 3) A autenticação do usuário e o controle de acesso do MongoDB entre os membros de um ReplicaSet estão ativados.

    
por 29.08.2017 / 20:41