Melhores dicas para segurança MySQL e MariaDB
Publicados: 2022-01-08A segurança é uma grande preocupação para muitas pessoas. Este post lhe dará dez dicas sobre como alcançar a segurança do MySQL e do MariaDB para tornar seus bancos de dados seguros contra hackers. Essas dicas incluem: fazer backup de dados, usar senhas fortes e limitar os privilégios de acesso.
Melhores dicas para segurança MySQL e MariaDB
Aqui estão as melhores dicas para alcançar a segurança do MySQL e do MariaDB:
Remover usuários sem senha
Se você tiver usuários em seu banco de dados sem senhas, é melhor removê-los. Isso ajudará a reduzir as chances de alguém conseguir invadir seu banco de dados. Você pode usar a seguinte consulta para remover esses usuários:
Independentemente de os usuários terem ou não acesso apenas do host local, eles devem ser excluídos para impedir que quaisquer comandos negativos sejam executados. Além disso, senhas fracas são um risco de segurança em si.
Você deve sempre usar senhas fortes ao criar usuários em seus bancos de dados. Senhas fracas são mais fáceis de decifrar por hackers, o que pode levá-los a acessar seu banco de dados e causar estragos se eles conseguirem isso. O uso de um gerador de senha automatizado ajudará a criar senhas mais fortes para você que são mais difíceis de decifrar.
Você também deve considerar o uso de autenticação de dois fatores para seus usuários. Isso exigirá um código extra, geralmente enviado para o telefone, para fazer login no banco de dados. Isso torna muito mais difícil para alguém obter acesso se tiver apenas seu nome de usuário e senha.
Limitar o acesso remoto
Se você não precisa dar acesso remoto ao seu banco de dados, então é melhor limitá-lo. Isso ajudará a reduzir as chances de alguém conseguir invadir seu banco de dados de um local remoto.
Felizmente, as versões mais recentes do MySQL e do MariaDB limitam automaticamente o acesso remoto ao banco de dados, a menos que especificado de outra forma. No entanto, você ainda deve verificar suas configurações de segurança para garantir que esse seja o caso.
Também é uma boa ideia garantir que todos os usuários se conectem ao MySQL apenas pelos hosts exatos que você deseja. Por exemplo, isso pode ser feito usando ([email protected]).
Remova o banco de dados de teste
Quando você instala o MySQL ou MariaDB, um banco de dados de teste é criado automaticamente. Esse banco de dados contém dados que podem ser usados para invadir seus bancos de dados reais se cair em mãos erradas. É melhor remover esse banco de dados para que ele não possa ser usado para fins nefastos.
Esse banco de dados de teste também causa tensão desnecessária no servidor de banco de dados. Ele é usado apenas por testadores de banco de dados para testar consultas, para que possa ser removido sem afetar a funcionalidade de seus bancos de dados.
Ofuscar o acesso ao MySQL
Se você não quer que as pessoas saibam que seu banco de dados existe, você pode ofuscar seu acesso. Isso tornará mais difícil para alguém encontrar seu banco de dados e invadi-lo.
A ofuscação do acesso também torna mais difícil para qualquer pessoa que esteja monitorando seu tráfego determinar quais portas estão sendo usadas pelo MySQL ou MariaDB.
É bem conhecido que o MySQL roda na porta 3306, enquanto 'root' é o nome do superusuário. Você pode corrigir isso editando my.cnf e alterando a variável 'port'.
Proteja seus arquivos de configuração
Como em qualquer aplicativo, é importante proteger seus arquivos de configuração para MySQL ou MariaDB. Esses arquivos contêm informações confidenciais, como senhas e dados do usuário. Proteger esses arquivos ajudará a impedir que qualquer pessoa tenha acesso a essas informações se obtiver acesso aos seus servidores.
Segurança de rede
Também é importante proteger sua rede, bem como os próprios servidores. Isso ajudará a reduzir as chances de alguém invadir seu banco de dados de um local remoto e executar comandos nefastos nele.
A primeira coisa que você deve garantir é que o MySQL seja acessado apenas por meio de uma conexão local, não pela rede. Você pode fazer isso através de um soquete Unix. Insira 'skip-networking' em my.cnf. para parar todas as comunicações TCP/IP.

Você também pode usar seu firewall para bloquear o acesso ao MySQL de determinados endereços IP ou intervalos. Isso ajudará a reduzir as chances de alguém invadir seu banco de dados de um local remoto.
Usar plug-ins de auditoria
Você também pode usar plugins de auditoria para acompanhar o que está acontecendo em seu banco de dados. Isso ajudará você a determinar se alguém invadiu seu banco de dados ou se algo suspeito está acontecendo com ele que pode sugerir isso.
Existem muitas opções gratuitas e pagas para esses plugins disponíveis online hoje. O MySQL Enterprise Audit é uma boa opção se o MySQL Enterprise já estiver sendo usado em sua organização. O MariaDB também tem seu próprio plugin de auditoria.
Todos esses plugins fazem um ótimo trabalho ao monitorar seu banco de dados em busca de atividades suspeitas. Eles podem até enviar alertas se algo incomum for detectado, para que você não precise verificar os logs manualmente todas as vezes.
Desabilitar LOAD DATA INFILE LOCAL
Outra maneira de impedir que alguém tenha acesso ao seu banco de dados é desabilitando o recurso LOCAL no MySQL e no MariaDB. Este comando permite carregar arquivos de dados de um arquivo local, mas também representa um risco de segurança – especialmente se eles não estiverem criptografados. Para desabilitar esta função, defina local-infile=0 no my.cnf.
Privilégios de arquivo
Também é importante definir os privilégios de arquivo corretos para seus arquivos MySQL e MariaDB. Isso garantirá que apenas usuários autorizados possam acessá-los. Você pode fazer isso definindo as permissões apropriadas nesses arquivos.
Por exemplo, você pode definir o proprietário de todos os seus arquivos MySQL como 'mysql' e o grupo como 'mysql', com todos os outros usuários tendo acesso negado. Isso garantirá que apenas usuários com as permissões corretas poderão acessar seus arquivos MySQL.
SSL e criptografia de dados em trânsito
Se você estiver executando MySQL ou MariaDB com SSL habilitado, é importante ter os certificados necessários instalados em seu servidor. Se isso não for feito, qualquer pessoa poderá interceptar as informações enviadas entre seu banco de dados e seus clientes.
Você também deve criptografar todos os dados em trânsito para proteção adicional de quaisquer dados confidenciais transmitidos por redes públicas usando SSH.
Você também pode criptografar os dados que estão sendo transmitidos entre o servidor de banco de dados e outros dispositivos. Isso garantirá que qualquer pessoa que monitore o tráfego em sua rede não possa acessar nenhum dos dados que está transmitindo ou recebendo, mesmo que tenha conseguido invadir um desses sistemas.
SSL seria uma ótima maneira de conseguir isso para usuários do MySQL, pois já está embutido no protocolo. Os usuários do MariaDB podem usar o stunnel para obter um efeito semelhante.
Criptografia de dados em repouso
Por fim, você também deve considerar criptografar seus dados em repouso. Isso significa que os dados são criptografados mesmo quando não estão sendo transmitidos.
Isso pode ser feito usando uma ferramenta como MySQL Enterprise Encryption ou MariaDB Column Encryption.
Ambas as ferramentas oferecem uma ótima maneira de proteger seus dados de serem acessados se alguém conseguir invadir seu servidor de banco de dados. Eles também são muito fáceis de usar, então você não precisa ser um especialista em criptografia para aproveitar essas ferramentas.
Conclusão
Todas as opções mencionadas aqui ajudarão você a alcançar a segurança do MySQL e do MariaDB, mas nem todas são perfeitas para todas as situações. Você deve considerar suas necessidades específicas ao examiná-las para que possa escolher a melhor possível. No entanto, essas dicas devem lhe dar uma boa ideia sobre como escolher uma opção que funcione bem para você.
Espero que este artigo tenha lhe dado algumas boas ideias sobre como alcançar a segurança do MySQL e do MariaDB em sua organização para que ninguém possa invadir seus bancos de dados se eles conseguirem romper outras defesas.