Devo definir uma senha de root do mysql?

2

Eu tenho um servidor da Web hospedado na AWS, com o grupo de segurança permitindo acesso de todos os endereços IP à porta TCP 22 (ssh) e 443 (https). O acesso ssh requer que um usuário tenha minha chave privada.

O usuário root no banco de dados MySQL neste servidor tem uma senha? Se sim, porque? A única maneira de efetuar login no banco de dados é fazer ssh na máquina e, se um hacker puder fazer isso, ele poderá facilmente verificar os dados examinando os arquivos .myd.

No entanto, a sabedoria comum que eu já vi parece defender a restrição do acesso root ao banco de dados.

Atualizar E se meu banco de dados estiver em uma máquina diferente do servidor da Web e o banco de dados puder ser acessado somente pela porta mysql pelo servidor da Web? Ainda é recomendado ter uma senha de root?

    
por Snitse 30.08.2013 / 01:44

3 respostas

3

Sim, você deve usar uma senha. Por quê? Como várias camadas de segurança são melhores do que uma única camada de segurança, conhecida como abordagem de 'jardim murado'. Se alguém atacar esse muro, você desejará ter várias camadas de segurança para mantê-lo fora.

  1. Por que você não deseja definir uma senha? As senhas são inconvenientes, mas o inconveniente é menor. Você pode considerar colocar a senha em ~ root / .my.cnf e certificar-se de que as permissões do arquivo sejam muito rígidas. Por exemplo:

    [client]
    password=hackme123##
    
  2. Erros acontecem. Tanto o https quanto o ssh são razoavelmente seguros, mas existem exploits que podem permitir que alguém roube sua sessão https ou detecte dados da sua sessão https.

  3. Alguns usuários usam chaves ssh não criptografadas - isto é, uma chave SSH que foi criada sem um passprase. Se um hacker conseguir roubar sua chave privada, ele poderá usar a chave para efetuar login no host do banco de dados (desde que não seja necessária uma frase secreta) e, em seguida, efetuar login no próprio banco de dados.

  4. link

  5. Se alguém invadisse seu aplicativo da Web, eles poderiam fazer login no banco de dados como root e excluir todos os bancos de dados, inserir links para sites pornográficos e malware em seu precioso CMS, criar contas de backdoor para uso próprio etc.

por 30.08.2013 / 02:59
1

Na verdade, essa não é a única maneira de entrar. O seu aplicativo da Web é perfeitamente seguro? (A resposta correta é sempre "Não"). Então, sim, você tem um canal pelo qual alguém pode entrar e é o serviço da web que você está usando.

Se alguém entrar, por padrão, eles não poderão ver os arquivos .myd. Você teria que ter um exploit root shell para acessar os arquivos diretamente. Se alguém "entrar" de alguma forma com uma conta sem privilégios (como o usuário do seu servidor web, por exemplo), a senha de root do MySQL é a única barreira que os impede de exfiltrar ou destruir completamente seus dados.

    
por 30.08.2013 / 02:13
1

Sim, você deve definir a senha de root em seu banco de dados MySQL e mantê-la em um recurso de depósito seguro e recuperável.

Não há "lista de verificação" para segurança, a segurança é um processo e uma mentalidade, mas há alguns princípios fundamentais, um dos quais é a defesa em profundidade:

Defesa em Profundidade - Nunca coloque seus ovos em uma única cesta.

Autenticação - As senhas são um token de autenticação "o que você sabe". Problema: uma senha padrão (neste caso, uma em branco) é conhecida por todos. Portanto, você não tem mais um mecanismo de autenticação para seu banco de dados.

Resumo: Definir uma senha "custa" muito pouco e dificulta significativamente o trabalho do invasor. É uma boa compra.

    
por 30.08.2013 / 02:22