Por que é ruim ter uma senha de usuário mysql fraca?


23

Foi-me apresentado um argumento no sentido de "você não precisa de uma senha de usuário mysql forte porque, para usá-la, eles já teriam acesso ao seu servidor". Estamos falando de uma senha de 4 dígitos, que é uma palavra padrão do dicionário de inglês em um site comercial ao vivo.

Sem influenciar as respostas com meu próprio conhecimento e experiência, gostaria de mostrar algumas respostas de uma fonte desinteressada de terceiros. Alguém quer conversar com esse? Serão apreciadas respostas práticas / de programação.


7
Parece um desses root:rootlogins.

3
Senha de quatro dígitos? Gosta 1337?
Gumbo

Respostas:


39

Quem quer que esteja argumentando parece estar dizendo "Uma vez que alguém está com o pé na porta, é melhor dar-lhe acesso completo". Por essa lógica, um firewall nega a necessidade de todas as senhas na sua rede interna.

Senhas fortes são um passo para limitar os danos causados ​​pela invasão da rede. Não há razão para jogar suas mãos para cima na derrota só porque uma pequena parte da sua rede foi comprometida.


13
'Defesa em profundidade' é o lema do dia.
Scott Pack

3
Observe que, uma vez que eles tenham acesso ao seu sistema de arquivos, eles terão acesso ao seu arquivo PHP ou arquivo de configuração, onde sua senha é armazenada de qualquer maneira, a menos que você tenha configurado alguma segurança adicional para isso, o que geralmente é difícil ou impossível em hosts compartilhados .
Lotus Notes

2
@Lotus Supondo que os servidores PHP e MySQL sejam a mesma máquina.
meagar

2
@ Lotus Notes, você não deve usar o usuário root em um aplicativo de qualquer maneira. Um aplicativo bem projetado permite apenas o acesso necessário. Na maioria das vezes, isso inclui acesso aos dados, mas nem sempre todos, e em alguns casos, pode até ser somente leitura.
precisa saber é o seguinte

1
Notas do @Lotus: Muitos hosts compartilhados empregam o suPHP, que permite o chmod-660 de arquivos PHP sensíveis.
precisa saber é o seguinte

14

Ele realmente remonta à idéia de ' Defesa em profundidade ', pelo menos uma senha forte pode atrasá-los para que você possa descobrir e bloqueá-los. Gosto da analogia de ter uma única chave para um condomínio fechado versus uma chave na porta de todas as casas.


Eu estava esperando alguém apresentar uma analogia de chave / porta: |
meagar

Mas uma chave diferente para cada porta da sua casa provavelmente está no mar. Onde você desenha a linha?
Dan

4
@ Dan: mas em uma instalação segura, você esperaria uma chave diferente para cada porta, certo? Em uma casa unifamiliar não - você esperaria que todas as fechaduras usassem a mesma chave. Mas em uma casa compartilhada (como com colegas de quarto), isso dependeria da filosofia da casa: portas destrancadas (talvez portas todas usando a mesma chave) ou chaves diferentes por companheiro de quarto.
wallyk

5
Fechaduras e outros dispositivos de segurança são usados ​​principalmente para o ladrão amador ou apenas para impedir o profissional. Outro impedimento é a iluminação adequada da casa e evitar rotinas regulares que tornam óbvio onde e o que você faz ao longo do dia. Nunca converse com um estranho sobre planos de férias e alerte a polícia local se você estiver fora por um longo período de tempo. Sempre tente fazer parecer que alguém está em casa. Além disso, para ... esperar, qual era a pergunta novamente?
Stephen Watkins

6

Depende muito de como o servidor MySQL está configurado. Se ele aceitar apenas solicitações fora do IP residencial (127.0.0.1), isso o tornará moderadamente mais seguro.

Dado um cenário em que você permite IPs remotos, torna-se um negócio muito maior.

Além disso, é sempre bom ter uma segurança forte em caso de intrusão - melhor que eles saiam com o mínimo possível.


6

Existe um bloqueio na caixa Petty Cash na Contabilidade? Se sim, por quê? O prédio não possui segurança física?


5

você não precisa de uma senha forte de usuário mysql porque, para usá-la, eles já teriam acesso ao seu servidor

Isso não é verdade, porque o mysql também pode ser usado no ambiente cliente-servidor entre redes e, por padrão, a única coisa que você precisa é de usuário / senha para obter acesso ao banco de dados (offcourse, com a porta 3306 aberta e o servidor visível publicamente) )


5

De fato, pode ser o contrário: se eles tiverem acesso ao mysql, poderão acessar o sistema operacional do servidor.

  1. As consultas LOAD_FILE e SELECT ... INTO OUTFILE do MySQL permitem que os usuários do mysql leiam e gravem arquivos no sistema de arquivos subjacente. Qualquer arquivo que o usuário do mysql também tenha acesso (o seu MySQL está sendo executado como root?). Se no linux / UNIX, basta consultar SELECT LOAD_FILE ('/ etc / passwd') e vê-los sorrir. Se o mysqld estiver executando como root, você pode tentar SELECT LOAD_FILE ('/ etc / shadow') e assistir seu sysadmin chorar.
  2. Muitas vezes no linux, o usuário "root" do mysql possui a mesma senha do usuário "mysql" do servidor (aquele que executa o mysqld). Então, se essa senha é trivial (ou pode ser encontrada por ferramentas automatizadas como medusa / hydra), você pode apenas SSH / telnet diretamente no servidor de banco de dados e brincar.

4

Se alguém obtém acesso root ao seu servidor, ele não precisará de nenhuma senha do MySQL. Mas se eles puderem executar aplicativos no seu servidor apenas como usuário não root e não web, uma senha forte do MySQL ainda poderá salvar seus dados. Mas sim, a maioria dos hacks vem da Web, o que significa que o hacker terá acesso à sua conta da Web e, portanto, pode extrair a senha do DB dos arquivos PHP.

Tudo isso assumindo que seu servidor MySQL não está aceitando conexões de qualquer lugar, exceto localhost. Se isso acontecer, você precisará de um PW forte.


4

Algo que parece ter sido esquecido aqui é: você confia em seus usuários na rede confiável?

Francamente, não sei, porque sei como eu era quando comecei na área de TI. Eu cutucava e cutucava em áreas às quais não tinha direito e, francamente, uma senha fraca do MySQL teria sido uma delícia para mim, pois eu teria uma chance de sorte e entrei e poderia ter causado estragos (por acidente, claro).

E se alguém usar a engenharia social para acessar sua rede confiável? Então o que você faz? Se eles estão em uma máquina atrás do firewall, eles blammo, sua segurança de firewall sólida é arruinada e eles entram diretamente na máquina.

Senhas fortes são muito simples de fazer e há muitas ferramentas de gerenciamento de senhas para facilitar a segurança das senhas, portanto não há desculpa para não fazê-lo.


O problema é que você não deve permitir conexões remotas no MySQL ou, se precisar, especifique localhost/ 127.0.0.1como o host. Dessa forma, ninguém pode acessar os bancos de dados externos (mesmo os da mesma rede).
precisa

2

Eh. Se seu servidor estiver com IP bloqueado e seu usuário estiver restrito a SELECT em um conjunto de tabelas em que você não se importa com as informações, isso não é muito importante.

Por outro lado, defino minhas senhas do MySQL pressionando o teclado por um minuto e copio e colo a tagarelice resultante em um arquivo protegido, o qual faço referência no meu código sempre que preciso fazer login. É assim que deve funcionar.

Por que facilitar? Se a senha estiver anexada a uma conta local limitada (como todas deveriam ser), por que você a está digitando? Caso contrário, deve ter uma senha cuja força seja relativa ao valor dos dados que você está protegendo.


2

As informações da conta / acesso do mySQLs são armazenadas em um arquivo separado dos bancos de dados reais. Assim, você pode simplesmente arrastar e soltar um arquivo diferente em seu lugar. Com o mySQL, se eles tiverem acesso de gravação à parte relevante do seu sistema de arquivos, o jogo acabou.


2

Como os requisitos mudam ...

Portanto, hoje, o servidor que está limitado a aceitar conexões MySQL apenas para a máquina local, poderá ser aberto amanhã para que uma ferramenta externa possa ser usada para gerenciar o banco de dados. A pessoa que está fazendo essa configuração pode não saber que há senhas extremamente fracas em uso.

Se o usuário for incomodado por precisar lembrar uma senha boa e forte (por exemplo: longa, aleatória), considere torná-la muito forte e depois armazená-la na .my.cnf- ainda mais conveniente do que ter uma senha fraca que ele precise digitar. Claro, também há implicações de segurança nisso, mas você precisará armazenar sua senha em algum lugar, por exemplo, os aplicativos que acessam, para que você já esteja protegendo cópias da senha.

Mas também leia o que @meagar disse.


1

A premissa de que eles já teriam acesso não é verdadeira. No entanto, se eles tiverem acesso e tiverem uma conta não privilegiada, ainda poderão facilmente invadir a senha do mysql.

Além disso, se o servidor for um servidor de produção ao vivo, você estará se anunciando na Internet. Isso significa que, em algum momento, alguém vai tentar um ataque de força bruta no servidor, incluindo mysql, tanto do porto e da conta de usuário.

se você se importa com os dados, as etapas básicas são ter uma senha raiz diferente para o banco de dados e para o usuário raiz. outros declararam que você também deve ter as permissões mais baixas possíveis para usuários e programas.

uma senha de 4 caracteres pode ser invadida em minutos, em um computador bastante barato.

Posso estar apenas repetindo o que os outros disseram, mas quanto mais munição você tiver para o seu gerente, melhor.


1

Muitas das razões do cenário da vida real foram abordadas por postagens antes, então adicionarei a "filosofia". Usar senhas fortes e tomar precauções para aumentar sua segurança é uma filosofia de trabalho. Uma maneira de pensar.

Agora, usando uma senha fraca, porque você é o mysql, roda apenas no 127.0.0.1 e apenas o usuário root tem acesso a ela, mostra que você não pensa no futuro. O que acontece se um dia você precisar conceder acesso via rede ao seu mysql. Você se lembrará de cobrir todos os itens de segurança que você deixou?

Um bom administrador coloca o pior cenário primeiro ao ponto da paranóia.


1

Depende de quais direitos esse usuário possui, você sempre deve bloquear as coisas em vários níveis. Também depende dos dados armazenados no seu banco de dados. Diga também que, hipoteticamente, existe uma vulnerabilidade no MySQL que lhes permite assumir o controle de todo o banco de dados, mas eles apenas precisavam fazer login em qualquer conta de usuário. Se sua senha fosse forte, isso tornaria a vulnerabilidade muda. Mas isso realmente depende apenas do seu caso específico.


Se o servidor MySQL estiver comprometido, o usuário e a senha serão inúteis. Os arquivos do banco de dados não são criptografados. Os usuários do MySQL para aplicativos devem ter localhost / 127.0.0.1 como host, para que não possam ser usados ​​remotamente ou desabilitar conexões remotas.
Chazy Chaz

1

É muito fácil se passar por outra pessoa no mysql. Dado um ID de usuário sem senha (a segurança mais fraca), basta usar mysql -u userid. Se tiver uma senha, é um pouco mais difícil, mas uma senha fraca facilita. Se o root não tiver senha, eu posso acessar o root como mysql -u root. Posso fazer qualquer coisa dentro do banco de dados que o root possa.

O uso de especificações de host na segurança também é uma boa idéia, especialmente se o acesso remoto estiver ou estiver disponível.

As senhas nos arquivos podem e devem ser um pouco protegidas por permissões. O acesso por raiz ou o proprietário do arquivo de senha é trivial. Se possível, a criptografia da senha no disco deve ser usada. Isso torna um pouco mais difícil de acessar, mas ainda vulnerável.


0

Bem, se você não está hospedando o banco de dados MySQL, mas está em um serviço de hospedagem e alguém obtém acesso ao endereço IP do seu servidor, o nome de usuário e a senha são sua última linha de defesa. É sempre bom ter um nome de usuário / senha seguros.


Meh! Se alguém obtiver acesso ao servidor, poderá ler o usuário / senha dos arquivos PHP ... Por favor, atualize ou exclua esta resposta.
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.